Skip to contentSkip to conversation

IPTables NAT: Strange behaviour: bug?

DISCUSSION Pedro Gonçalves 2 participants 2 messages Apr 24, 2007

lore
Share & tools
lore
#0 lore raw

Hi everyone

I'm using IPTables to provide me a Port Restricted Cone NAT. According to STUN RFC, in a Port Restricted Cone NAT
"all requests from the same internal IP address and port are mapped to the same IP address and port"
(using all policies set to ACCEPT and the following rule:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE)

My scenario is the following:
-Client behind NAT: IP = 175.16.0.1
-NAT public addr = 192.168.2.159

This client will talk with two different destination addresses:
-192.168.2.164 (Stun server)
-192.168.2.173 (Other NAT's public addr)

In attachment you can find an capture made at the machine with IPTables, in which you can see:
-packets 1 and 2: Packet going from the client behind NAT (175.16.0.1:10000) to Stun Server (192.168.2.164:3478) -> Client's public address is 192.168.2.159:10000
-packets 21 e 22: Packet going from the client behind NAT (175.16.0.1:10000) to the other NAT's public addr (192.168.2.173:20000)-> Client's public address is 192.168.2.159:1029

Why is the client getting different NAT mappings?
Why is the mapping changing from
175.16.0.1:10000 -> 192.168.2.159:10000
to
175.16.0.1:10000 -> 192.168.2.159:1029
?

Best Regards
Pedro

#1 lore raw

Hello,

Quoted 11 lines · Pedro Gonçalves

In attachment you can find an capture made at the machine with IPTables, in which you can see:
-packets 1 and 2: Packet going from the client behind NAT (175.16.0.1:10000) to Stun Server (192.168.2.164:3478) -> Client's public address is 192.168.2.159:10000
-packets 21 e 22: Packet going from the client behind NAT (175.16.0.1:10000) to the other NAT's public addr (192.168.2.173:20000)-> Client's public address is 192.168.2.159:1029

Why is the client getting different NAT mappings?

The NAT mechanism may change the source port in order to avoid a clash - or at least what it considers a clash - with an existing mapping (same external source and destination addresses and ports). I guess that this existing mapping was created by packet #17 received from the other NAT device : 192.168.2.173.20000 -> 192.168.2.159.10000.

A possible workaround may be to DROP or REJECT this incoming packet in the INPUT table, so the associated connection tracking and NAT mapping are deleted.