OpenVPN 白名单控制

2,388 阅读2分钟

公司采用OpenVPN软件来实现VPN功能,但是实际开发的时候发现这玩意有点坑,首先是它会拦截所有的网络请求,而我们公司的网络将抖音快手列入黑名单,导致无法访问这些网站,但又有相关的开发需求需要与抖音快手对接。开发的时候总是热点和公司wifi切来切去的,因此查询相关资料解决了这个问题

首先大概了解OpenVPN的原理,它通过往公司的VPN服务器上拉取路由表,覆盖到本机的路由表,将本机的所有网络请求都按照这个路由表去进行转发,因此打开OpenVPN的配置,增加以下配置

route-nopull
route 172.19.0.0 255.255.0.0 vpn_gateway

第一行表示不要从服务端拉取路由表,由我们自己来配置哪些IP走VPN,哪些IP不走

第二行就是配置路由,我这里只需要配置一行,因为公司内网就这个地址,最后的vpn_gateway表示强制走VPN。可以根据自己的需要配置多个路由

这样配置完以后,在自己的热点下确实可以访问公司内网的数据库等中间件,不过又出现了新的问题,那就是无法访问一些公司的平台,经过测试发现,在没有上述配置的情况下,通过nslookup解析公司内网的域名是正常的,而加上上述配置以后,就无法解析域名了。对比发现是DNS服务器的原因,内网域名需要在公司DNS服务器进行解析,没有上述配置的时候,DNS解析域名的流量也会经过到达公司内网,从而能够正常解析,而增加了上述配置之后,DNS解析域名的流量不会经过公司内网,所以无法解析。也有可能是OpenVPN增加了DNS配置的原因

找到原因之后解决方式就简单了,首先尝试去看看OpenVPN能不能自定义DNS路由器,搜索后发现可以通过添加以下配置来指定可选的DNS服务器,这里配置的是公司的DNS服务器地址

dhcp-option DNS 172.19.10.4

到这里已经可以在不影响访问公司内网服务平台的情况下,绕过公司网络限制访问抖音快手的服务了

如果不知道公司DNS服务器的地址的情况下,还可以通过自己配置域名解析的方式,将需要访问的域名统统解析成IP,配置到自己的hosts文件中,也能达到目的