无法通过白色地址访问 NAT 后面的虚拟机

无法通过白色地址访问 NAT 后面的虚拟机

我已经在 VMware 环境中模拟了简单网络:方案

host1内部网络中192.186.0.0/24host2在我的家庭网络中192.168.0.0/24

router两个网络中都有两个网络适配器。

所有机器均由Ubuntu Server 22.04运行。

我已经安装了 iptablesrouter并对其进行了配置。

root@router:~# iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i int0 -j ACCEPT
-A INPUT -i ext0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 2022 -j ACCEPT
-A FORWARD -i int0 -o ext0 -j ACCEPT
-A FORWARD -i ext0 -o int0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

root@router:~# iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A PREROUTING -p tcp -m tcp --dport 2022 -j DNAT --to-destination 192.186.0.2:22
-A POSTROUTING -j MASQUERADE
-A POSTROUTING -d 192.186.0.2/32 -p tcp -m tcp --sport 22 -j SNAT --to-source 192.168.0.114:2222

host1如果我尝试通过外部适配器上的路由器端口 2022进行连接,它将成功连接。

ilya@host2:~$ ssh -v -p 2022 [email protected]
OpenSSH_8.9p1 Ubuntu-3, OpenSSL 3.0.2 15 Mar 2022
...
ilya@host1:~$ uname -a
Linux host1 5.15.0-56-generic #62-Ubuntu SMP Tue Nov 22 19:54:14 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

正如您所见,我添加了一条规则来为 制作虚假的地址192.168.0.114和端口 2222 host1

但当我连接到虚假地址上的 2222 端口时,192.168.0.114它失败了

ilya@host2:~$ ssh [email protected]:2222
ssh: Could not resolve hostname 192.168.0.114:2222: Name or service not known

显然这条规则不起作用

root@router:~ iptables -t nat -A POSTROUTING -p tcp --sport 22 -d 192.186.0.2 -j SNAT --to-source 192.168.0.114:2222

所以我跳过了一些规则或配置选项......

你可以帮帮我吗?

相关内容