我正在使用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
Run Code Online (Sandbox Code Playgroud)
运行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
Run Code Online (Sandbox Code Playgroud)
Ric*_*rri 48
决定 TCP 数据包应该通过哪个接口的不是 ssh 客户端,而是内核。简而言之,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
Run Code Online (Sandbox Code Playgroud)
这意味着到 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。
小智 13
我不知道它是什么时候引入的,但是 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.
Run Code Online (Sandbox Code Playgroud)
不如可以选择界面,而是关闭。
只是添加一个答案。您可以-b在访问时使用标志并定义源 IP。
格式 + 示例
ssh -b interface-ip remote-ip
ssh -b 10.11.22.40 10.11.22.38
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
107792 次 |
| 最近记录: |