我将 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 客户端已配置为覆盖默认路由,则无需执行任何其他操作。(否则您需要添加“策略路由”规则。)