Linux Netfilter discussions
 help / color / mirror / Atom feed
From: "Jörg Harmuth" <harmuth@mnemon.de>
To: netfilter@lists.netfilter.org
Subject: Re: DNAT Rules.
Date: Mon, 26 Sep 2005 12:20:40 +0200	[thread overview]
Message-ID: <4337CB78.6030302@mnemon.de> (raw)
In-Reply-To: <1057.192.168.1.22.1127673317.squirrel@192.168.1.22>

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



  parent reply	other threads:[~2005-09-26 10:20 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-09-25 18:35 DNAT Rules Vincent Blondel
2005-09-25 18:43 ` Edmundo Carmona
2005-09-26  2:01 ` DNAT Rules. (nfcan: addressed to exclusive sender for this address) Jim Laurino
2005-09-26 10:20 ` Jörg Harmuth [this message]
2005-09-26 16:25   ` DNAT Rules Vincent Blondel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4337CB78.6030302@mnemon.de \
    --to=harmuth@mnemon.de \
    --cc=netfilter@lists.netfilter.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox