Re: Query regarding NAPT using iptables

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



(sorry for top posting. Gmail mobile client)

I'm not really sure how netfilter did it, but my guess is based on the
'Identifier' or 'IP Header' field *inside* the ICMP packet. See the
following diagrams:

http://technet.microsoft.com/en-us/library/Cc750854.tcpip11_big(l=en-us).gif

so, there's no need for pure 1:1 NAT here, as each ICMP packet packs
enough 'uniqueness' to allow proper flow matching, thus enabling IP
multiplexing.

This is also how netfilter is able to do -m state --state RELATED
match against ICMP packets *related* to a flow (e.g., time-exceeded
messages or destination-unreachable messages -- two important messages
that should not be blocked to ensure proper error handling by the side
causing the error).

Rgds,


On 2011-03-11, ajay seshadri <seshajay@xxxxxxxxx> wrote:
> Thanks a lot for the information.
>
> So in case of protocols like ICMP without ports, we specify -j SNAT
> without ports. Wouldn't this mean allocating separate addresses for
> such mappings? (isn't this similar to plain NATing ? or am I missing
> something here?)
>
> Thanks,
> Ajay
>
>
>
> On Wed, Mar 9, 2011 at 6:19 PM, Pandu Poluan <pandu@xxxxxxxxxxx> wrote:
>> (sorry for top posting; Gmail mobile client)
>>
>> I'll try to answer your questions.
>>
>> 1. For an example: ICMP does not have ports. You should split the rule:
>>
>> -p tcp -g nr_napt
>> -p udp -g nr_napt
>> -p sctp -g nr_napt
>> -p tcp -g nr_napt
>> -j SNAT (without ports)
>> -A nr_napt -j SNAT (with ports)
>>
>> 2. Yes, with helper. Prior to the SNAT rules above, place a rule with
>> helper match:
>>
>> -m helper --helper ftp
>>
>> 3. Netfilter will perform a defragmentation in this case.
>>
>> 4. One-to-one will happen only if (in the case of SNAT) you use a -s
>> match. If (like in your example) you use a -d match, it will still be
>> NAPT, and port multiplexing will still happen.
>>
>> Others, feel free to CMIIW.
>>
>> Rgds,
>>
>>
>> On 2011-03-09, ajay seshadri <seshajay@xxxxxxxxx> wrote:
>>> Hi all,
>>>
>>> I was trying to write some iptables rules to perform NAPT. I had the
>>> following doubts:
>>>
>>> 1. When I specified the following rule:
>>>
>>>>sudo iptables -t nat -A POSTROUTING -d 10.20.3.81 -j SNAT --to
>>>> 10.19.11.1:1-500 I got the following error:-Â iptables v1.4.4: Need TCP,
>>>> UDP, SCTP or DCCP with port specification.
>>>
>>> Is there anyway to specify a single rule to cover all the protocols? I
>>> got the same error when i specified '-p 0'. Are there any protocols
>>> that don't work with NAPT?
>>>
>>> 2. Would NAPT work in case of application layer protocols like FTP,
>>> where the application code requires port numbers? I came across ALG
>>> and conntrack modules. I don't really have clarity in this regard to
>>> know if there are any application layer protocols that would fail to
>>> work with NAPT. If yes, is there anyway to get around this?
>>>
>>> 3. If I am not mistaken the NAT RFC states that NAPT won't work if the
>>> packets are already segmented as the segments don't contain port
>>> information. Is there anyway to get around this? Also, are there any
>>> such scenarios where NAPT would fail?
>>>
>>> 4. If NAT is done instead of NAPT, by specifying a one - to - one
>>> mapping for each flow using iptables, does that guarantee that port
>>> multiplexing will not be used? Is NATing more stable that NAPT?
>>>
>>>
>>> Thanks,
>>> Ajay
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe netfilter" in
>>> the body of a message to majordomo@xxxxxxxxxxxxxxx
>>> More majordomo info at Âhttp://vger.kernel.org/majordomo-info.html
>>>
>>
>>
>> --
>> --
>> Pandu E Poluan - IT Optimizer
>> My website: http://pandu.poluan.info/
>>
>


-- 
--
Pandu E Poluan - IT Optimizer
My website: http://pandu.poluan.info/
--
To unsubscribe from this list: send the line "unsubscribe netfilter" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Netfilter Development]     [Linux Kernel Networking Development]     [Netem]     [Berkeley Packet Filter]     [Linux Kernel Development]     [Advanced Routing & Traffice Control]     [Bugtraq]

  Powered by Linux