使用roadwarrior ipsec客户端作为网关

场景:

INTERNET --- VPN-Server <----> ROUTER <----> Roadwarrior <----> Subnet 132.1.1.1 192.168.2.1 192.168.2.50 176.168.10.0/24 | INTERNET 

VPN-Server:CISCO
Roadwarrior:linux上的racoon

我正在尝试设置该场景,以便来自子网176.168.10.0/24的所有INTERNETstream量都通过VPN服务器,而不是通过路由器。

到目前为止:我可以通过Roadwarrior连接到VPN服务器。 此外,roadwarrior上生成的所有stream量都通过VPN服务器传输到互联网。 然而,来自子网的stream量使用以下命令路由,通过互联网上的路由器:

 iptables -t nat -A POSTROUTING -s 176.168.10.0/24 -j SNAT --to-source 192.168.2.50 

使用以下命令,子网中的stream量不会通过路由器或通过VPN-Server传递到Internet:

 iptables -t nat -A POSTROUTING -s 176.168.10.0/24 -j SNAT --to-source 132.1.2.2 (internal ip assigned to roadwarrior from VPN-Server) 

有任何想法吗?

勇士之路:

 eth0 192.168.2.50 eth0:1 132.1.2.2 br0 176.168.10.1 ip route list default via 192.168.2.1 dev eth0 src 132.1.2.2 132.1.0.0/16 dev eth0 proto kernel scope link src 132.1.2.2 132.1.1.1 via 192.168.2.1 dev eth0 176.168.10.0/24 dev br0 proto kernel scope link src 176.168.10.1 192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.50 

我发现它… phase1-up.sh脚本在最后包含以下几行:

 44 # 45 # XXX This is a workaround for Linux forward policies problem. 46 # Someone familiar with forward policies please fix this properly. 47 # 48 echo " 49 spddelete 0.0.0.0/0[any] ${INTERNAL_ADDR4}[any] any 50 -P fwd ipsec esp/tunnel/${REMOTE}-${LOCAL}/require; 51 " | setkey -c 52 

这段代码必须注释掉,这样转发策略才不会被删除。 然后一个简单的

 iptables -t nat -A POSTROUTING -o $WAN_IP -j MASQUERADE 

做的伎俩。