多年来,我一直在运行自己的自制路由器。我的 ISP 提供以桥接模式运行的设备,因此我自己的路由器只需使用公共静态 IP 连接到他们的网关即可。我还使用 VPN 服务。一切正常,但我正尝试添加一些新东西,其中我在 LAN 上通过另一个路由器拥有一台 Windows 机器。LAN 是典型的 192.168.0.0/24 网络地址。我可以从此网络上的任何机器轻松地通过 rdp 连接到它。我想要做的是新的事情,我想使用路由器的静态 ip 从互联网远程 rdp,为了便于讨论,假设它是 24.109.2.1。即使我这样做时 VPN 仍在运行,但它似乎没有干扰,因为当我尝试连接时 tcpdump 显示以下内容:
10:48:47.655403 IP REMOTE_IP.56432 > 24.109.2.1.3389: Flags [S], seq 4099036643, win 8192, options [mss 1380,nop,nop,sackOK], length 0
我花了几天时间在网上寻找解决方案,但我尝试过的方法都没有奏效,所以似乎没有必要重复所有这些失败的尝试。相反,我将提供我当前的 iptables,并询问需要添加哪些规则才能使其正常工作。我的接口区域如下:
tun0 是 VPN 隧道 enp1s0 是 WAN 的以太网接口,其 IP 号为 24.109.2.1 enp2s0 是 LAN 的以太网接口,其 IP 号为 192.168.0.1
我用来显示我的 rdp 尝试到达的 tcpdump 命令是:
tcpdump -N -i 任何“端口 3389”
以下是 iptables 的内容:
*filter
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i enp1s0 -m state --state NEW -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i enp1s0 -o enp2s0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i enp1s0 -o enp2s0 -j REJECT --reject-with icmp-port-unreachable
*mangle
*nat
-A POSTROUTING -s 192.168.0.0/24 -o tun0 -j MASQUERADE
当 VPN 关闭时(我实际上不能再这样做了,因为有实时设备全天候运行并且需要匿名运行),tun0 规则将被替换为以下规则:
-A POSTROUTING -o enp1s0 -j MASQUERADE
但VPN运行时该规则不存在。
有人告诉我,当解决这个问题时,tcpdump 不仅会显示传入的 rdp 尝试,还会显示为目标机器 192.168.0.130 重写的修改后的数据包...除了我尝试过的任何东西之外,我没有看到传入的 rdp 尝试之外的任何东西。
注意:我已从 iptables 中清除了所有尝试,上面仅显示了我开始时的工作表,因为到目前为止,没有任何尝试接近成功。最好不要通过包含失败的尝试来影响我问题的答案 - 我想重新开始。
还请注意,我已经删除了上面的真实远程 IP,并将其替换为 REMOTE_IP,并且出于安全考虑,将静态 IP 的实际最后两个八位字节更改为 .2.1。
有人能给我一些可以尝试的东西吗?我会尝试并报告结果?提前谢谢了。
—gt—