it-swarm.cn

将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

运行ifconfig表示我有一个新的网络接口tun0和某个IP地址。

问题:如何使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
39
axel22

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

(以下内容假设您使用的是GNU/Linux;所有Unices的基本概念都相同,但是要运行的命令的具体细节以及格式化输出的方式可能会有所不同。)

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

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中的主机(即根据 CIDR表示法 的地址192.168.122.0到192.168.122.255)通过接口virbr0;到169.254.0.0/16和10.30.0.0/24的那些将通过eth0,其他任何内容(0.0.0.0行)都将通过eth0路由到 网关主机 10.30.0.1。

46
Riccardo Murri

我不知道它是什么时候引入的,但是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.

不能选择界面,但是要关闭。

11
ugob

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

为网络管理器安装OpenConnect插件后,打开网络管理器并单击 + 左下角的图标。应该为您提供一个组合框,其中包含选项[〜#〜] vpn [〜#〜],然后可以选择OpenConnect兼容VPN

通过使用网络管理器与OpenConnect进行接口,您的路由将自动显示并帮助您连接到VPN。这对于通过VPN访问服务器特别有用,例如 FireHost 的工作方式。

2
earthmeLon

只是增加一个答案。您可以使用 -b标志并在访问时定义您的源IP。

格式+示例

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