將特定埠上的流量轉發到另一台機器的最佳方式是什麼?
我的設置是這樣的:
[client01] <-A-> [server01] <-B-> [server02]
client01
可以訪問server01
(連接A
)上的埠 9300。server01
只能通過 ssh訪問(連接)9300
上的埠。使埠上的所有流量都轉到埠上的最佳方法是什麼?server02``B``9300``server01``9300``server02
我可以使用 ssh 隧道從
client01
to成功server01
做到這一點server02
,但我不想在 ssh 上執行client01
。當我從 sshserver01
到server02
轉發埠 9300 (ssh -g -L9300:localhost:9300 server02
onserver01
) 時,它不起作用——我使用了錯誤的命令嗎?編輯:補充說 server02 只能通過 ssh 訪問
您可以使用 iptables DNAT 規則執行此操作——例如:
iptables -A PREROUTING -p tcp -d x.x.x.x --dport 9300 -j DNAT --to-destination y.y.y.y:9300
替換為 server01 的 IP 地址和 server02
x.x.x.x
的地址,y.y.y.y
您就設置好了。當然,這一切都假設您在 server01 上執行 iptables。這還假設 server02 正在使用 server01 將流量路由回 Internet。如果 server02 不是,那麼這不會做你想做的事。
根據機器之間僅 SSH 的連接進行編輯:
您用於 SSH 埠轉發的命令行看起來不錯,只是您需要在“L”和“9300”之間留一個空格。您還需要確保 server01 電腦將接受埠 9300 上的入站連接。查看過濾表 (
iptables -L INPUT
) 中的 iptables INPUT 鏈,以確保允許流量進入。您還需要持續保持該隧道的執行。