将 ssh 与特定网络接口结合使用

将 ssh 与特定网络接口结合使用

我用来openconnect连接VPN。输入我的凭据后,我得到以下信息:

POST https://domain.name/...
Got CONNECT response: HTTP/1.1 200 OK
CSTP connected. DPD 30, Keepalive 30
Connected tun0 as xxx.xxx.xxx.xxx, using SSL
Established DTLS connection

运行显示我有一个具有特定 IP 地址的ifconfig新网络接口。tun0

问题:如何ssh仅使用网络接口tun0才能访问该专用网络上的计算机?

编辑:

我的网络配置(route -n)似乎是这样的:

172.16.194.0    0.0.0.0         255.255.255.0   U     0      0        0 vmnet8
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
172.16.25.0     0.0.0.0         255.255.255.0   U     0      0        0 vmnet1
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
0.0.0.0         192.168.0.1     0.0.0.0         UG    100    0        0 eth0

答案1

决定 TCP 数据包应该通过哪个接口的不是 ssh 客户端,而是内核。简而言之,SSH 要求内核打开到某个 IP 地址的连接,内核通过查询路由表来决定使用哪个接口。

(下面假设您使用的是 GNU/Linux;所有 Unices 的一般概念都是相同的,但要运行的命令的细节和输出格式化的方式可能会有所不同。)

您可以使用以下命令显示内核路由表 路线-n和/或 ip路由显示

OpenConnect应该已经为接口添加了一行tun0;与该线路匹配的任何地址的连接都将通过该接口路由。例如,route -n在我的笔记本电脑上运行时,我得到以下输出:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.30.0.1       0.0.0.0         UG    0      0        0 eth0
10.30.0.0       0.0.0.0         255.255.255.0   U     1      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

这意味着到 192.168.122.0/24 中的主机(即地址 192.168.122.0 到 192.168.122.255)的连接根据CIDR 表示法) 网络将通过接口路由virbr0;那些到 169.254.0.0/16 和 10.30.0.0/24 的将通过eth0,而其他任何东西(0.0.0.0 线)将通过 eth0 路由到网关主机10.30.0.1。

答案2

我不知道它是什么时候引入的,但是 RHEL7 上的 OpenSSH 客户端的联机帮助页中有这样的内容:

 -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.

不如能够选择界面,但也接近了。

例子:

ssh -b interface-ip remote-ip
ssh -b 10.11.22.40 10.11.22.38 

答案3

如果您使用网络管理器来管理 Internet 连接(这是许多系统上的默认管理器),您可能需要同时安装openconnectnetwork-manager-openconnect

为网络管理器安装 OpenConnect 插件后,打开网络管理器并单击+左下角的图标。应该给你一个带有选项的组合框VPN然后能够选择OpenConnect 兼容 VPN

通过使用 Network Manager 与 OpenConnect 交互,您的路由将自动显示并帮助您连接到 VPN。这对于通过 VPN 访问服务器特别有帮助,例如如何消防主机做事。

相关内容