Linux

Linux 上的 IP 轉發

  • May 4, 2016

我有三台機器

Source Machine
Destination Machine - IP 10.20.30.40
Intermediate Machine - Host server1.test.com

源機器對中間機器有 SSH 訪問權限,中間機器對目標機器有 SSH 訪問權限,但沒有從源到目標的直接訪問權限

有一個在源上執行的腳本需要通過 SSH 連接到目標。腳本配置了目標的 IP 地址,我無法將其更改為主機名或 localhost(然後我可以使用中間伺服器使用 SSH 埠轉發)

我檢查了一些文章,到處都建議使用 iptables 將 IP 轉發到不同的目的地

因此,我決定在源上使用 iptables 將目標 IP 轉發到埠 1234 上的 localhost,方法如下:

iptables -t nat -A PREROUTING -p tcp -d 10.20.30.40 --dport 22 -j DNAT --to 127.0.0.1:1234

然後通過中間機器將本地埠 1234 轉發到目的地,如下所示:

ssh server1.test.com -L 1234:10.20.30.40:22

這是做到這一點的好方法還是有任何簡單的解決方案可用?

iptables-DNAT 規則將替換為以下設置。

(Script execution user's .ssh/config)
Host 10.20.30.40
   Hostname 127.0.0.1
   Port 1234

如果 ssh-portforward 以相同的使用者執行,我認為使用ProxyCommand.

Host 10.20.30.40
   ProxyCommand ssh server1.test.com nc %h %p

為此使用 VPN 連接(所有通過專用網路連接的機器)更安全或使用埠轉發(這不是一個壞主意),只需記住限制專用網路中機器上的連接 IP 池。

引用自:https://serverfault.com/questions/774457