指定SSH隧道的出接口

指定SSH隧道的出接口

我有一台機器,兩個介面上有兩個公用 IP 位址。這台機器正在運作sshd。在使用 SOCKS 介面(即 )建立隧道時,有沒有辦法指定-D使用哪個介面進行傳出連線?

答案1

嚴格來說,您可以透過組合 ssh 中的 -b 選項(如 mgjk 所建議)和路由來解決您的問題。假設您正在嘗試建置到網站 8.8.8.7 的隧道(只是一個虛構的範例),並且您希望連接通過 eth1,則命令

 sudo route add -host 8.8.8.7 dev eth1

將添加正確的路線,一切都應該很好。

不過,這也是「策略路由」應用的完美案例。它需要在設定隧道的機器上設定路由表(IE命令所在的那個ssh -D ...已發出)只是因為它是唯一存在兩個介面的介面。

David Schwartz 給了簡潔而充分的解釋在這個網站上。唯一重要的細節是:假設 eth0 是 192.168.1.2,eth1 是 10.0.0.2,那你可能會說

 ip rule add from 10.0.0.2 table <NAME1>
 ip rule add from 192.168.1.2 table <NAME2>

此時,您可以透過 -b 將 ssh 連線綁定到 eth1 的位址,就完成了。

答案2

當你使用 -b 時會發生什麼?

 -b bind_address
         Use bind_address on the local machine as the source address of
         the connection.  Only useful on systems with more than one
         address.

相關內容