SSH隧道与多个出站IP

我有一个分配给它的多个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。