Hello,

I am trying out the reply-to option in pf to force icmp echo replies
back on the same interface (vlan10) where they came in.

The problem I am seeing is that the destination mac address of the
replies are set to ethernet next-hop of the default route (vlan11).

Am I using this correctly?

My ruleset:
include '/etc/pf.d/tables.pf'
set ruleset-optimization none
set limit states 2000000
set state-policy floating
set block-policy return
set state-defaults pflow
pass in quick on vlan10 proto icmp reply-to vlan10
block log (all, to pflog0) # Default block
pass quick proto carp keep state (no-sync)
block out quick on vlan10 from any to <rfc1918_networks>
pass out on vlan10 label vlan10 # egress ISP1
match out on vlan10 from <rfc1918_networks> to any nat-to carp10
block out quick on vlan11 from any to <rfc1918_networks>
pass out on vlan11 label vlan11
match out on vlan11 from <rfc1918_networks> to any nat-to carp11 # NAT
via carp11
pass out quick on vlan10 proto icmp from vlan11 route-to (vlan11 <vlan11_gw>)
pass out quick on vlan11 proto icmp from vlan10 route-to (vlan10 <vlan10_gw>)
pass quick proto icmp

Uname -a:
# uname -a
OpenBSD fw2 6.6 GENERIC.MP#3 amd64

tcpdump:
# tcpdump -eni vlan10 icmp
tcpdump: listening on vlan10, link-type EN10MB
13:15:14.962096 00:24:c4:c0:b6:c0 3c:ec:ef:40:33:fc 0800 98: 1.1.1.1 >
4.3.2.2: icmp: echo request
13:15:14.962113 3c:ec:ef:40:33:fc 38:90:a5:73:c2:3f 0800 98: 4.3.2.2 >
1.1.1.1: icmp: echo reply

arp:
# arp -an | grep 00:24:c4:c0:b6:c0
4.3.2.1                       00:24:c4:c0:b6:c0  vlan10 19m25s
# arp -an | grep 38:90:a5:73:c2:3f
1.2.3.4                        38:90:a5:73:c2:3f  vlan11 20m0s

Reply via email to