在 Linux 上通过特定的传出 IP 地址建立传出网络连接

在 Linux 上通过特定的传出 IP 地址建立传出网络连接

我有一台 Ubuntu (18.04) Linux 服务器,主网络接口eth0,它分配了 2 个 IP 地址(通过systemd-networkd)。ip route路由细节非常简单,只需通过 IP1 发送所有传出内容。但是有时我需要建立来自另一个 IP 地址 IP2 的传出连接(即 ssh 连接)。我可以更改整个服务器的默认路由,但有没有更好的方法?我可以运行magiccommand --use-ip=$IP2 ssh whatever

我在机器上有 root 权限。我尝试了 firejail,但它出错了Error: the software is not supported for /31 networks?!我想通过 ssh 进入另一台服务器,该服务器只允许来自 IP2 的 SSH 连接,而不允许来自 IP1 的 SSH 连接。

答案1

足够新的版本ssh-B bind_interface-b bind_address选项。

Ubuntu 18.04 的 ssh可能只有-b bind_address这里需要的选项。因此,要在连接时使用 IP2 作为源 IP 地址,而不是路由提示的默认 IP 地址,可以执行以下操作:

ssh -b $IP2 whatever

答案2

如果你有多个接口,你可以绑定到特定接口或 IP 地址。这需要应用程序支持。支持它的应用程序通常有命令行参数。对于使用哪些命令行参数没有标准。

对于sshman ssh则说:

 -B bind_interface
         Bind to the address of bind_interface before attempting to connect to the destination host.  This is only useful on systems with more than one
         address.

 -b bind_address
         Use bind_address on the local machine as the source address of the connection.  Only useful on systems with more than one address.

因此您可以使用接口或 IP 地址。

相关内容