我通过 Putty 设置了到专用服务器的 SSH 隧道,并将其用作 socks 代理。问题是我需要使用与专用服务器主 IP 不同的传出 IP 地址。我为该服务器设置了 30 个 ip 块,但即使我设置了基于 Web 的代理 (php),它也会使用主服务器 ip。
有人知道解决办法吗?
谢谢!
答案1
通常,OS 会假设连接的源 IP 地址(即您所说的“传出 IP”)等于传出接口的主地址(请参阅ifconfig -a
)。传出接口是通过查找路由表中的匹配条目来确定的(请参阅netstat -rn
或route
)。
您可以尝试在路由表中添加/更改条目,有可能会导致操作系统选择另一个传出接口,反过来,有可能会导致您的操作系统选择另一个源 IP 地址。
除此之外,如果您的服务器恰好是 Linux,那么您可以使用 SNAT 来解决此问题(请参阅iptables
)。
答案2
首先,您是否为您的 NIC 设置了别名?
如果您使用 IP 别名进行 ssh 会发生什么情况?
对于基于 Web 的代理,您应该能够指定要绑定到的 IP 地址。在 Apache 中,您只需设置 Listen 选项。您试过了吗?
或者,正如 kubanskamac 提到的,使用 iptables。