Hi! I have PF rules redirecting packets to an IP on one interface (rdomain 1) to the IP of another interface (rdomain 0):
pass in log on rdomain 1 inet proto tcp to $ipv4b port 80 rdr-to $ipv4a port 8080 rtable 0 pass in log on rdomain 1 inet6 proto tcp to $ipv6b port 80 rdr-to $ipv6a port 8080 rtable 0 These rules work for IPv4 but initially not for IPv6. (That problem is now solved.) I was trying to figure out why and started using tcpdump(8). em0 has the IPs: ipv4a and ipv6a. em1 is in rdomain 1 and has the IPs: ipv4b and ipv6b. Both are connected to the same LAN. httpd(8) is configured to listen on ipv4a:80, ipv6a:80 with one (virtual) server and on ipv4a:8080, ipv6a:8080 with another, each serving a very simple index.html file that shows which server is responding. To debug I started: # tcpdump -n -e -ttt -l -i em0 'port 80 or 8080‘ # tcpdump -n -e -ttt -l -i em1 'port 80 or 8080‘ (Both in separate terminal windows at the same time.) Now from a second machine I access the web server: $ curl --url 'http://<ipv4a>‘ Works fine, I see traffic in the tcpdump(8) for em0. $ curl --url 'http://<ipv4b>‘ Works fine, I see traffic in the tcpdump(8) for em1 but not for em0. $ curl --url 'http://[<ipv6a>]‘ Works fine, I see traffic in the tcpdump(8) for em0. $ curl --url 'http://[<ipv6b>]‘ Timeout! I see traffic in the tcpdump(8) for em1 but not for em0. This was the one I was ultimately trying to debug but as the trace on the IPv4 version doesn’t work as expected I was momentarily at a loss. I have since solved the actual problem by setting: # sysctl net.inet6.ip6.forwarding=1 But I still don’t see the redirected traffic in the tcpdump(8) for em0. I don’t understand the second and fourth results. Why does the tcpdump(8) for em0 not show the redirected packets? I am likely missing something obvious here. How can I capture the redirected packets? Thanks! Mike