OVPN分流

  1. 1. 说明
  2. 2. 实施
    1. 2.1. 解决
    2. 2.2. 扩展
      1. 2.2.1. OVPN 客户端路由参数
        1. 2.2.1.1. route-nopull
        2. 2.2.1.2. vpn_gateway
        3. 2.2.1.3. net_gateway
      2. 2.2.2. 问题

说明

这段时间疫情越来越严重了,今天更是将整个园区封了,还要求居家办公 3 天。
开发团队都接入公司线路远程办公,公司搭建的是 OVPN,以前人数少所以全网络流量走公司,现在人数多了速度也就下去又不好限速。
所以决定采用分流方式,让他们只有有需求的时候再走公司线路。

实施

解决

翻看 OVPN 文档发现客户端使用路由配置即可实现
在 client.ovpn 配置中加入以下配置即可实现

1
2
route-nopull
route 192.168.1.0 255.255.0.0 vpn_gateway
1
2
3
4
# 参数修改
192.168.1.0 #指定要走vpn线路的目标地址网段
255.255.255.0 #目标地址网段子网掩码
如果有多地址,就多添加几条

扩展

OVPN 客户端路由参数

route-nopull

当 OVPN 客户端配置文件 client.ovpn 里面配置此参数后,所有的网络请求都不会经过 OVPN 通道,也不会添加路由。

vpn_gateway

当 OVPN 客户端配置文件 client.ovpn 里面配置 route-nopull 参数后,如果需要指定的网络请求经过 OVPN 通道,可以通过配置 vpn_gateway 参数来实现。

1
2
route 192.168.1.0 255.255.255.0 vpn_gateway
route 10.0.5.0 255.255.0.0 vpn_gateway
net_gateway

当 OVPN 客户端配置文件 client.ovpn 里面配置此参数后,默认所有的网络请求都经过 OVPN 通道,如果需要指定的 IP 地址不经过 OVPN 通道,可以通过配置 net_gateway 参数来实现。

1
route 10.0.5.0 255.255.0.0 net_gateway

如果添加的路由条数超过 100 条(默认 100 条),可以添加 max-routes 来提高限制

1
max-routes 1000

问题

如果加入 route-nopull 参数后,发现无效果数据依然走 OVPN,可以检查下配置是否以下参数,如果可以屏蔽掉

1
2
block-outside-dns
# 通知 OVPN 客户端 "阻止使用外部的DNS"