Linux

將特定埠上的流量轉發到另一台機器的最佳方式是什麼?

  • October 18, 2012

我的設置是這樣的:

[client01] <-A-> [server01] <-B-> [server02]

client01可以訪問server01(連接A)上的埠 9300。server01只能通過 ssh訪問(連接)9300上的埠。使埠上的所有流量都轉到埠上的最佳方法是什麼?server02``B``9300``server01``9300``server02

我可以使用 ssh 隧道從client01to成功server01做到這一點server02,但我不想在 ssh 上執行client01。當我從 sshserver01server02轉發埠 9300 ( ssh -g -L9300:localhost:9300 server02on server01) 時,它不起作用——我使用了錯誤的命令嗎?

編輯:補充說 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 地址和 server02x.x.x.x的地址,y.y.y.y您就設置好了。

當然,這一切都假設您在 server01 上執行 iptables。這還假設 server02 正在使用 server01 將流量路由回 Internet。如果 server02 不是,那麼這不會做你想做的事。

根據機器之間僅 SSH 的連接進行編輯:

您用於 SSH 埠轉發的命令行看起來不錯,只是您需要在“L”和“9300”之間留一個空格。您還需要確保 server01 電腦將接受埠 9300 上的入站連接。查看過濾表 ( iptables -L INPUT) 中的 iptables INPUT 鏈,以確保允許流量進入。

您還需要持續保持該隧道的執行。

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