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 | 128.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 | route-metric 150 |
其中route-metric
用以配置虚拟线路的跃点数。(同样可配置虚拟网卡的跃点数,防止自动跃点导致主路由总跃点数大于VPN
路由)
之后在主出口设备上为IPV4
协议栈配置一个比虚拟网卡小的跃点数即可(网卡&网关)。
此时对外网的访问会有net_gateway
与vpn_gateway
两条路由,而net_gateway
被我们配置了较小的跃点数,会作为出口。同时由于路由记录齐全,绑定在VPN
虚拟网卡IP
上的连接可以从虚拟网卡直接通过VPN
访问外网。
缺点
由于跃点配置不具有强制性,别有用心的软件可以探测到出口IP