Linux
Linux 上的 IP 轉發
我有三台機器
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 池。