我有一个分配给它的多个IP地址的VPS(我们可以使用debian,centos或ubuntu)。 我可以使用任何IP地址SSH隧道通过服务器。 但是,我设置的任何ssh隧道总是只显示一个IP地址到最终的目标站点。
我–ssh到IP1 – > |服务器| —-> http:// whatismyip.com(显示IP1)
我–ssh到IP2 – > |服务器| —-> http:// whatismyip.com(显示IP1)
我–ssh到IP3 – > |服务器| —-> http:// whatismyip.com(显示IP1)
如何configuration服务器,以便当我SSH隧道到IP1时,其出站IP是IP1。 而当我SSH隧道到IP2,其出站IP是IP2?
我想要的是:我–ssh到IP1 – > |服务器| —-> http:// whatismyip.com(显示IP1)
我–ssh到IP2 – > |服务器| —-> http:// whatismyip.com(显示IP2)
IP位于不同的子网(实际上是不同的类)。
您用来连接到SSH服务器的IP地址与您以您的名义启动出站连接时使用的SSH的IP地址无关。
通过隧道传输的数据包的源地址将取决于SSH服务器的路由表和默认网关。
如果你所有的addreses都在同一个子网中,我不相信有什么办法可以用ssh设置源地址。
作为替代,我相信你可以设置OpenVPN的多个实例,每个实例都有自己的tun和ip地址范围。 然后为来自每个VPN实例的数据包设置不同的NAT规则。
这是一个肮脏的解决scheme,可以导致问题。
> iptables -t nat -A POSTROUTING -j SNAT --to IP2 > > so > IP1 ---> IP2 > IP2 ---> IP2 > IP3 ---> IP2
如果你需要改变,并没有任何其他的iptables规则,只需重新启动iptables,比一切都应该刷新。
我有和你一样的麻烦,而且这是我能find的最好的。
这不是一个隧道问题。 如果你在服务器和SSH上(这就是你如何build立一个隧道,对吗?),你会看到这些隧道是使用相同的IP地址设置的。
这是一个TCP路由问题。 如果你运行netstat -rn ,你会看到你的路由表。 最有可能的是,您将所有数据包路由到相同的接口 – 您的默认路由。 您需要具有比默认路由更高优先级的特定路由。
对不起,这不是答案 – 我希望能够附加一个评论,而不是我刚刚到这个网站。
我只是想补充说,我听说可以设置哪个接口用于每个shell用户(UID)的传出stream量。 不完全确定,我试图弄清楚自己,因为它已经很长一段时间了,我想用我的VPS上的3个传出的IP(没有设置专用的代理软件)。
您可以为每个IP添加不同的用户,并在他们的用户ID上匹配他们:
useradd IP1 iptables -t nat -m owner --uid-owner IP1 -A POSTROUTING -j SNAT --to IP1
用户IP1现在总是使用IP1,甚至槽ssh。