[strongSwan] Customizing routing
Jan Palus
jan.palus at gmail.com
Sun Dec 13 22:55:46 CET 2015
Hi,
I'm new to strongswan and ipsec in general but so far all seems to go
flawlessly -- client connection is established successfully and I can
access VPN resources. Some details about my setup:
- ipsec connection is established with gateway GW over ikev1
- GW gives virtual IP and provides access to multiple independent
subnets, for the sake of this post let's assume there are two subnets A
and B
- to give access to all subnets rightsbunet=0.0.0.0/0 (GW does not
support unity extension)
- strongswan connecting to GW is running on openwrt based router which
also SNATs tunneled traffic from internal subnet C GW does not know about
- to avoid routing all traffic through GW I am customizing routing table
in leftupdown so only A and B are tunnelled
_______
| | \
| A | \ _______
|_____| \ | |
\ GW <-------> OPENWRT (STRONGSWAN) ---- | C |
------- / |_____|
| | /
| B | /
|_____| /
Now above setup works perfectly as long as kernel-libipsec is used, which
creates dedicated ipsec0 interface. Both routing and MASQUERADE are
using it:
ip r add A dev ipsec0 table 220
ip r add B dev ipsec0 table 220
iptables -t nat -A POSTROUTING -o ipsec0 -j MASQUERADE
With kernel-netlink however I can achieve higher throughput with less
CPU being used, but in that case SNAT seems to fail sometimes
(connections are initiated correctly but "hang" after a while). Main
difference is the lack of dedicated interface so routing customization
is not required, but below SNAT rule seems to result in hanging
connections:
iptables -t nat -A POSTROUTING -o WAN -d A,B -j SNAT --to-source <virtual-ip>
Is there anything I am missing? Would it be possible to have virtual
interface but with kernel-netlink?
Regards
Jan
More information about the Users
mailing list