如何通过具有公共 IP 的 Linux 代理 Windows TCP 端口(位于 NAT 下)?

如何通过具有公共 IP 的 Linux 代理 Windows TCP 端口(位于 NAT 下)?

我有一台服务器(我是管理员),我可以通过 MSTSC.exe 从 NAT 下的 Windows 连接到该服务器。服务器在 NAT 下。我有使用公共 IP 的 Linux 服务器的 ssh 和 sudo 权限,可以打开 2k 及以上端口并安装软件。使用什么软件我可以通过 Linux 服务器转发我的 Windows 端口?

答案1

有几种方法可以做到这一点:

最快的方法(临时使用)是使用 ssh 客户端,如 putty。连接到 Linux 机器并添加隧道规则。

在 Linux 机器上执行此操作,您的目标是在 Linux 机器上启用 IP 转发,并添加防火墙规则,将流量从未使用的高端口重定向到您的 Windows RDP 端口(即 3389)。首选命令是 iptables。使用它,您可以将网络规则添加到 Linux 内核。建议在公共接口上使用高端口,以防止脚本小子扫描默认端口。

首先,启用 IP 转发(如果尚未启用):

暂时的:

sysctl -w net.ipv4.ip_forward=1

然后使用 iptables 添加防火墙规则:

假设:eth0 是内部网络,网络地址为 192.168.1.0/24,eth1 是外部网络,IP 地址为 1.2.3.4

sudo iptables -t nat -A PREROUTING -t nat -p tcp -d 1.2.3.4 --dport 3389 -j DNAT --to 192.168.16.1:3389 

如果外部高端口为 12345,您可以定义此 iptables 规则

sudo iptables -t nat -A PREROUTING -t nat -p tcp -d 1.2.3.4 --dport 12345 -j DNAT --to 192.168.16.1:3389 

要检查您的 NAT 规则,请使用以下命令:sudo iptables -L -nv -t nat

永久性:

sudo nano /etc/sysctl.conf

并添加以下行:

net.ipv4.ip_forward=1

使用以下命令重启 sysctl

sudo sysctl -p

要永久添加 iptables 规则,您可以在 Linux 机器上创建一个防火墙初始化脚本(如果尚未创建)并将其挂接到 Linux 机器已经运行的运行级别中。

您也可以谷歌搜索“Linux iptables NAT”、“端口转发”等。那里有很多文档 - 甚至针对 rdp。

相关内容