Linux Netfilter discussions
 help / color / mirror / Atom feed
* Port Forwarding with iptables
@ 2004-08-19 10:57 Wilson Mak
  2004-08-19 11:15 ` George Alexandru Dragoi
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Wilson Mak @ 2004-08-19 10:57 UTC (permalink / raw)
  To: netfilter

Hi all,

I like to do the portforwarding with iptables(forward web traffic of an 
alias IP - <ext ip> to internal web server).  Here is what I have:

iptables -t nat -A PREROUTING -i eth0 -d <ext ip> -p tcp --dport 80 -j
DNAT --to 10.1.0.12:80
iptables -A INPUT -p tcp -i eth0 -d <ext ip> --dport 80 -m state
--state NEW -j ACCEPT
iptables -A FORWARD -p tcp -i eth0 -o eth1 -d <ext ip> --dport 80 -m
state --state NEW -j ACCEPT

However, it keep droping the packets when getting to the NAT box.

Logs
====
(With iptables -A FORWARD -d 10.1.0.12 -j LOG; iptable -A FORWARD -j DROP)

kernel: IN=eth0 OUT=eth1 SRC=202.xxx.122.xxx DST=10.1.0.12 LEN=48
TOS=0x00 PREC=0x00 TTL=120 ID=6491 DF PROTO=TCP SPT=4023 DPT=80
WINDOW=64240 RES=0x00 SYN URGP=0

Any clues?  Did I miss something here?

Thanks,
Wilson



^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: Port Forwarding with iptables
@ 2004-08-19 11:13 Jason Opperisano
  0 siblings, 0 replies; 8+ messages in thread
From: Jason Opperisano @ 2004-08-19 11:13 UTC (permalink / raw)
  To: netfilter

> Hi all,
>
> I like to do the portforwarding with iptables(forward web traffic of an
> alias IP - <ext ip> to internal web server).  Here is what I have:
>
> iptables -t nat -A PREROUTING -i eth0 -d <ext ip> -p tcp --dport 80 -j
> DNAT --to 10.1.0.12:80

ok

> iptables -A INPUT -p tcp -i eth0 -d <ext ip> --dport 80 -m state
> --state NEW -j ACCEPT

um--nope.  the packets are going to be FORWARD-ed--they will never be seen by the INPUT chain.

> iptables -A FORWARD -p tcp -i eth0 -o eth1 -d <ext ip> --dport 80 -m
> state --state NEW -j ACCEPT

hmm...let's hold off on this for a sec...

> However, it keep droping the packets when getting to the NAT box.
>
> Logs
> ====
> (With iptables -A FORWARD -d 10.1.0.12 -j LOG; iptable -A FORWARD -j DROP)
>
> kernel: IN=eth0 OUT=eth1 SRC=202.xxx.122.xxx DST=10.1.0.12 LEN=48
> TOS=0x00 PREC=0x00 TTL=120 ID=6491 DF PROTO=TCP SPT=4023 DPT=80
> WINDOW=64240 RES=0x00 SYN URGP=0
>
> Any clues?  Did I miss something here?

yeah--read that log entry.  now look at your FORWARD rule.  now read that log entry again.  got it?

no?  ok...  look at the "-d <ext ip>" in the rule and the "DST=10.1.0.12" in the log entry.

DNAT happens in PREROUTING; as in, "before routing"--so any FORWARD rules will see the DNAT-ed address, not the original dest IP.  try:

  iptables -A FORWARD -p tcp -i eth0 -o eth1 -d 10.1.0.12 \
    --dport 80 -m state --state NEW -j ACCEPT

hopefully you also something along the lines of this somewhere as well:

  iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

-j

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Port Forwarding with iptables
  2004-08-19 10:57 Port Forwarding with iptables Wilson Mak
@ 2004-08-19 11:15 ` George Alexandru Dragoi
  2004-08-19 11:22 ` Nick Drage
  2004-08-19 16:39 ` Alejandro Flores
  2 siblings, 0 replies; 8+ messages in thread
From: George Alexandru Dragoi @ 2004-08-19 11:15 UTC (permalink / raw)
  To: netfilter

On Thu, 19 Aug 2004 18:57:59 +0800, Wilson Mak
<wilson.mak@digitalview.com> wrote:
> Hi all,
> 
> I like to do the portforwarding with iptables(forward web traffic of an
> alias IP - <ext ip> to internal web server).  Here is what I have:
> 
> iptables -t nat -A PREROUTING -i eth0 -d <ext ip> -p tcp --dport 80 -j
> DNAT --to 10.1.0.12:80
> iptables -A INPUT -p tcp -i eth0 -d <ext ip> --dport 80 -m state
> --state NEW -j ACCEPT
> iptables -A FORWARD -p tcp -i eth0 -o eth1 -d <ext ip> --dport 80 -m
> state --state NEW -j ACCEPT
Take a look at -d param



