openvpn作为备用线路的路由配置
2023-05-20 16:35:36

Openvpn提供虚拟网卡连接到远程网络并且默认作为出口网卡,在windows上利用Openvpn作为备用出口较为复杂

一般方案

网上提到的方式大多为使用 route-nopull 配置禁止远程下发路由数据,之后手动配置相应的路由表

缺陷

该方法具有可行性,但需要在配置中手动加入指定路由信息

例如:

1
route x.x.0.0 255.255.0.0 vpn_gateway

想实现的方案

个人对该备用线路的需求是:手动绑定到该网卡或其他线路无法通联的情况下把虚拟网卡作为出口。

例如 curl --interface 或使用proxifier指定出口网卡,亦可建立一个sock5代理绑定在虚拟网卡上

实现方法

经了解openvpn创建了

1
2
128.0.0.0 128.0.0.0 
0.0.0.0 128.0.0.0

这两个网段的路由记录,而默认出口只有0.0.0.0/0的路有记录,vpn的前缀优先级高于默认网关,这使得流量会优先使用VPN作为出口且实现了全网段的路由

我们可以照着该思路将0.0.0.0/0拆成4个网段添加路由使主线路的路由具有更高优先级,也可以为主路由同样添加0.0.0.0/1,128.0.0.0/1的路由记录并配置更低的跃点数。我这里选择方案2

在配置中加入了

1
2
3
route-metric 150
route 128.0.0.0 128.0.0.0 net_gateway
route 0.0.0.0 128.0.0.0 net_gateway

其中route-metric用以配置虚拟线路的跃点数。(同样可配置虚拟网卡的跃点数,防止自动跃点导致主路由总跃点数大于VPN路由)

之后在主出口设备上为IPV4协议栈配置一个比虚拟网卡小的跃点数即可(网卡&网关)。

此时对外网的访问会有net_gatewayvpn_gateway两条路由,而net_gateway被我们配置了较小的跃点数,会作为出口。同时由于路由记录齐全,绑定在VPN虚拟网卡IP上的连接可以从虚拟网卡直接通过VPN访问外网。

缺点

由于跃点配置不具有强制性,别有用心的软件可以探测到出口IP

Prev
2023-05-20 16:35:36
Next