我正在使用openvpn
以下配置连接到 VPN 服务器:
remote openvpn.vpn.domain.tld
port 1194
proto udp
dev tun
client
auth-user-pass login.conf
keepalive 10 60
运行后openvpn /etc/openvpn/client/myconf.conf
,输出ip route
如下:
default via 192.168.1.1 dev wlp2s0 src 192.168.1.25 metric 303
129.31.0.0/16 via 129.31.250.1 dev tun0
129.31.250.0/24 dev tun0 proto kernel scope link src 129.31.250.111
146.169.0.0/16 via 129.31.250.1 dev tun0
146.179.0.0/16 via 129.31.250.1 dev tun0
155.198.0.0/16 via 129.31.250.1 dev tun0
172.16.0.0/12 via 129.31.250.1 dev tun0
192.168.1.0/24 dev wlp2s0 proto kernel scope link src 192.168.1.25 metric 303
这会通过 VPN 重定向部分流量,这通常足以满足我的目的,但有时我想重定向全部互联网流量。我知道配置redirect gateway def1
中的选项openvpn
或多或少可以做到这一点,但我想要一个更灵活的手动解决方案。我认为通过以下方式添加默认路由:
ip route add default via 129.31.250.1 dev tun0
会这样做,但是当我发出该命令时,我的浏览器无法再加载网站,所以我认为它出了问题。有人知道问题可能出在哪里吗?
编辑:不知何故,使用0.0.0.0/1
而不是default
似乎解决了问题......如果有一个原因,我仍然有兴趣了解它。
答案1
使用“0.0.0.0/1”而不是“默认”并不能解决问题。最好的情况是,它隐藏了它。
问题是,如果您将默认路由设置到隧道中(没有到 VPN 端点的更具体的路由),您也会更改openvpn
用于连接到 VPN 远程端点的路由。换句话说,openvpn 不再知道如何到达远程 VPN 端点。
您需要设置到远程 VPN 提供商 ( openvpn.vpn.domain.tld
) 的静态路由,以通过原始的非 VPN 互联网连接。
例如,假设在接口上wlp2s0
:
ip route add openvpn.vpn.domain.tld dev wlp2s0
顺便说一句,您可能还需要为您的 ISP 网络和/或他们为您提供的任何基本服务(例如 DNS、邮件服务)设置一条(或多条)路由,以通过该连接。您的 ISP 可能只向他们拥有或知道其下游的 IP 地址提供这些服务(即不向世界另一端的某些 VPN 提供商拥有的随机 IP 地址)。