[Bug 163208] [pf] PF state key linking mismatch

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Wed Dec 24 16:43:54 UTC 2014


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=163208

Alexey Pereklad <mybox at at-hacker.in> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mybox at at-hacker.in

--- Comment #18 from Alexey Pereklad <mybox at at-hacker.in> ---
Got the same problem with PPTP through NAT. When some user try to connect to
some external server with PPTP, we see in log file (replaced some digits in IP
with "OUR.NAT" string):

==================================================================
Dec 24 18:19:21 vpn1-spb kernel: pf: state key linking mismatch! dir=OUT,
if=vlan434, stored af=2, a0: 10.12.1.0:57782, a1: 78.29.24.10:1723, proto=6,
found af=2, a0: 78.29.24.10:1723, a1: OUR.NAT.185.52:57782, proto=6.
Dec 24 18:19:21 vpn1-spb kernel: pf: state key linking mismatch! dir=OUT,
if=vlan434, stored af=2, a0: 10.12.1.0:57782, a1: 78.29.24.10:1723, proto=6,
found af=2, a0: 78.29.24.10:1723, a1: OUR.NAT.185.52:57782, proto=6.
Dec 24 18:19:21 vpn1-spb kernel: pf: state key linking mismatch! dir=OUT,
if=ng264, stored af=2, a0: 78.29.24.10:1723, a1: OUR.NAT.185.52:57782, proto=6,
found af=2, a0: 10.12.1.0:57782, a1: 78.29.24.10:1723, proto=6.
Dec 24 18:19:21 vpn1-spb kernel: pf: state key linking mismatch! dir=OUT,
if=ng264, stored af=2, a0: 78.29.24.10:1723, a1: OUR.NAT.185.52:57782, proto=6,
found af=2, a0: 10.12.1.0:57782, a1: 78.29.24.10:1723, proto=6.
Dec 24 18:20:24 vpn1-spb kernel: pf: state key linking mismatch! dir=OUT,
if=ng264, stored af=2, a0: 78.29.24.10:1723, a1: OUR.NAT.185.52:57939, proto=6,
found af=2, a0: 10.12.1.0:57939, a1: 78.29.24.10:1723, proto=6.
Dec 24 18:20:24 vpn1-spb kernel: pf: state key linking mismatch! dir=OUT,
if=vlan434, stored af=2, a0: 10.12.1.0:57939, a1: 78.29.24.10:1723, proto=6,
found af=2, a0: 78.29.24.10:1723, a1: OUR.NAT.185.52:57939, proto=6.
Dec 24 18:20:24 vpn1-spb kernel: pf: state key linking mismatch! dir=OUT,
if=vlan434, stored af=2, a0: 10.12.1.0:57939, a1: 78.29.24.10:1723, proto=6,
found af=2, a0: 78.29.24.10:1723, a1: OUR.NAT.185.52:57939, proto=6.
Dec 24 18:20:25 vpn1-spb kernel: pf: state key linking mismatch! dir=OUT,
if=ng264, stored af=2, a0: 78.29.24.10:1723, a1: OUR.NAT.185.52:57939, proto=6,
found af=2, a0: 10.12.1.0:57939, a1: 78.29.24.10:1723, proto=6.
Dec 24 18:20:25 vpn1-spb kernel: pf: state key linking mismatch! dir=OUT,
if=ng264, stored af=2, a0: 78.29.24.10:1723, a1: OUR.NAT.185.52:57939, proto=6,
found af=2, a0: 10.12.1.0:57939, a1: 78.29.24.10:1723, proto=6.
==================================================================

Some info about our configuration:
# uname -a
FreeBSD bras.office.ru 9.3-RELEASE-p6 FreeBSD 9.3-RELEASE-p6 #0 r275674: Wed
Dec 10 17:25:20 MSK 2014     root at bras.office.ru:/usr/obj/usr/src/sys/GENERIC 
amd64


pf config:
==================================================================
dolg_server="192.168.177.135"
nat_ip="OUR.NAT.185.52"

table <clients> persist { !10.12.0.1, 10.12/16, 10.13/16 }
table <spam> persist

set limit states 200000
set block-policy drop

nat on vlan434 from <clients> to any -> $nat_ip
no nat on vlan434 proto gre all
no nat on vlan434 proto tcp from <clients> to any port 1723
no nat on vlan434 proto tcp from any port 1723 to any

pass in all
pass out all

pass in inet proto tcp from <clients> to any port 25 keep state (
max-src-conn-rate 5/30, overload <spam> flush global )
block in inet proto tcp from <spam> to any port 25

block in quick inet from <clients> to <clients>
==================================================================


As pf can't do NAT for PPTP, I disabled NAT for PPTP and tcp port 1723
connections in pf.conf. We use ipfw to NAT PPTP connections:
==================================================================
#!/bin/sh

cmd="/sbin/ipfw -q"

nat_ip="OUR.NAT.185.52"
nat_if="vlan434"

clients="10.12.0.0/16"

${cmd} -f flush

${cmd} add nat 1 log gre from any to any via ${nat_if}
${cmd} add nat 1 log tcp from ${clients} to any dst-port 1723 out via ${nat_if}
${cmd} add nat 1 log tcp from any 1723 to any in via ${nat_if}

${cmd} nat 1 config ip ${nat_ip} unreg_only same_ports

${cmd} add 65534 allow all from any to any
==================================================================

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-pf mailing list