On 6/29/2011 1:22 PM, Fabian Keil wrote:
"Bjoern A. Zeeb"<[email protected]>  wrote:

Begin forwarded message:

From: "Bjoern A. Zeeb"<[email protected]>
Date: June 28, 2011 11:57:25 AM GMT+00:00
To: [email protected], [email protected], 
[email protected]
Subject: svn commit: r223637 - in head: . contrib/pf/authpf 
contrib/pf/ftp-proxy contrib/pf/man contrib/pf/pfctl contrib/pf/pflogd 
sbin/pflogd sys/conf sys/contrib/altq/altq sys/contrib/pf/net sys/modules s...

Author: bz
Date: Tue Jun 28 11:57:25 2011
New Revision: 223637
URL: http://svn.freebsd.org/changeset/base/223637

Log:
  Update packet filter (pf) code to OpenBSD 4.5.
Thanks!

In short; please test!
I didn't experience any real problems yet, but running
Privoxy-Regression-Test, I reproducible got this log message
for one of the tests:

Jun 29 18:26:19 r500 kernel: pf: state key linking mismatch! dir=OUT, if=lo1, 
stored af=2, a0: 10.0.0.1:50722, a1: 10.0.0.1:12345, proto=6, found af=2, a0: 
10.0.0.1:50722, a1: 10.0.0.1:12345, proto=6.

This didn't happen with the previous pf version.

I tracked it down to a test that does a connect()
to a local unbound port.

It's also reproducible for every address on the system with:

ifconfig -a | awk '/inet / {system("telnet "$2" 12345")}'

Jun 29 18:30:49 r500 kernel: pf: state key linking mismatch! dir=OUT, if=lo0, 
stored af=2, a0: 192.168.5.49:61512, a1: 192.168.5.49:12345, proto=6, found 
af=2, a0: 192.168.5.49:61512, a1: 192.168.5.49:12345, proto=6.
Jun 29 18:30:49 r500 kernel: pf: state key linking mismatch! dir=OUT, if=lo0, 
stored af=2, a0: 127.0.0.1:44717, a1: 127.0.0.1:12345, proto=6, found af=2, a0: 
127.0.0.1:44717, a1: 127.0.0.1:12345, proto=6.
Jun 29 18:30:49 r500 kernel: pf: state key linking mismatch! dir=OUT, if=lo1, 
stored af=2, a0: 192.168.6.100:31600, a1: 192.168.6.100:12345, proto=6, found 
af=2, a0: 192.168.6.100:31600, a1: 192.168.6.100:12345, proto=6.
Jun 29 18:30:49 r500 kernel: pf: state key linking mismatch! dir=OUT, if=lo1, 
stored af=2, a0: 10.0.0.1:20126, a1: 10.0.0.1:12345, proto=6, found af=2, a0: 
10.0.0.1:20126, a1: 10.0.0.1:12345, proto=6.
Jun 29 18:30:49 r500 kernel: pf: state key linking mismatch! dir=OUT, if=lo1, 
stored af=2, a0: 10.0.0.1:10895, a1: 10.0.0.2:12345, proto=6, found af=2, a0: 
10.0.0.1:10895, a1: 10.0.0.2:12345, proto=6.
Jun 29 18:30:49 r500 kernel: pf: state key linking mismatch! dir=OUT, if=lo1, 
stored af=2, a0: 10.0.0.1:25081, a1: 10.0.0.3:12345, proto=6, found af=2, a0: 
10.0.0.1:25081, a1: 10.0.0.3:12345, proto=6.
Jun 29 18:30:49 r500 kernel: pf: state key linking mismatch! dir=OUT, if=lo0, 
stored af=2, a0: 192.168.0.106:32448, a1: 192.168.0.106:12345, proto=6, found 
af=2, a0: 192.168.0.106:32448, a1: 192.168.0.106:12345, proto=6.

12345 can be replaced with any unbound port it seems.

I'm additionally occasionally seeing the message for successfully
established connections (both internal and outgoing) but don't
know how to reproduce it.

