12月 9th, 2009用dnsmasq来代替hosts
不久前Google也出了自家的公共DNS服务,超牛逼的IP地址,8.8.8.8和8.8.4.4。我测试了一下速度,立马把用了多时的OpenDNS扔到一边了。Google突然扔出免费DNS当然免不了被竞争对手批判一番。cnbeta的几个相关测评文章我都看过了,我还是坚定用Google的DNS。
没错,GoogleDNS确实不能解决某土啬劫持,又不能给最接近你所在地的最快IP,so what?在天朝连个网站都他妈上不了还好意思谈速度。

起码GoogleDNS不会在你打错域名给你重定向,看着电信那个114就觉得恶心,OpenDNS虽然也重定向,起码没114恶心。况且国内除了几个网站还有哪些值得经常上?国外网我倒是频繁浏览(是呀,我就是装逼啊,吹啊?),南电信北网通让你不得不怀疑两点之间是不是真的直线最短。
一般对付劫持就是改hosts,指定IP,而hosts还是有它的局限性的,比如不支持通配符,对于子域名,你就得老老实实一个一个加进去,比如appspot.com,烦了,不如直接在本机建立DNS缓存服务好了,这个软件就是dnsmasq。
安装
dnsmasq这个在Ubuntu 9.10好像自带了,包“dnsmasq-base”已经安装了,不过不是默认启动的,我发现在建立共享无线网络时就自动启动了。稍微看下manpage就会用了
dnsmasq -k -C configfile
“-k”是在前台运行,方便临时运行测试然后按Ctrl+C关掉,“-C”是指定配置文件,配置文件的例子在“/usr/share/doc/dnsmasq-base/examples/dnsmasq.conf.example”文件里,描述很详细,可以复制一份出来慢慢看然后反注释相关命令。
配置
不过还是要弄成开机自动启动吧,这里还有一个包“dnsmasq”,这个不是自带的,要自己安装了,其实就是一堆配置文件
- 建立“/etc/init.d/dnsmasq”,常规的启动脚本
- 在“/etc/rcX.d”里建几个链接,开机根据runlevel自动启动
- 一份“/etc/dnsmasq.conf”,其实就是上面提到的例子“dnsmasq.conf.example”,全是注释的
- 一个空文件夹“/etc/dnsmasq.d”,自定义的附加配置可以放到这里
装完“dnsmasq”就设置开机自动启动了,需要做的是自己写个配置,写到“/etc/dnsmasq.conf”也可,不过我是在“/etc/dnsmasq.d”里建立“mydns.conf”,根据目前需要就两行
server=8.8.8.8 address=/appspot.com/74.125.155.141
第一行是dns服务器,第二行实现hosts功能,填的是顶级域名,不过对子域名也有效的,所以就不用像hosts一个一个添加了,也可以继续在下面在添加子域名的特定IP。
运行
配置好后就在网络管理器里把DNS设置成本机“127.0.0.1”,“/etc/resolv.conf”也是只设置成本机IP(当然dnsmasq也有相关的选项如何处理这个文件)。对dnsmasq的服务可以通过
sudo /etc/init.d/dnsmasq {start|stop|restart|force-reload|status}
来控制,启动后53端口默认开放了,而dnsmasq也是提供DHCP功能的,不过这个功能默认关闭就不用折腾。



02月 8th, 2010 at 10:10
win下怎么解决
[回复]
muzuiget 回复:
02月 9th, 2010 at 05:41
没办法,因为dnsmasq没有windows版
[回复]
02月 22nd, 2010 at 07:28
但是被劫持的网站还是会受到污染。
除非用IPv6。
[回复]