我有一个 OpenVPN tun0 10.8.0.0 255.255.255.0
服务器eth1上有一个接口为192.168.0.0 255.255.255.0
我想要路由 OpenVPN 连接以访问 192.168.0.0 网络。
我可以从客户端连接到 VPN,我获得了 10.8.0.6 的 IP,但在服务器上,它不会将流量从 tun0 路由到 eth1。当我在客户端上对 192.168.0.1 进行 tracerout 时,它显示向 10.8.0.1 发出,但就在那里停止了。
如果我尝试从 tun0 ping 服务器上的 192.168.0.1,则不会得到任何响应。ping 192.168.0.1 -I tun0
有人能帮我吗?我需要在服务器上添加什么才能使路由和 NAT 正常工作?
谢谢你!
答案1
您需要启用 IP 转发,然后指定要转发的位置
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -i tun0 -s 10.8.0.0/24 -j MASQUERADE
请参阅此答案以获取有关如何使其永久/在启动时生效的完整详细信息和说明:
这将允许 10.8.0.0/24 中的设备(这些设备已经知道(或假设)192.168.0.0/24 位于 10.8.0.1 后面)通过 192.168.0.1 的网络地址转换 (NAT) 访问 192.168.0.0/24 中的任何设备。因此,192.168.0.0/24 中的设备会认为 192.168.0.1 正在 ping 它们,而实际上真正的来源在更远的地方。
要使另一个方向工作,即从 192.168.0.2 ping 到 10.8.0.6,您需要做一些完全不同的事情。您的设备或 192.168.0.0/24 中的路由器必须知道 10.8.0.0/24 位于 192.168.0.1 后面。然后,您将使用类似的 iptables 规则在桥接机器上允许此类路由。请注意,这里未指定 NAT。
# Run on each device in 192.168.0.0/24, or set up a static route on your router of the same:
route add -net 10.8.0.0 netmask 255.255.255.0 gw 192.168.0.1
# Run on your bridge machine:
iptables -A FORWARD -i eth1 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth1 -j ACCEPT