我有一个运行 Debian 的服务器,它有这样的网络:
eth0 - has public IP address 1.2.3.4
eth1 - has public IP address 1.2.3.5
我正在尝试在我可以从我的 Android 手机连接到的服务器上设置一个 VPN。我按照http://wiki.debian.org/HowTo/AndroidVPNServer上的说明安装和配置 xl2tpd 和 racoon。一切正常,但我还有最后一项要调整:当我将手机连接到 VPN 时,从中路由手机流量的公共 IP 地址是 eth0 上的地址,即 1.2.3.4。我希望 VPN 流量在 eth1 的 IP 地址后进行 NAT,即 1.2.3.5(理想情况下,VPN 客户端继续连接到 1.2.3.4)。
我的防火墙规则如下所示:
VPN_CLIENT_RANGE=192.168.200.0/24
iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT
iptables -A INPUT -p esp -j ACCEPT
iptables -A INPUT -p udp -m policy --dir in --pol ipsec -m udp --dport 1701 -j ACCEPT
# Enable VPN traffic on the ppp+ adapters (only active when a call is established)
# to go through the machine using SNAT/masquerading.
iptables -A FORWARD -i ppp+ -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o ppp+ -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -s $VPN_CLIENT_RANGE -j MASQUERADE
我曾希望在最后三行中将 eth0 更改为 eth1 会达到正确的效果,但它没有 - VPN 客户端可以连接但无法再看到互联网,并且日志显示来自 VPN 客户端的流量(pppX 接口在服务器)仍然从 eth0 发送出去(防火墙在没有最后三行的情况下阻止了它)。
我是否需要以某种方式在 pppd 中配置源地址?或者更改 ppp 接口的默认路由?