设想:
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 服务器:CISCO
Roadwarrior:Linux 上的 racoon
我正在尝试设置该场景,以便来自子网 176.168.10.0/24 的所有 INTERNET 流量都通过 VPN 服务器而不是通过路由器。
到目前为止:我可以通过 Roadwarrior 连接到 VPN 服务器。此外,roadwarrior 上生成的所有流量都通过 VPN 服务器传输到互联网。但是,使用以下命令路由的子网流量会通过互联网中的路由器:
iptables -t nat -A POSTROUTING -s 176.168.10.0/24 -j SNAT --to-source 192.168.2.50
使用以下命令,子网中的流量就不会传输到互联网(无论是通过路由器还是通过 VPN 服务器):
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
答案1
我找到了...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
成功了。