仅在路由到网关时应用 NAT

仅在路由到网关时应用 NAT

我有一个 OpenVPN 服务器在有线调制解调器/路由器后面运行。我无法向此网关添加路由。与服务器的连接良好。我尝试使用 NAT Hack 中描述的通过 VPN 设置互联网路由https://community.openvpn.net/openvpn/wiki/NatHack。我发现,当尝试通过 NAT 路由时,我失去了连接某些物理网络资源的能力。

是否有一些命令会导致 VPN 和物理网络之间进行常规路由,但通过网关的连接除外?如何设置 IPtables 和 OpenVPN 配置?

物理网络为 192.168.x.0/24,网关为 192.168.x.1。VPN 服务器管理 172.16.x.0/24 网络,该网络在网络之间转发数据包而不进行过滤。本质上,我想对通过 192.168.x.1 进入互联网的数据包应用 NAT,但不对 192.168.x.0/24 和 172.16.x.0/24 上的其他主机之间的流量进行任何更改。

答案1

更改 OpenVPN 服务器的防火墙很简单。除了使用iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE或 之外iptables -t nat -I POSTROUTING -o eth0 -j SNAT --to <IP ADDRESS>,您还可以添加另一个过滤器:不发往本地网络,因此类似于! -d 192.168.123.0/24

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 ! -d 192.168.123.0/24 -o eth0 -j MASQUERADE

但是,其他设备如何知道如何联系/向 VPN 网络发送回复?您必须手动设置静态路由全部设备。否则流量将被定向到默认网关。

请记住,路由是无状态的。因此,即使设备从 VPN 子网收到 TCP 连接,它也不会知道通过 OpenVPN 服务器的 IP 地址进行响应。您必须在某处有适当的路由。

相关内容