我有一个专用的IP和几个IP别名的服务器机器。 它有一个单一的networking接口,并有多个IP“附加”。
所以我们假设IP1是主要的IP,但我也有IP2和IP3
我可以ssh到任何三个IP和访问相同的机器。
现在,如果我创buildSSH隧道并将浏览器configuration为使用该通道作为socks代理,那么所有传出的请求似乎只通过IP1。 所以,如果我通过IP2创build隧道,并将其设置为代理在Firefox中,然后说谷歌“什么是我的IP”我看到IP1出现。
有没有一种方法,我可以设置传出的连接显示为我正在代理的IP别名?
我能够做到这一点的唯一方法是使用NAT。 像这样的东西:
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4
其中1.2.3.4是您的别名IP之一。 这样做会翻转所有传出stream量来使用这个IP地址,对于所有事情(所以要小心)。
你不妨考虑这个变种:
iptables -t nat -A POSTROUTING -o eth0 -m owner --uid-owner user -j SNAT --to 1.2.3.4
我不自己运行这个,尽pipe我已经testing过,iptables接受它。 这将允许你有一个每个用户/ IP别名映射(我认为),这取决于运行socks代理进程的UID(我假设这里是一个SSH socks代理,因此通过SSHlogin的用户) ,该IP将用于任何传出stream量。
你可以使用ip route命令。 您甚至可以为特定主机设置特定的IP源地址。 使用以下地址
将传出stream量的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
如果你想要所有的传出stream量的别名IP,你会使用
ip route change default via 192.168.0.1 dev eth0 src 192.168.0.101 metric 101