DNAT Rules.
Vincent Blondel
vincent at xtra-net.org
Mon Sep 26 18:25:29 CEST 2005
By
- deleting the DROP Rules in nat and mangle tables
- setting up "-m state --state ESTABLISHED,RELATED -j ACCEPT" to the INPUT, OUTPUT and FORWARD rules
the system is up and running. :)
Thanks to all.
Vincent
> Vincent Blondel wrote:
>> Hi,
>>
>> I am trying to configure next set up so a public host can connect to my web server located in a dmz.
>>
>> -----------------------
>> public host --> | eth1 eth2 | --> web server
>> x.x.x.x | 1.2.3.4 10.1.1.1 | 10.1.1.2:80
>> ----------------------
>>
>> As far as I can understand, this typically corresponds to a mix of DNAT, SNAT and FORWARD rules. Below you can find the
>> rules I have configured until now.
>>
>> #####################################################################
>>
>> # Enable ip forward
>> echo 1 > /proc/sys/net/ipv4/ip_forward
>>
>> # Unlimited traffic on the loopback interface
>> iptables -A INPUT -i lo -j ACCEPT
>> iptables -A OUTPUT -o lo -j ACCEPT
>
> Ok, until here.
>
>> # Set the default policy to drop
>> iptables --policy INPUT DROP
>> iptables --policy OUTPUT DROP
>> iptables --policy FORWARD DROP
>
> This is more a philosophical question and is discussed on this list
> again and again. My opinion is to have a OUTPUT policy of ACCEPT and
> then dedicated DROP Rules where needed.
>
>> iptables -t nat --policy PREROUTING DROP
>> iptables -t nat --policy OUTPUT DROP
>> iptables -t nat --policy POSTROUTING DROP
>>
>> iptables -t mangle --policy PREROUTING DROP
>> iptables -t mangle --policy POSTROUTING DROP
>
> Don't do that. Don't filter in nat and mangle. These tables are not
> intended for filtering.
>
>> iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 1.2.3.4
>
> Yes.
>
>> iptables -t nat -A PREROUTING -i eth1 -p tcp --sport 1024:65535 -d 1.2.3.4 --dport 80 -j DNAT --to-destination 10.1.1.2
>> iptables -A FORWARD -i eth1 -o eth2 -p tcp --sport 1024:65535 -d 10.1.1.2 --dport 80 -m state --state NEW -j ACCEPT
>
> I prefer to add --syn to the FORWARD rule.
>
>> iptables -A FORWARD -i eth2 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
>> iptables -A FORWARD -i eth1 -o eth2 -m state --state ESTABLISHED,RELATED -j ACCEPT
>
> These two rules can be rewritten to
>
> iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
>
> It is not working because you set policies in mangle to DROP and there
> is no rule, that allows packets to pass mangle. But even if you add
> respective rules (or preferably set policies to ACCEPT) in mangle, it
> will probably not work, because nat/POSTROUTING has only a rule for
> outgoing packets via eth1. So the incoming SYN packet will be dropped,
> effectively terminating the connection.
>
> HTH,
>
> Joerg
>
>
>
More information about the netfilter
mailing list