On 2011-06-23, Magnus Rixtorp <[email protected]> wrote:
> pass out quick log on $ext_if inet from 192.168.0.0/24 nat-to $ext_if
> pass out quick log on $ext_if inet from 192.168.230.0/24 nat-to $ext_if
> pass out quick log on $ext_if inet from 192.168.231.0/24 nat-to $ext_if
> pass out quick log on $ext_if inet from 192.168.239.0/24 nat-to $ext_if
> pass out quick log on $ext_if inet from 192.168.240.0/24 nat-to $ext_if
> pass out quick log on $ext_if inet from 192.168.241.0/24 nat-to $ext_if
> pass out quick log on $ext_if inet from 192.168.242.0/24 nat-to $ext_if

This probably isn't your problem, but that seems quite a lot of networks
to be natting behind a single IP especially with the default port range
(50001:65535). if you've got a lot of active natted states, the
search for a free port could involve a bunch of state searches
(pick a random port, lookup state to see if it's used, then search
sequentially for a free port looking up state each time).

So if you do have a lot of states you might want to either add more IPs
or increase the port range available (e.g. pass...nat-to $ext_if \
port 20000:65535) and adjust the net.inet.ip.port* sysctls for
connections coming from the firewall itself (to make sure you have
some free ports which don't conflict with the range used by that
PF rule).

> Jun 15 09:41:21 pbxfw /bsd: pf: state key linking mismatch! dir=OUT, 
> if=re0, stored af=2, a0: 130.244.190.46:5060, a1: 192.168.230.101:5060, 
> proto=17, found af=2, a0: 192.168.230.101:5060, a1: 
> 187.170.255.239:5060, proto=17
> Jun 17 12:02:55 pbxfw /bsd: pf: state key linking mismatch! dir=OUT, 
> if=re0, stored af=2, a0: 130.244.190.46:5060, a1: 192.168.230.101:5060, 
> proto=17, found af=2, a0: 192.168.230.101:5060, a1: 
> 187.170.255.239:5060, proto=17
>
> Is the only error output ive found on the problem.
>
> So the problem, has to do with the ip 187.170.255.239,
> 239.255.170.187.in-addr.arpa domain name pointer 
> dsl-187-170-255-239-dyn.prod-infinitum.com.mx.
> Our system has no relation at all with this ip.
> But somehow our NAT translation at random intervals, decides to 
> redirects traffic to that ip instead of the intended destination.
> Sofar we have primarily noted the problem towards 130.244.190.46 and 
> 130.244.190.42, that are our providers sip gateways.
> Since the only thing beeing used on the connection is a PBx solution.
>
> A google on that perticular IP, gives a simular dmesg error output in 
> this post:
> http://www.mail-archive.com/[email protected]/msg95116.html
> But in his case, the system hangs, our system keeps on going.
> And instead interferes with the connection of phonecalls.
>
> since the problem was discovered ive set up pf to log the first packet 
> of every new state,
> and then that is tcpdump thru tcpdump -n -e -ttt -s 1600 -vvv -XX to a 
> ascii log using the
> http://www.openbsd.org/faq/pf/logging.html syslog method.
>
> Jun 22 15:40:06.212694 rule 26/(match) [uid 0, pid 20284] pass in on 
> bge0: 130.244.190.46.5060 > 212.247.80.66.5060: udp 442 (DF) [tos 0xb8] 
> (ttl 56, id 0, len 470)
>    0000: 45b8 01d6 0000 4000 3811 da02 82f4 be2e 
> E\M-8.\[email protected].\M-Z..\M-t\M->.
>    0010: d4f7 5042 13c4 13c4 01c2 f6b9 4259 4520 
> \M-T\M-wPB.\M-D.\M-D.\M-B\M-v\M-9BYE
>    0020: 7369 703a 3835 3933 4032 3132 2e32 3437 sip:[email protected]
>    0030: 2e38 302e 3636 2053 4950 2f32            .80.66 SIP/2
>
> Jun 22 15:40:06.307515 rule 60/(match) [uid 0, pid 20284] pass in on 
> re0: 192.168.230.101.5060 > 187.170.255.239.5060: udp 550 (ttl 64, id 
> 33961, len 578)
>    0000: 4500 0242 84a9 0000 4011 9159 c0a8 e665 
> E..B.\M-)[email protected]\M-@\M-(\M-fe
>    0010: bbaa ffef 13c4 13c4 022e 9dc3 5349 502f 
> \M-;\M-*\M^?\M-o.\M-D.\M-D...\M-CSIP/
>    0020: 322e 3020 3230 3020 4f4b 0d0a 5669 613a  2.0 200 OK..Via:
>    0030: 2053 4950 2f32 2e30 2f55 4450             SIP/2.0/UDP

Considering this snippet alone, there's no indication of a problem
with PF; it looks to me like 192.168.230.101 is itself sending
packets to 187.170.255.239, maybe your PBX software is confused.

I would look at packets on the inbound/outbound interfaces rather
than pflog and see what addresses show up there. ("tcpdump -Xs1500
-nire0 port 5060" or something, and same for bge0).

The xxx.255.239 makes me wonder if the PBX is trying to do some
multicast thing and getting the byte-order wrong (239.255.xxx would
be a multicast address).

> Jun 22 15:40:06.307526 rule 0/(match) [uid 0, pid 20284] pass out on 
> bge0: 192.168.230.101.5060 > 187.170.255.239.5060: udp 550 (ttl 63, id 
> 33961, len 578, bad cksum 9159! differs by 100)
>    0000: 4500 0242 84a9 0000 3f11 9159 c0a8 e665 
> E..B.\M-)..?..Y\M-@\M-(\M-fe
>    0010: bbaa ffef 13c4 13c4 022e 9dc3 5349 502f 
> \M-;\M-*\M^?\M-o.\M-D.\M-D...\M-CSIP/
>    0020: 322e 3020 3230 3020 4f4b 0d0a 5669 613a  2.0 200 OK..Via:
>    0030: 2053 4950 2f32 2e30 2f55 4450             SIP/2.0/UDP
>
> and on a side note, if anyone has a suggestion how to actually get the 
> complete package logged, and not just the first snap, it would be nice,
> openbsd tcpdump seems to not support -s 0 as snaplen, to get the whole 
> thing.

see tcpdump(8) about -s (or ngrep has fairly clear formatting for
reading inside sip packets, "ngrep -d re0 -W byline port 5060",
though less information from the IP/TCP header is displayed).

> anyway, that log snippet, is 130.244.190.46 asking us to setup a sip 
> connection with them on 5060,
> but our respond to that ip, goes to 187.170.255.239. and the connection 
> fails.
>
> another side note would be about the rampant amount of bad ckdsum on udp 
> traffic, if anyone would care to chime in about that.
> Since about 98% of all udp packets get a bad cksum.

see tcpdump(8) about IP Checksum Offload.


>
> but my main problem and concern is this 187.170.255.239, and why they 
> should get my phonecalls.
>
> Regards
>
> Magnus

Reply via email to