轻量级本地/局域网DNS缓冲:DNSMASQ

这次折腾Arch,因为觉得2009.8的包都太旧了,就完全使用了网络安装。网络环境是静态IP,安装前用ifconfig、route、resolve.conf这些配置好,再运行安装程序。网络速度并不慢,使用163的源,下载都有几百K,但是看着pacman,每个包开始前都在那里挂上10来秒,觉得很不妥,有些包很小,下载过程才1秒,但要等这么久才下载,为何呢?

趁着装包,我换到另外的tty测试,比如wget g.cn,因为最近这个域名会被先转到google.cn,再转到google.com.hk,所以看着wget,每次解释域名就得等待10来秒。用w3m打开网站,也一样,在Open socket那里挂着好几秒才开。我用的是google提供的DNS 8.8.8.8,速度不至于这么慢吧,nslookup g.cn,速度很快,一秒钟内就返回了,换了几个DNS,包括本地电信的,OpenDNS的,效果都一样;又怀疑跟IPv6模块有关,跑了v6发现不通才走v4,往modprobe.conf里面禁用了ipv6模块,故障依然。

最后试着做本地的DNS Cache,安装了dnsmasq,没做什么配置,直接启动/etc/rc.d/dnsmasq start,然后resolve.conf里面写nameserver 127.0.0.1,wget马上变得迅速起来了,再看pacman,全都正常。

清空dnsmasq的缓存可给它发送个SIGHUP,如sudo killall -s SIGHUP dnsmasq。(国内的DNS常常收到GFW污染,缓冲了受污染的DNS记录,出现用vpn连出去后上不了某些网站的情况)

以前没留意过本地DNS缓冲有这么大影响,不知道会不会跟最近国内的网络环境有关。

文章分类 Unix/Linux 标签: , , , , ,

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*