1.dns分流
如果把dns代理设置为服务节点的dns,会造成访问某些域名访问缓慢或者无法解析的问题,在windows上可以有4种方法解决
1.服务节点的dns做cdn
综合考虑,浪费资源,且无法很好适应一些内网域名的解析
2.windows做代理,代理分为全局代理和局部代理
tun2socks技术,wfp驱动了解下,将tun网卡流量转发到本地代理,再出口到服务器。在应用层能拿到dns报文去做修改
3.使用本地dns监控报文
方案局限性很大,应该要监控0.0.0.0:53,但是大部分电脑53端口都会被占用,可以关闭ICS服务,不推荐使用
4.使用wfp驱动修改报文
在驱动层直接修改报文去做分流解析和ip分流,可以解决LSP无法抓取到dns报文的情况。推荐使用
2.应用分流
应用分流和路由模式不同,windows的路由寻找首先根据源地址,如果源地址是某网卡的地址,那么就会在这个网卡的路由中寻找合适的路由(强主机模式,windows默认是强主机模式,弱主机发送模式则会在所有路由表寻找最合适的路由),体现在代码层面上就是调用bind函数,指定本地网卡,不指定的话则会默认使用最优路由。应用分流的原理就是在驱动层(wfp)中,修改源地址为虚拟网卡的地址,且将虚拟网卡的默认路由的metric调整为最低,那么默认就是不走隧道,只有设置了分流的程序才能走上隧道(隧道拆分)
源码
https://e.coding.net/digiseq-huanrui/openvpn3/openvpn3.git
在openvpn/ovpnagent/win/下