我有一台服务器机器,有一个专用的IP和几个IP别名。它有一个单一的网络接口,上面有多个IP“附加”。
假设IP1是主要ip,但我也有IP2和IP3
我可以进入三个I中的任何一个,并访问同一台机器。
现在,如果我创建一个SSH隧道,并将我的浏览器配置为使用该隧道作为socks代理,那么所有传出请求似乎都只通过IP1。因此,如果我通过IP2创建了一个隧道,并在火狐中将其设置为代理,那么就用谷歌来表示“我的ip是什么”,我看到IP1出现了。
有没有方法可以将传出连接设置为我正在代理的IP别名?
发布于 2016-01-20 13:13:28
我唯一能做到这一点的方法就是使用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我自己不运行这个,虽然我刚刚测试过它,iptable也接受它。这将允许您拥有每个用户/ IP别名映射(我认为),因此根据运行socks代理的进程的UID (我在这里假设是SSH socks代理,因此是通过SSH登录的用户),该IP将用于任何传出流量。
发布于 2016-01-20 14:03:55
您可以为此使用ip路由命令。您甚至可以为特定主机设置特定的ip源地址。使用下列地址
将传出流量的ip更改为10.0.0.0/16
ip route add to 10.0.0.0/16 via 192.168.0.1 dev eth0 src 192.168.0.101如果您想让所有传出通信流都具有别名ip,您将使用
ip route change default via 192.168.0.1 dev eth0 src 192.168.0.101 metric 101https://serverfault.com/questions/750473
复制相似问题