一:解决的问题 DNS客户端设计的目的是内网PC的DNS请求负载到外网的多条线路上面,通过对dns流量的分流达到上网流量的负载。
二:具体实现对于内网PC的dns请求,对于我们设备来说有三种情况。 1:请求的目的dns地址在dns服务器列表里面。 这种情况下我们设备会根据dns选择策略进行dns分发。 例如:线路1为电信线路配置dns为202.96.1.1 线路2为网通线路配置dns为203.5.6.5 这个时候内网pc发向电信dns服务器202.96.1.1的dns请求会被设备截获,然后根据所配置的dns选择策略进行分发,如果选择的策略是轮询,那么会一边发一个请求,如果是加权最小连接,那么这个请求就会发往连接最小的线路。所以这个pc发往电信dns服务器的请求可能会被负载到网通的dns服务器上面,这样可能会导致用户访问网站的速度比之前慢。因为电信的服务器大部分在南方,网通的服务器大部分在北方,在深圳通过网通的dns去解析某个网站,可能会返回一个北京网通的IP地址。即使从深圳网通访问北京网通传输距离上也会导致一定延时。
由于是使用的dns选择算法不管是轮询,还是加权最小连接,都会导致dns请求在各个线路之间转换,这样可能的结果就是访问同一个网站可能会有不同速度体验。
2:请求的目的dns地址不在dns服务器列表里面。 这种情况处理简单,如果不在dns服务器列表里面,dns客户端负载模块就不会进行处理,会按照普通数据包走智能路由处理。
3:请求的目的dns地址为我们设备内网口地址。 这种情况默认不支持,会导致pc无法上网。如需要支持这种应用,可以打补丁包,或者等3.6版本。
三:什么情况下使用有多条运营商线路,有线路实际使用带宽不成比例,希望通过负载均衡设备充分利用空闲带宽,这个时候需要开启dns客户端。 |