RE: ipsec nat and iptables

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

 



Guillermo, 

There are a few things that need to be done when IPSEC in order to
traverse the tunnel.  First and foremost you need to NOT masquerade the
IPSEC packets.  Here's how what is accomplished.

Change:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
To
iptables -t nat -A POSTROUTING -p ! esp -o eth1 -j MASQUERADE

IPSEC will go through iptables twice.  First for the IPSEC encoded
packets and finally the decoded packets.  You don't want to run the
decoded packets through the POSTROUTING NAT a second time.  So "-p !
esp" becomes your friend here.

Second, you now have private traffic coming in your firewall on the
external interface (because of this second parsing of the packets).  So
you need your rules to reflect that.  You might want to log everything
before you drop to see what might be getting caught that shouldn't be.

Also, you will need to turn on IP forwarding on the firewall (Which
might also be your problem).


Gary 


> -----Original Message-----
> From: netfilter-bounces@xxxxxxxxxxxxxxxxxxx [mailto:netfilter-
> bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of Guillermo Calvo
> Sent: Thursday, August 25, 2005 8:31 AM
> To: netfilter@xxxxxxxxxxxxxxxxxxx
> Subject: ipsec nat and iptables
> 
> 
> Hello
> 
> I'm trying to setup a network to network vpn using native ipsec
support
> on Centos 4.1
> 
> 
> Network A
> eth0=  conected to internet
> eth1= conected to private lan 192.168.1.1
> 
> Network B
> eth0 conected to Internet
> eth1= conected to private lan 192.168.2.1
> 
> >From server A I'm able to ping 192.168.2.1 and viceversa but
computers
> in the private lan can't see the other side
> 
> I'm using pre-shared keys also I set nat_transversal in racoon
> 
> Also I set my servers like iptables router
> iptables -A INPUT -m state --state INVALID -j DROP
> iptables -A FORWARD -m state --state INVALID -j DROP
> iptables -A OUTPUT -m state --state INVALID -j DROP
> 
> iptables -A FORWARD -i eth1 -o eth0
> iptables -A FORWARD -i eth0 -o eth1
> 
> iptables -P INPUT DROP
> iptables -P FORWARD DROP
> 
> iptables -A INPUT -i eth0 -j ACCEPT
> iptables -A INPUT -i ethY -m state --state ESTABLISHED,RELATED -j
ACCEPT
> iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
> 
> 
> Thanks in advance
> 
> Guillermo Calvo
> 




[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