首先,宽带路由器是一种NAT的原理,分为LAN、WAN口,就有2个IP,LAN提供局域网网关IP,WAN口提供来连接Internet,当路由器拨上号后,会从电信或者网通、铁通上获取2个DNS,这个和本机自己ADO.NET设置的IP没有什么关系,这个DNS基本上都是电信或者网通、铁通认为能够正常解析的DNS IP。
接下来讲讲当使用宽带路由器的PCADO.NET设置DNS IP为LAN IP的时候,DNS的工作原理:DNS请求包--->LAN IP--->真正的DNS IP(WAN口得到的主DNS IP);
而当PC设置为当地的公网DNS IP的时候,DNS的工作原理:DNS请求包--->真正的DNS IP(PC上设置的主DNS IP)。
从以上可以看出区别:使用代理的时候,要多出一个步骤,ADO.NET设置数据包先被发送到了宽带路由上,再有路由器将请求包发到目的DNS IP(这里有封包和解包的过程);而不使用代理的时候,DNS数据包被直接发送到目的DNS IP进行解析。#t#
下图的客户端配置中,服务端为ADSL接入,申请的动态域名为server.iplink.com.cn,此时客户端如果没有配置DNS,则VPN拨号链接会因无法解析服务端的ADO.NET设置动态域名而造成链接异常,如下图的test链接中会话状态始终为关闭状态。
内网实行DHCP分配IP地址,每台PC的TCP/IP属性均设为自动获取IP,此时由于PC本身并未设置自身的公网DNS,其自动获取时所分的一定是路由器上预先设置的公网DNS,如果此时HiPER上未设DNS则内网PC即便能ADO.NET设置够分得地址也是无法打开网页的,就是因为在封包解包的时候由于代理的原理使得实现域名解析的工作不是很稳定,才会造成有时能够解析有时候不能解析的问题,所以我们建议用户为了网络的稳定性和快速最好直接在PC和路由器上设置公网DNS,不建议使用路由器的DNS代理功能。