我试图创build两个networking(使用debian服务器):
我目前的拓扑是:
eth0
连接到我的ISP路由器:(192.168.1.0/24) eth1
(10.0.0.1)连接到我的lan(10.0.0.0/16) eth1:1
(10.1.0.1)连接到我的lan(10.1.0.0/16) ppp0
是我的L2TP / IPSec连接 如果一个客户端使用10.0.0.1作为路由器,他通过eth0,如果客户端使用10.1.0.1作为路由器,他通过ppp0。 所以,为了达到这个目的,我创build了这2个IPTables规则:
iptables -A POSTROUTING -t nat -o eth0 -s 10.0.0.0/16 -j MASQUERADE
iptables -A POSTROUTING -t nat -o ppp0 -s 10.1.0.0/16 -j MASQUERADE
第一个networking(10.0.0.0/16)运行良好,nat假面舞会效果很好。 但是对于第二个(10.1.0.0/16),它根本不工作。
我确定ppp0正在工作,因为如果我更改服务器上的默认路由以使用ppp0地址, traceroute google.com
显示我正在通过VPN。
我的问题是:为什么它不是与NAT的工作?
我怀疑你的路由规则有问题。 你需要指定哪个目的地址出去哪个接口。 它可能都只是当前的默认网关。 这些POSTROUTING规则在路由完成后得到应用。
您的问题很可能来自您的IPSec隧道封装您的数据包的encryption。您需要NATting的目标和源头来正确地转发您的数据包,但是您的IPSec隧道封装这些数据包并encryption它们,使您的路由器无法指挥交通。
根据您的路由器型号和构build有一些共同的解决scheme。 思科硬件可以通过访问控制列表来解决这个问题
参考文档: VPN和Natting解释