Networking
如何為 GNS3 伺服器進行埠轉發(SSH 隧道)?
我有一個 GNS3 伺服器,我正在嘗試添加 iptable 規則,以便當我團隊中的某個人在埠 1100 上連接時,他們會被路由到內部 IP,例如 192.168.122.2:22。此內部 IP 屬於 GNS3 項目的堡壘主機。最終目標是能夠從本地機器 shh 進入內部 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
在我的本地機器上,我執行命令
ssh ubunut@1.2.3.4 -p1100
。Ubuntu 是訪問 GNS3 項目內部 IP 所需的使用者名。執行此命令後,我在 GNS3 伺服器(1.2.3.4)上得到以下輸出:
cloud@gns3:~$ connect_to 192.168.122.2 port 1100: failed.
似乎我的 SSH 命令正在到達 GNS3 伺服器,並嘗試進行埠轉發。但是,出於某種原因,它試圖轉發到埠 1100 而不是 22?任何人都可以找出原因嗎?
這是我嘗試過的:
- 將 ipv4 埠轉發設置為 1
- 將 GatewayPorts 和 AllowTcpForwarding 設置為 1
- 在本地機器上執行(我認為這改變了伺服器上的一些配置) -
ssh -R 1.2.3.4:1100:192.168.122.2:22 cloud@1.2.3.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
- 還添加了偽裝:
sudo /sbin/iptables -t nat -A POSTROUTING -j MASQUERADE
而不是使用 DNAT,它應該是根據這個來源 REDIRECT :
所以:
sudo iptables --table nat --append PREROUTING --protocol tcp --destination 1.2.3.4 --dport 1100 --jump REDIRECT --to-destination 192.168.122.2:22