![我有一個 SSH 代理正在運行,現在我需要為我的客戶端選擇不同的傳出 IP](https://rvso.com/image/504124/%E6%88%91%E6%9C%89%E4%B8%80%E5%80%8B%20SSH%20%E4%BB%A3%E7%90%86%E6%AD%A3%E5%9C%A8%E9%81%8B%E8%A1%8C%EF%BC%8C%E7%8F%BE%E5%9C%A8%E6%88%91%E9%9C%80%E8%A6%81%E7%82%BA%E6%88%91%E7%9A%84%E5%AE%A2%E6%88%B6%E7%AB%AF%E9%81%B8%E6%93%87%E4%B8%8D%E5%90%8C%E7%9A%84%E5%82%B3%E5%87%BA%20IP.png)
我透過 Putty 設定了一個到我的專用伺服器的 SSH 隧道,我將其用作襪子代理。問題是我需要使用與專用伺服器的主 IP 不同的傳出 IP 位址。我為該伺服器設定了 30 個 ip 區塊,但即使我設定了基於 Web 的代理程式 (php),它也會使用主伺服器 ip。
有人知道解決方案嗎?
謝謝!
答案1
通常,作業系統假定連接的來源 IP 位址(您稱為「傳出 IP」)等於傳出介面的主位址(請參閱 參考資料ifconfig -a
)。傳出介面是透過在路由表中尋找符合條目來決定的(請參閱netstat -rn
或route
)。
您可以嘗試向路由表添加/更改條目,這有可能導致作業系統選擇另一個傳出接口,並且反過來,它也有可能導致您的作業系統選擇另一個來源 IP 位址。
除此之外,如果您的伺服器恰好是 Linux,您可以透過使用 SNAT 來解決該問題(請參閱 參考資料iptables
)。
答案2
首先,您是否為您的網路卡設定了別名?
如果使用 IP 別名進行 ssh 會發生什麼事?
對於基於 Web 的代理,您應該能夠指定要綁定到的 IP 位址。在 Apache 中,您只需設定 Listen 選項即可。你嘗試過嗎?
或者,正如 kubanskamac 所提到的,使用 iptables。