Fabian

I also get the state key mismatch problem, it seems that pf is leaking states (I assume this is the same problem). I also see a strange NAT issue, internal IPs leak somewhat on the outside int. Eventually the system runs out of state entry slots and connectivity is lost. This is on a -current kernel from ~Jun 30, after the 4.5 import.

tun0: flags=8151<UP,POINTOPOINT,RUNNING,PROMISC,MULTICAST> metric 0 mtu 1492
        options=80000<LINKSTATE>
        inet6 fe80::290:bff:fe1a:a674%tun0 prefixlen 64 scopeid 0xf
        inet6 2607:f0b0:0:1:290:bff:fe1a:a674 prefixlen 64 autoconf
        inet 216.106.102.33 --> 209.87.255.1 netmask 0xffffffff
        nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
        Opened by PID 3446

em0 is on the 192.168.3/24 network

<root.wheel@pyr7535> [/var/preserve/root] # tcpdump -i tun0 net 192.168.3.0 mask 255.255.255.0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type NULL (BSD loopback), capture size 65535 bytes
11:22:37.030244 IP 192.168.3.99 > 190.252.34.186: ICMP pandora.userid.org udp port 16881 unreachable, length 134 11:24:03.137016 IP 192.168.3.99 > 190.252.34.186: ICMP pandora.userid.org udp port 16881 unreachable, length 98

Relevant pf.conf lines:
int_if = "em0"
ext_if = "tun0"
# NAT
nat on $ext_if from $int_if:network to any -> ($ext_if)

Here is the info about states leaking:

State Table                          Total             Rate
  current entries                   108488

<root.wheel@pyr7535> [/var/preserve/root] # pfctl -F states
1003 states cleared
<root.wheel@pyr7535> [/var/preserve/root] # pfctl -s info
Status: Enabled for 0 days 02:21:18           Debug: Urgent

Interface Stats for tun0              IPv4             IPv6
  Bytes In                      1252327614          1907903
  Bytes Out                      373783492          1429003
  Packets In
    Passed                         1341017            12360
    Blocked                          45437              831
  Packets Out
    Passed                         1186359            13441
    Blocked                           1641             3724

State Table                          Total             Rate
  current entries                   125127

States aren't getting cleared properly. Below is a sample of the state key linking mismatch problem:

Jul 2 11:28:17 pyr7535 kernel: pf: state key linking mismatch! dir=OUT, if=em0, stored af=2, a0:
Jul  2 11:28:17 pyr7535 kernel: 192.168.3.238:55590, a1: 216.106.102.33
Jul  2 11:28:18 pyr7535 kernel: :18825, proto=6
Jul  2 11:28:18 pyr7535 kernel: , found af=2, a0: 192.168.3.238
Jul  2 11:28:18 pyr7535 kernel: :55590, a1:
Jul  2 11:28:18 pyr7535 kernel: 216.106.102.33:18825
Jul  2 11:28:18 pyr7535 kernel: , proto=6.
Jul 2 11:28:18 pyr7535 kernel: pf: state key linking mismatch! dir=OUT, if=em0, stored af=2, a0: 192.168.3.238:55590, a1: 216.106.102.33:18825, proto=6, found af=2, a0: 192.168.3.238:55590, a1: 216.106.102.33:18825, proto=6. Jul 2 11:28:19 pyr7535 kernel: pf: state key linking mismatch! dir=OUT, if=em0, stored af=2, a0: 192.168.3.238
Jul  2 11:28:19 pyr7535 kernel: :55590, a1:
Jul  2 11:28:19 pyr7535 kernel: 216.106.102.33:18825
Jul  2 11:28:19 pyr7535 kernel: , proto=6, found af=2, a0:
Jul  2 11:28:19 pyr7535 kernel: 192.168.3.238:55590
Jul  2 11:28:19 pyr7535 kernel: , a1: 216.106.102.33
Jul  2 11:28:19 pyr7535 kernel: :18825, proto=6.



_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-pf
To unsubscribe, send any mail to "[email protected]"

Reply via email to