为了通过 ssh 进入计算机,我需要连接到其 Cisco AnyConnect 兼容 VPN(openconnect)服务器。
我可以毫无问题地做到这一点,但我希望仅使用 vpn 路由 ssh 流量。主要是因为我希望能够使用远程桌面访问我的计算机,而连接到 vpn 时我无法做到这一点。
这可能吗?怎么办?
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.1.9.1 0.0.0.0 UG 0 0 0 eth0
10.1.9.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
128.143.1.0 0.0.0.0 255.255.255.0 U 0 0 0 vpn0
128.143.20.85 0.0.0.0 255.255.255.255 UH 0 0 0 vpn0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.35.48.194 10.1.9.1 255.255.255.255 UGH 0 0 0 eth0
答案1
最简单的方法是更改您的路由表。
这不仅发送 SSH 流量,还会发送发送到 SSH 目标的所有流量。
当您连接 Cisco VPN 时,它可能会更改默认路由以通过您的 VPN 隧道。请尝试以下操作,使其将除发往 ssh 主机的流量之外的所有流量发送出网关而不是隧道。
MY_ROUTER=192.168.0.1
SSH_TARGET=192.168.10.12
CISCO_DEV_NAME=ppp0 # not sure what cisco call there tunnel devices check ifconfig -a when connected
# Delete the default route
sudo route del default
# Change the default route back to your router
sudo route add default gw $MY_ROUTER
# Add explicit route for ssh target to go through the tunnel
sudo route add $SSH_TARGET/32 $CISCO_DEV_NAME
我不确定当您连接 VPN 时如何自动执行此操作,我可以使用 pptp 执行此操作,但不知道如何使用 Cisco anyconnect。