我一直在研究这些问题,并尝试了许多不同的解决方案来使其正常工作,但我似乎无法正确设置路由。我在一个网络中安装了一个盒子,除了我的服务器的 OpenVPN 之外,没有互联网访问权限。其他一切都被阻止,只留下盒子所在的 LAN 段。
该框打开与我的 VPN 服务器的连接,所以现在我有了 p2p1 和 tun0。/etc/network/interfaces 的设置如下:
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.56.211
netmask 255.255.255.0
gateway 192.168.56.251
dns-nameservers 192.168.100.20 192.168.50.35
OpenVPN 连接成功建立,连接如您所愿,让我能够从 LAN 外部通过 VPN 通过 SSH 进入盒子。问题是全部传出数据正在尝试使用本地网关。到目前为止,我还没有能够获得任何路由配置来传递以下内容:
- 通过 192.168.56.251 的本地 LAN
- 通过 192.168.56.251 的辅助 LAN (192.168.50.x)
- 通过 192.168.56.251 的 VPN 服务器
- 通过 tun0(OpenVPN 接口)访问互联网
我试过使用
up route add -net 1.2.3.4/32 gw 10.8.4.9
配置至少一个服务器以通过 VPN 建立连接,但仍然没有成功。好像没有任何东西可以正确路由。至少我需要让 apt-get 通过 VPN 工作,然后让我的 Web 服务器也通过它。我可以应付这样的限制,但理想情况下我只想修复它,这样路由就正确了!
答案1
就我而言,eth1
是我希望作为我的 LAN 上可用网关的设备,也是ppp0
我的 VPN 连接在该机器上处于活动状态时的名称(通过连接,eth0
但出于死机开关安全考虑,我们不会在路由中命名它)。
设置从 LAN 到 VPN 连接网关的 NAT IPtables:
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
iptables -A FORWARD -i ppp0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o ppp0 -j ACCEPT