原本以为是我pdnsd配置有问题,查看配置帮助的时候,突然想到会不会是被iptabls给阻止了,所以就把iptables给关掉,再测试就正常了,再开iptables,又是25秒左右...
iptables我已经把tcp和udp的53端口都打开了,netstat查看pdnsd占用的端口,也仅仅只是53端口而已
然后用iptables日志跟踪,没找出什么特别的地方,然后测试了几种google到的iptables规则也是不行
我原本的规则是
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
照理说也没问题,但速度就是超慢...
通过排除法,确定是INPUT链阻止了某个(些)tcp协议端口
最后想到windows 7上有自带监视网络连接TCP连接的,在客户端上监视,结果发现打开浏览器的时候会访问DNS服务器的80端口!!!80端口??
添加
iptables -A INPUT -p tcp -m multiport --dport 53,80 -j ACCEPT
测试...秒开...
想到刚用日志跟踪的时候确实是看到有80端口的连接被阻止,但想说80端口和DNS服务器没半毛钱关系,所以没在意,结果既然...
为什么会访问DNS服务器的80端口呢??
--
智慧子使父亲喜乐。愚昧人藐视母亲。
----箴言 十五章20节
--
我在DNS服务器上查看80端口到底是什么服务...结果当然是没任何服务...
在客户端上用namebench测试,本地DNS的平均响应时间是45.27ms最小1.9ms最大3500ms(被墙的网站),DNS解析速度也不慢哦...
然后在客户端上用抓包工具分析,客户端只是发送空内容到DNS的80端口,然后看到这一条记录
Header checksum: 0x0000 [incorrect, should be 0x64b1 (may be caused by
"IP checksum offload"?)]
倒是有可能...不过难道客户端检测DNS服务器是否存在是可以在DNS服务器上配置的??之前用djbdns的时候并没有打开80端口啊,当时客户端并没什么问题,而且查看了pdnsd.conf的帮助文件,uptest也是针对服务器的啊...
server {
label= "myisp";
ip = 202.96.128.166,202.96.128.86;
timeout=3;
uptest=if;
interface=eth0;
interval=10m;
purge_cache=off;
edns_query=yes;
}
> --
Name: quit.mydomain.com
Address: 192.168.1.2
然后想到配置文件里有
rr {
name=*.mydomain.com;
a=192.168.1.2;
}
想说应该是这个泛解析导致的,可能是启动的时候访问哪个不存在的域名,所以直接指向DNS服务器地址了
把这条配置注释掉并重启pdnsd服务,然后把iptables里的80端口也关掉
在客户端nslookup测试正常后,再测试浏览器...终于秒开了...