[Openswan Users] Traffic from routed net not going through tunnel?
John E.P. Hynes
john at hytronix.com
Fri Jul 25 13:59:31 EDT 2014
Greetings,
I have just set up a tunnel from a Linux/OpenSWAN firewall to a Cisco
device at my service provider. The logical setup looks like this:
(10/8, 17.16/12, 192.168/16 networks)->Linux Firewall Private
IF(10.0.0.254)->forwarding->
Linux Firewall Public IF(111.222.333.444)->Cisco Device Public
IF(555.666.777.888)->forwarding->
Cisco Firewall Private IF(10.200.89.1)->(10.200.89.0/24 network)
If I ping from the Linux firewall to hosts on the 10.200.89.0/24 net,
everything works. If I try to ping from one of the routed networks
behind the Linux firewall (say, from a host on 192.168.1.0/24) it
doesn't work.
The policy looks like it should go through the tunnel:
(relevant output of "ip xfrm policy" on Linux firewall)
src 10.200.89.0/24 dst 10.0.0.0/24
dir in priority 2344 ptype main
tmpl src 555.666.777.888 dst 111.222.333.444
proto esp reqid 16385 mode tunnel
src 10.200.89.0/24 dst 10.0.0.0/24
dir fwd priority 2344 ptype main
tmpl src 555.666.777.888 dst 111.222.333.444
proto esp reqid 16385 mode tunnel
src 10.0.0.0/24 dst 10.200.89.0/24
dir out priority 2344 ptype main
tmpl src 111.222.333.444 dst 555.666.777.888
proto esp reqid 16385 mode tunnel
The routing table entry that gets created on the Linux firewall looks
like this:
10.200.89.0 * 255.255.255.0 U 0 0 0 eth1
(eth1 is the external, public IF 111.222.333.444)
When pinging from a routed network as described above, it fails - and
tcpdump on the public interface shows this:
13:52:04.084015 arp who-has 10.200.89.10 tell hostname.of.public.if
Which leads me to think that when the firewall forwards traffic from a
routed private network, it's trying to send it directly over the public
interface, and not through the tunnel. I'm ready to be wrong on that
though.
the ipsec.conf looks like this:
version 2.0
config setup
interfaces=%defaultroute
plutodebug=none
protostack=netkey
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
oe=no
uniqueids=yes
nhelpers=0
conn RemoteCisco
type=tunnel
auth=esp
authby=secret
ike=aes256-sha1
phase2alg=aes256-sha1
pfs=no
forceencaps=off
ikev2=no
aggrmode=off
salifetime=28800s
ikelifetime=3600s
dpddelay=10
dpdtimeout=30
dpdaction=restart_by_peer
rekey=yes
keyingtries=%forever
left=111.222.333.444
leftsubnet=10.0.0.0/24
leftnexthop=555.666.777.888
leftsourceip=10.0.0.254
right=555.666.777.888
rightsubnet=10.200.89.0/24
rightnexthop=111.222.333.444
rightsourceip=10.200.89.1
auto=start
Since this firewall is also a NAT gateway for these local networks, I
added the following line before my "nat everything going out" line
(which was $IPTABLES -t nat -A POSTROUTING -o $PUB_IF -m policy --dir
out --pol none -j SNAT --to-source $PUB_IP)
(line added before above)
$IPTABLES -t nat -A POSTROUTING -o $PUB_IF -d 10.200.89.0/24 -j ACCEPT
(the -m policy --dir out --pol none stuff was just added today, as
suggested by someone on the IRC channel)
I also added a line to the forward rules to allow everything destined
for 10.200.89.0/24 to be accepted.
I'd appreciate some guidance on what to do to trouble shoot next, or if
anything looks obviously wrong that I've missed, please let me know. :)
Thanks,
-John
More information about the Users
mailing list