无法通过 openconnect vpn 路由所有流量

无法通过 openconnect vpn 路由所有流量

请随意纠正我。我对此一无所知。

我正在使用 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 系统。

  1. 首先我必须安装 vpnc-script,如下所述这里。您可以从以下网址获取脚本的最新版本这里。将其保存到驱动器上的某个位置,我将其保存到/opt/local/etc/vpnc/vpnc-script

  2. 事实证明,最新版本的脚本存在问题,导致它们无法在新版本的 MacOS(Montenery)上运行,如下所述这里解决方案是将最新版本替换为旧版本,具体为

  3. 正如所述这个超级用户帖子,在下载的 vpnc-script 中插入以下行以取消设置 CISCO_SPLIT_INC 变量。

# ...
# =========== script (variable) setup ====================================

# Insert this line:
CISCO_SPLIT_INC=
  1. 通过 openconnect 连接到 VPN,并指定要运行的脚本:
    sudo openconnect --script="/opt/local/etc/vpnc/vpnc-script" --protocol=anyconnect -u <username> https://<university-domain>

相关内容