> However, it keep droping the packets when getting to the NAT box.
> 
> Logs
> ====
> (With iptables -A FORWARD -d 10.1.0.12 -j LOG; iptable -A FORWARD -j DROP)
> 
> kernel: IN=eth0 OUT=eth1 SRC=202.xxx.122.xxx DST=10.1.0.12 LEN=48
> TOS=0x00 PREC=0x00 TTL=120 ID=6491 DF PROTO=TCP SPT=4023 DPT=80
> WINDOW=64240 RES=0x00 SYN URGP=0
Now look at DST,

Q: Do they match? :)

 
> Any clues?  Did I miss something here?
> 
> Thanks,
> Wilson
> 
> 


-- 
Bla bla


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Port Forwarding with iptables
  2004-08-19 10:57 Port Forwarding with iptables Wilson Mak
  2004-08-19 11:15 ` George Alexandru Dragoi
@ 2004-08-19 11:22 ` Nick Drage
  2004-08-20 10:06   ` Wilson Mak
  2004-08-19 16:39 ` Alejandro Flores
  2 siblings, 1 reply; 8+ messages in thread
From: Nick Drage @ 2004-08-19 11:22 UTC (permalink / raw)
  To: netfilter

On Thu, Aug 19, 2004 at 06:57:59PM +0800, Wilson Mak wrote:
> Hi all,
> 
> I like to do the portforwarding with iptables(forward web traffic of an 
> alias IP - <ext ip> to internal web server).  Here is what I have:
> 
> iptables -t nat -A PREROUTING -i eth0 -d <ext ip> -p tcp --dport 80 -j
> DNAT --to 10.1.0.12:80
> iptables -A INPUT -p tcp -i eth0 -d <ext ip> --dport 80 -m state
> --state NEW -j ACCEPT
> iptables -A FORWARD -p tcp -i eth0 -o eth1 -d <ext ip> --dport 80 -m
> state --state NEW -j ACCEPT
> 
> However, it keep droping the packets when getting to the NAT box.
> 
> Logs
> ====
> (With iptables -A FORWARD -d 10.1.0.12 -j LOG; iptable -A FORWARD -j DROP)
> 
> kernel: IN=eth0 OUT=eth1 SRC=202.xxx.122.xxx DST=10.1.0.12 LEN=48
> TOS=0x00 PREC=0x00 TTL=120 ID=6491 DF PROTO=TCP SPT=4023 DPT=80
> WINDOW=64240 RES=0x00 SYN URGP=0
> 
> Any clues?  Did I miss something here?

( caveat, this is a quick email during a lunch break at work, so it's
all "best guess" )

The rules in the PREROUTING table are executed before those in the
FORWARD table, so the packet has a destination of 10.1.0.12 when it hits
the FORWARD table.  So your third line should be

iptables -A FORWARD -p tcp -i eth0 -o eth1 -d 10.1.0.12 --dport 80 -m
state --state NEW -j ACCEPT

Let me know how you get on :)


-- 
"I think a church with a lightning rod shows a decided lack of confidence"


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Port Forwarding with iptables
  2004-08-19 10:57 Port Forwarding with iptables Wilson Mak
  2004-08-19 11:15 ` George Alexandru Dragoi
  2004-08-19 11:22 ` Nick Drage
@ 2004-08-19 16:39 ` Alejandro Flores
  2 siblings, 0 replies; 8+ messages in thread
From: Alejandro Flores @ 2004-08-19 16:39 UTC (permalink / raw)
  To: Wilson Mak; +Cc: netfilter

	Hello Wilson,

> iptables -t nat -A PREROUTING -i eth0 -d <ext ip> -p tcp --dport 80 -j
> DNAT --to 10.1.0.12:80

	That's ok.

> iptables -A INPUT -p tcp -i eth0 -d <ext ip> --dport 80 -m state
> --state NEW -j ACCEPT

	This rule is only necessary if you have a webserver running on you
firewall. 

> iptables -A FORWARD -p tcp -i eth0 -o eth1 -d <ext ip> --dport 80 -m
> state --state NEW -j ACCEPT

	Ops. You made a mistake. You have added a rule which changes the
destination IP address to your internal webserver, remember? Your
forward rule must specify the internal address as destination.
iptables -A FORWARD -p tcp -i eth0 -o eth1 -d 10.1.0.12/32 --dport 80
--syn -j ACCEPT

Regards,
-- 
--
Alejandro Flores
http://www.triforsec.com.br/
http://www.defenselayer.com/
http://www.nabucodonosor.com/


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Port Forwarding with iptables
  2004-08-19 11:22 ` Nick Drage
@ 2004-08-20 10:06   ` Wilson Mak
  2004-08-20 10:15     ` Nick Drage
  0 siblings, 1 reply; 8+ messages in thread
From: Wilson Mak @ 2004-08-20 10:06 UTC (permalink / raw)
  To: Nick Drage; +Cc: netfilter

Nick Drage wrote:

