如何為GNS3伺服器(SSH隧道)進行連接埠轉送?

如何為GNS3伺服器(SSH隧道)進行連接埠轉送?

我有一個 GNS3 伺服器,我正在嘗試新增 iptable 規則,以便當我團隊中的某人連接連接埠 1100 時,他們會被路由到內部 IP,例如 192.168.122.2:22。該內部IP屬於GNS3專案的堡壘主機。最終目標是能夠從本機輸入內部 IP 位址。

這就是我的 IPTABLE 的外觀(例如,使用假公共 IP 1.2.3.4):

Chain PREROUTING (policy ACCEPT)
num  target     prot opt source               destination         
1    DNAT       tcp  --  0.0.0.0/0            1.2.3.4       tcp dpt:1100 to:192.168.122.2:22

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
num  target     prot opt source               destination         
1    MASQUERADE  all  --  0.0.0.0/0            0.0.0.0/0          

Chain DOCKER (0 references)
num  target     prot opt source               destination         

Chain LIBVIRT_PRT (0 references)
num  target     prot opt source               destination

我在本機電腦上執行命令。 Ubuntu是存取GNS3專案內部IP所需的使用者名稱。ssh [email protected] -p1100

執行此命令後,我在 GNS3 伺服器 (1.2.3.4) 上得到以下輸出: cloud@gns3:~$ connect_to 192.168.122.2 port 1100: failed.

看起來我的 SSH 命令正在到達 GNS3 伺服器,並嘗試進行連接埠轉送。但是,由於某種原因,它嘗試轉發到連接埠 1100 而不是 22?誰能確定為什麼嗎?

這是我迄今為止嘗試過的:

  1. 將 ipv4 連接埠轉送設定為 1
  2. 將 GatewayPorts 和 AllowTcpForwarding 設定為 1
  3. 在本地計算機上運行(我認為這更改了伺服器上的一些配置)-ssh -R 1.2.3.4:1100:192.168.122.2:22 [email protected]
  4. 使用命令向 IPtables 新增規則sudo iptables --table nat --append PREROUTING --protocol tcp --destination 1.2.3.4 --dport 1100 --jump DNAT --to-destination 192.168.122.2:22
  5. 還添加了偽裝:sudo /sbin/iptables -t nat -A POSTROUTING -j MASQUERADE

答案1

根據以下來源,不應使用 DNAT,而應進行 REDIRECT:

https://fabianlee.org/2018/09/17/iptables-running-service-as-non-root-iptables-to-forward-from-privileged-port/

所以:

sudo iptables --table nat --append PREROUTING --protocol tcp --destination 1.2.3.4 --dport 1100 --jump REDIRECT --to-destination 192.168.122.2:22

相關內容