LINUX 将特定端口的 VPN 流量路由到本地网络上的主机

LINUX 将特定端口的 VPN 流量路由到本地网络上的主机

我将 Linux L1 连接到 VPN 以获取公共静态 IP 117.xxx.xxx.xxx。此 L1 机器只有一个以太网接口 eth0,IP 为 192.168.1.130,并且已连接 VPN 创建接口 ppp0。我想在通过路由器连接到 Linux 机器的主机(IP 192.168.1.100)上使用端口 3389 执行远程桌面。我知道它可以与 NAT 一起使用,但我没有掌握正确的命令。

VPN IP 正在从互联网 ping。附上连接图以供参考。请帮我提供意见。

ETH 0
inet 192.168.1.130  netmask 255.255.255.0  broadcast 192.168.1.255
Gateway 192.168.1.1

VPN
inet 172.xxx.xxx.xxx  netmask 255.255.255.255  destination 192.253.242.4

网络

答案1

从简单的 DNAT(端口转发)开始:

-A PREROUTING -d 117.xxx.xxx.xxx -m tcp --dport 3389 -j DNAT --to-destination 192.168.1.100
-A PREROUTING -d 117.xxx.xxx.xxx -m udp --dport 3389 -j DNAT --to-destination 192.168.1.100

(现代 RDP 同时使用 TCP 和 UDP 传输。)

但是,RDP 服务器还必须使用 Linux 路由器作为其默认网关。只要服务器仅使用您的主 LAN 路由器,它对客户端的响应就会被 NAT 到错误的源 IP 地址。(也就是说,即使客户端将连接请求发送到 117.xxx.xxx.xxx,它们也会从您的主 WAN IP 地址获得响应,并且会感到非常困惑。)

最后,当 Linux 路由器接收这些响应并正确转换它们,它仍然需要知道它们应该通过 VPN 发送。如果您的 VPN 客户端已配置为覆盖默认路由,则无需执行任何其他操作。(否则您需要添加“策略路由”规则。)

相关内容