>On Thu, Aug 19, 2004 at 06:57:59PM +0800, Wilson Mak wrote:
>  
>
>>Hi all,
>>
>>I like to do the portforwarding with iptables(forward web traffic of an 
>>alias IP - <ext ip> to internal web server).  Here is what I have:
>>
>>iptables -t nat -A PREROUTING -i eth0 -d <ext ip> -p tcp --dport 80 -j
>>DNAT --to 10.1.0.12:80
>>iptables -A INPUT -p tcp -i eth0 -d <ext ip> --dport 80 -m state
>>--state NEW -j ACCEPT
>>iptables -A FORWARD -p tcp -i eth0 -o eth1 -d <ext ip> --dport 80 -m
>>state --state NEW -j ACCEPT
>>
>>However, it keep droping the packets when getting to the NAT box.
>>
>>Logs
>>====
>>(With iptables -A FORWARD -d 10.1.0.12 -j LOG; iptable -A FORWARD -j DROP)
>>
>>kernel: IN=eth0 OUT=eth1 SRC=202.xxx.122.xxx DST=10.1.0.12 LEN=48
>>TOS=0x00 PREC=0x00 TTL=120 ID=6491 DF PROTO=TCP SPT=4023 DPT=80
>>WINDOW=64240 RES=0x00 SYN URGP=0
>>
>>Any clues?  Did I miss something here?
>>    
>>
>
>( caveat, this is a quick email during a lunch break at work, so it's
>all "best guess" )
>
>The rules in the PREROUTING table are executed before those in the
>FORWARD table, so the packet has a destination of 10.1.0.12 when it hits
>the FORWARD table.  So your third line should be
>
>iptables -A FORWARD -p tcp -i eth0 -o eth1 -d 10.1.0.12 --dport 80 -m
>state --state NEW -j ACCEPT
>
>Let me know how you get on :)
>
>
>  
>
Thanks for all who help on this issue.  I mis-type the rule here.  Yes 
you guys are right, the rule should be: -d 10.1.0.12.  But still it 
doesn't work.  Do I need to enable something in the kernel when using 
Port-Forwarding?

Here are what I have now
===================
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

iptables -t nat -A PREROUTING -i eth0 -d <ext ip - an alias ip>  -p tcp 
--dport 80 -j DNAT --to 10.1.0.12:80
iptables -A FORWARD -p tcp -i eth0 -o eth1 -d 10.1.0.12 --dport 80 -m 
state --state NEW -j ACCEPT
iptables -A FORWARD -t filter -i eth1 -m state --state 
NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -t filter -i eth0 -m state --state 
ESTABLISHED,RELATED -j ACCEPT

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Many thanks,
Wilson  




^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Port Forwarding with iptables
  2004-08-20 10:06   ` Wilson Mak
@ 2004-08-20 10:15     ` Nick Drage
  2004-08-23  3:04       ` Wilson Mak
  0 siblings, 1 reply; 8+ messages in thread
From: Nick Drage @ 2004-08-20 10:15 UTC (permalink / raw)
  To: netfilter

On Fri, Aug 20, 2004 at 06:06:38PM +0800, Wilson Mak wrote:
> Nick Drage wrote:

Excuse the short answer...

> Thanks for all who help on this issue.  I mis-type the rule here.  Yes 
> you guys are right, the rule should be: -d 10.1.0.12.  But still it 
> doesn't work.  Do I need to enable something in the kernel when using 
> Port-Forwarding?

Try:

echo 1 > /proc/sys/net/ipv4/ip_forward

If you google for that you should find an explanation :)

-- 
"I think a church with a lightning rod shows a decided lack of confidence"


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Port Forwarding with iptables
  2004-08-20 10:15     ` Nick Drage
@ 2004-08-23  3:04       ` Wilson Mak
  0 siblings, 0 replies; 8+ messages in thread
From: Wilson Mak @ 2004-08-23  3:04 UTC (permalink / raw)
  To: Nick Drage; +Cc: netfilter

Nick Drage wrote:

>On Fri, Aug 20, 2004 at 06:06:38PM +0800, Wilson Mak wrote:
>  
>
>>Nick Drage wrote:
>>    
>>
>
>Excuse the short answer...
>
>  
>
>>Thanks for all who help on this issue.  I mis-type the rule here.  Yes 
>>you guys are right, the rule should be: -d 10.1.0.12.  But still it 
>>doesn't work.  Do I need to enable something in the kernel when using 
>>Port-Forwarding?
>>    
>>
>
>Try:
>
>echo 1 > /proc/sys/net/ipv4/ip_forward
>
>If you google for that you should find an explanation :)
>
>  
>
Yap! I did set this bit to 1.  Any other stuffs I missed?  That's 
absolutely weird.  It used to work perfectly with ipchains plus 
ipmasqadm.  Actually, the packets did forward to the internal server ( I 
capture the packets with ethereal), but looks like the response packets 
can't get through the NAT box.

Thanks,
Wilson



^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2004-08-23  3:04 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-08-19 10:57 Port Forwarding with iptables Wilson Mak
2004-08-19 11:15 ` George Alexandru Dragoi
2004-08-19 11:22 ` Nick Drage
2004-08-20 10:06   ` Wilson Mak
2004-08-20 10:15     ` Nick Drage
2004-08-23  3:04       ` Wilson Mak
2004-08-19 16:39 ` Alejandro Flores
  -- strict thread matches above, loose matches on Subject: below --
2004-08-19 11:13 Jason Opperisano

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox