我有一个带有 2 个接口的 VPN 服务器(ubuntu):
eth0: A.B.C.D
eth1: 192.168.8.45
我已经设置了 VPN,并创建了 tun 接口。VPN IP 为 10.8.0.0/24 现在,我可以从 VPN 客户端 (10.8.0.6) 连接到我的 LAN (192.168.8.0/24),ping 并访问 LAN 上的服务器。我已通过在 server.conf 中进行设置强制所有流量通过 LAN
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
并设置 IP 表
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
通过这些设置,我可以连接到互联网,但使用 eth0(ABCD)的 IP 地址,而不是我想要的通过 eth1。
如果我尝试设置:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth1 -j MASQUERADE
然后我就无法连接到互联网。
那么问题是什么?我已经在谷歌上搜索过了,但还是没有找到答案。你能帮我吗?我将不胜感激。谢谢
答案1
当您尝试设置iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth1 -j MASQUERADE
路由时,请将流量从 VPN 添加到 eth1。但我认为您没有通过 eth1 到 0.0.0.0/0 的路由。关于您的网络的信息不足,但您可以添加 iptables 规则iptables -t nat -A POSTROUTING -s 192.168.8.0/24 -o eth0 -j MASQUERADE
并尝试检查发生了什么。
答案2
您需要在 VPN 服务器上添加一条路由:
ip route add 192.168.8.0/24 via 192.168.8.45 dev eth1
这将告诉您的系统通过 eth1 将所有目标发送到 192.168.8。此外,让此路由持久化也是一个好主意。