Sorry about the delay in replying, i was travelling ...

On Fri, May 24, 2024 at 06:04:25PM +0200, Peter N. M. Hansteen wrote:
> ...
> > May 23 10:32:13.267374 rule 1/(match) pass in on em0: 192.168.178.166.56334 
> > > 192.168.178.11.54321: udp 7
> So this last one never leaves, right?
Right.

> what does the gateway's routing table say about how to reach the destination 
> network?
Good question. Does it matter what the routing table contains, when I am
explicitly specifying where to send a packet via a pf rule?

In any case, here it is:
mjoelnir:/etc 7.06 15:29:04 # netstat -rnf inet
Routing tables
Internet:
Destination        Gateway            Flags   Refs      Use   Mtu  Prio Iface
default            192.168.178.254    UGS       11    12713     -     8 em0
127/8              127.0.0.1          UGRS       0        0 32768     8 lo0
127.0.0.1          127.0.0.1          UHhl       1        2 32768     1 lo0
192.168.168/24     192.168.168.1      UCn        0        0     -     4 ure0
192.168.168.1      14:eb:b6:85:09:08  UHLl       0        0     -     1 ure0
192.168.168.255    192.168.168.1      UHb        0        0     -     1 ure0
192.168.178/24     192.168.178.11     UCn        4     2630     -     4 em0
192.168.178.11     94:c6:91:aa:16:67  UHLl       0     8094     -     1 em0
192.168.178.12     00:d8:61:4f:0d:9a  UHLc       0     2588     -     3 em0
192.168.178.13     50:7b:9d:ee:e0:b9  UHLc       1     3077     -     3 em0
192.168.178.250    fc:f5:28:ed:05:e5  UHLc       0       90     -     3 em0
192.168.178.254    44:4e:6d:77:42:68  UHLch      2    25477     -     3 em0
192.168.178.255    192.168.178.11     UHb        0       15     -     1 em0

> also relevant, what is the configuration of the interfaces involved?
# ifconfig em0
em0: 
flags=a48843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,AUTOCONF6TEMP,AUTOCONF6,AUTOCONF4>
 mtu 1492
        lladdr 94:c6:91:aa:16:67
        index 1 priority 0 llprio 3
        groups: egress
        media: Ethernet autoselect (1000baseT full-duplex)
        status: active
        inet6 fe80::96c6:91ff:feaa:1667%em0 prefixlen 64 scopeid 0x1
        inet 192.168.178.11 netmask 0xffffff00 broadcast 192.168.178.255

# ifconfig ure0
ure0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        lladdr 14:eb:b6:85:09:08
        description: Desc: Testing pf
        index 5 priority 0 llprio 3
        media: Ethernet autoselect (1000baseT full-duplex,rxpause,txpause)
        status: active
        inet 192.168.168.1 netmask 0xffffff00 broadcast 192.168.168.255

Also this was well spotted by Le Zoff:
> Why setting "flags S/SA" on a rule meant for UDP packets?
I guess pf itself added the flags, presumably because I had not
explicitly specified "udp" in my second rule. So here is the same test,
this time with "proto udp":

mjoelnir:/etc 7.06 15:29:19 # cat pf.conf_forwarding_minimal
set skip on lo0
set block-policy return
set debug warning

block log all   # Begin by blocking everything

pass in  log on em0 proto udp from 192.168.178.0/24 tag UDP
pass out log on ure0 proto udp tagged UDP

mjoelnir:/etc 7.06 15:29:27 # pfctl -nf pf.conf_forwarding_minimal
mjoelnir:/etc 7.06 15:29:38 # pfctl -f pf.conf_forwarding_minimal
mjoelnir:/etc 7.06 15:29:43 # pfctl -vvs rules | grep @
@0 block return log all
@1 pass in log on em0 inet proto udp from 192.168.178.0/24 to any tag UDP
@2 pass out log on ure0 proto udp all tagged UDP

So, no TCP flags any more, but still no packets out on ure0. Tcpdump
shows only this udp test packet coming in on em0:
tcpdump -n -e -ttt -i pflog0
...
Jun 07 15:52:36.462672 rule 1/(match) pass in on em0: 192.168.178.13.54128 > 
192.168.178.11.12345: udp 19
...


Reply via email to