Hello, I am confused about how Neighbor Discovery is not working when the firewall is on. If I have “pf” disabled then the doing an ndp -an will result is an complete discovery;
ndp With firewall disabled (pfctl -d) Neighbor Linklayer Address Netif Expire S Flags 2001:8004:1420:194b:c4a9:f2c3:3403:36ed 00:e0:67:15:e7:82 em0 permanent R l fe80::2e0:67ff:fe15:e782%em0 00:e0:67:15:e7:82 em0 permanent R l fe80::803a:feff:fe38:a754%em0 82:63:9c:36:23:a2 em0 37s R R fe80::e98a:6028:3c19:5fc%em0 82:63:9c:36:23:a2 em0 32s R R fe80::2e0:67ff:fe15:e783%em1 00:e0:67:15:e7:83 em1 permanent R l fe80::1c32:1698:96d9:35fb%em1 38:f9:d3:e0:fa:db em1 20h53m3s S ndp with firewall enabled (pfctl -e), the discovery is incomplete; Neighbor Linklayer Address Netif Expire S Flags 2001:8004:1420:194b:c4a9:f2c3:3403:36ed 00:e0:67:15:e7:82 em0 permanent R l fe80::2e0:67ff:fe15:e782%em0 00:e0:67:15:e7:82 em0 permanent R l fe80::803a:feff:fe38:a754%em0 82:63:9c:36:23:a2 em0 23h40m37s S R fe80::e98a:6028:3c19:5fc%em0 (incomplete) em0 expired I R fe80::2e0:67ff:fe15:e783%em1 00:e0:67:15:e7:83 em1 permanent R l fe80::1c32:1698:96d9:35fb%em1 38:f9:d3:e0:fa:db em1 20h55m18s S Interface em0, I am using dhcpcd to get the Ipv6 address. em0: flags=808843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,AUTOCONF4> mtu 1500 lladdr 00:e0:67:15:e7:82 index 1 priority 0 llprio 3 groups: egress media: Ethernet autoselect (1000baseT full-duplex,master,rxpause,txpause) status: active inet 10.121.101.56 netmask 0xffffff00 broadcast 10.121.101.255 inet6 fe80::2e0:67ff:fe15:e782%em0 prefixlen 64 scopeid 0x1 inet6 2001:8004:1420:194b:c4a9:f2c3:3403:36ed prefixlen 64 autoconf I cannot see anything blocking “ndp” from pflog so I am confused as what is going on here. I have attached my firewall configuration; # Macros ext_if = "em0" int_if = "em1" icmp_types = "{echoreq unreach}" icmp6_types = "{echoreq unreach toobig routersol routeradv neighbrsol neighbradv}" # Tables table <martians> { 0.0.0.0/8 10.0.0.0/8 127.0.0.0/8 \ 169.254.0.0/16 172.16.0.0/12 192.0.0.0/24 \ 192.0.2.0/24 192.88.99.0/24 192.168.0.0/16 \ 198.18.0.0/15 198.51.100.0/24 203.0.113.0/24 \ 224.0.0.0/4 240.0.0.0/4 255.255.255.255/32 } # Options set skip on lo set block-policy drop set loginterface egress set reassemble yes # Scrub rule match in all scrub (no-df random-id max-mss 1440) # NAT Rule match out on egress inet from !(egress:network) to any nat-to (egress:0) # Block Unicast reverse path Forwarding block in quick log from urpf-failed # Block martians rule block in quick on egress from <martians> to any # block return out quick on egress from any to <martians> # Default block all block log all # Allow ipv6 NDP pass out quick on egress inet6 proto icmp6 from fe80::/10 to any icmp6-type {neighbrsol} keep state pass out quick on egress inet6 proto icmp6 from fe80::/10 to any icmp6-type {neighbradv} keep state # Allow icmp6 pass in quick on egress inet6 proto icmp6 all icmp6-type $icmp6_types keep state label "ICMP6-TRAFFIC" # Allow dhcp6 traffic pass in quick on egress inet6 proto udp from fe80::/10 port dhcpv6-server to fe80::/10 port dhcpv6-client # Pass all other traffic out pass out quick # Pass in all traffic on internal network pass in on { $int_if } At present I am interested in getting a working Ipv6 on interface em0 only with the firewall enabled. Any ideas would be appreciated. Many thanks Antonino Sidoti