Networking

通過 IP 別名建立隧道

  • January 20, 2016

我有一台具有專用 IP 和多個 IP 別名的伺服器機器。它有一個網路介面,上面有多個“附加”IP。

所以假設IP1是主IP,但我也有IP2和IP3

我可以通過 ssh 進入三個 IP 中的任何一個並訪問同一台機器。

現在,如果我創建一個 SSH 隧道並將我的瀏覽器配置為將該隧道用作 socks 代理,那麼所有傳出請求似乎都只通過 IP1。因此,如果我通過 IP2 創建一個隧道並將其設置為 firefox 中的代理,然後在 google 中輸入“我的 ip 是什麼”,我會看到 IP1 出現。

有沒有辦法可以將傳出連接設置為我正在代理的 IP 別名?

我能夠做到這一點的唯一方法是使用 NAT。像這樣的東西:

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4

其中 1.2.3.4 是您的別名 IP 之一。這樣做會翻轉所有傳出流量以使用此 IP 地址,用於一切(所以要小心)。

您可能希望考慮這種變體:

iptables -t nat -A POSTROUTING -o eth0 -m owner --uid-owner user -j SNAT --to 1.2.3.4

我自己不執行這個,雖然我剛剛測試過它並且 iptables 接受它。這將允許您擁有每個使用者/IP 別名映射(我認為),因此取決於執行 socks 代理的程序的 UID(我假設這裡是 SSH socks 代理,因此是通過 SSH 登錄的使用者) ,該 IP 將用於任何傳出流量。

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