请随意纠正我。我对此一无所知。
我正在使用 openconnect 连接到 vpn。这将创建一个设备tun0
,当我运行 时我可以看到它ip address
。我已成功将条目添加到我的路由表中,ip route add $IP_ADDR dev tun0
并且能够访问我的 vpn 上的服务器。
我想尝试使用此 vpn 连接作为我的默认路由,并且我已经看到其他帖子,例如以下两个,它们指导我执行如下命令:ip route add default via 192.168.30.1 dev mydevice
好吧,我尝试过类似的东西,但我省略了,via $IP_ADDR
因为我找不到该设备的 IP 地址:
dhclient tun0 # => outputs nothing
ip route del default
ip route add default dev tun0
...当我这样做时,似乎根本无法连接到任何服务器。如果我将tun0
使用没有虽然将其设为默认路由,但我可以根据我创建的尽可能多的路由规则访问 VPN 上的服务器。
ip route show
编辑:这是(在尝试更改默认值之前)的输出: https://pastebin.com/0X9rqgne
答案1
您需要执行三个步骤:
通过物理网关添加到 VPN 服务器的路由,以便 VPN 隧道数据包可以到达 VPN 服务器
ip route add <VPN server IP address> via 192.168.68.1
删除现有的默认路由
ip route delete default via 192.168.68.1
通过隧道添加默认路由
ip route add default dev tun0
但是,如果 VPN 服务器不将数据包转发到互联网,则添加此配置无济于事。在这种情况下,您需要说服 VPN 服务器运营商将流量转发到互联网。
VPN 服务器不将流量转发到互联网是有正当理由的。
答案2
route add -net 0.0.0.0 netmask 0.0.0.0 dev tun0
应该可以奏效。
答案3
我大学的 VPN(Cisco)强制使用拆分隧道。我能够强制所有流量通过 VPN 进行隧道传输。此答案是针对 Mac 编写的,但可能适用于所有 unix 系统。
首先我必须安装 vpnc-script,如下所述这里。您可以从以下网址获取脚本的最新版本这里。将其保存到驱动器上的某个位置,我将其保存到
/opt/local/etc/vpnc/vpnc-script
。事实证明,最新版本的脚本存在问题,导致它们无法在新版本的 MacOS(Montenery)上运行,如下所述这里解决方案是将最新版本替换为旧版本,具体为这。
正如所述这个超级用户帖子,在下载的 vpnc-script 中插入以下行以取消设置 CISCO_SPLIT_INC 变量。
# ...
# =========== script (variable) setup ====================================
# Insert this line:
CISCO_SPLIT_INC=
- 通过 openconnect 连接到 VPN,并指定要运行的脚本:
sudo openconnect --script="/opt/local/etc/vpnc/vpnc-script" --protocol=anyconnect -u <username> https://<university-domain>