
是host1
在內部網路中192.186.0.0/24
,這host2
是在我的家庭網路中192.168.0.0/24
。
兩個網路都有router
兩個網路介面卡。
所有機器均由 Ubuntu Server 22.04 運作。
我已經安裝router
並設定了 iptables。
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
為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
所以我跳過了一些規則或配置選項...
你可以幫幫我嗎?