我正在尝试与我的 VPN 服务器建立 SSH 连接。
我正在像这样使用 openConnect 连接 VPN
echo PASS | sudo openconnect --juniper https://example/ -u user --passwd-on-stdin
这将根据我的route -n
结果
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 tun0
0.0.0.0 192.168.1.254 0.0.0.0 UG 100 0 0 enp3s0
151.151.91.171 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
151.151.91.9 192.168.1.254 255.255.255.255 UGH 0 0 0 enp3s0
161.251.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp3s0
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enp3s0
我可以 ssh 到我的目标,在我的例子中
ssh [email protected] -p 22
有用!
但,
因为我需要将流量更改为 enp3s0,所以我将使用此命令(我正在添加 vpn-slice)
echo PASS | sudo openconnect --juniper https://example/ -u user --passwd-on-stdin -s 'vpn-slice 192.168.1.92'
但是现在我无法 ssh 到我的目的地,它只会挂起
我的路线也改为这样
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 enp3s0
0.0.0.0 192.168.1.254 0.0.0.0 UG 100 0 0 enp3s0
151.151.0.4 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
151.151.0.4 0.0.0.0 255.255.255.255 UH 1 0 0 tun0
151.151.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
151.151.0.5 0.0.0.0 255.255.255.255 UH 1 0 0 tun0
151.151.91.9 192.168.1.254 255.255.255.255 UGH 0 0 0 enp3s0
161.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp3s0
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enp3s0
192.168.1.92 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
我尝试使用-b
ssh 选项,例如, 但没有结果ssh -b 151.151.91.179(local IP4) [email protected](destination) -p 22
问题
当我通过 SSH 连接到目的地时,如何选择 tun0 路由
答案1
没有vpn-slice
中,你写道,你的目标主机有一个 IP 地址151.151.91.91
。
但是当你调用 openconnect 时和vpn-slice
, 你没有将流量路由到该主机通过VPN:
echo PASS | sudo openconnect --juniper \
https://example/ -u user --passwd-on-stdin -s 'vpn-slice 192.168.1.92'
作为你展示了,你的路由表不含151.151.91.91
一个通过 VPN向目标 () 发送流量的条目...因此,当您尝试使用 连接到它时ssh
,该流量将通过您的常规网络适配器,并且不会到达任何地方。
如果您想vpn-slice
通过 VPN 发送此主机的流量(且仅此主机),那么您需要告诉它:
echo PASS | sudo openconnect --juniper \
https://example/ -u user --passwd-on-stdin -s 'vpn-slice 151.151.91.91'
我建议添加-v
and/or--dump
标志,以便vpn-slice
更好地了解其工作原理。如果您认为文档中应该改进或澄清某些具体内容,请在 Github 上提交问题或 PR。
(我写VPN 切片。