我有一台機器,兩個介面上有兩個公用 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.