2012年9月20日星期四

Mac配置Dnsmasq自动获取被屏蔽网站的DNS

使用前提:有一个虚拟主机(EC2...);有openvpn,pptp等服务已经运行;有一台mac;
背景:GFW已经开始污染来自所有外部的DNS服务的返回结果,例如著名的8.8.8.8,8.8.6.6都已经无法针对twitter等网站返回正确的DNS。

1. 使用port安装dnsmasq(注:port的使用见之前的博客文章)
>sudo port install dnsmasq
2. dnsmasq默认安装在/opt/local/下,配置文件在/opt/local/etc/dnsmasq.conf;Dnsmasq启动请直接执行:sudo launchctl load -w /Library/LaunchDaemons/org.macports.dnsmasq.plist  (这个plist文件已经生成完毕)。启动之后netstat -na|grep LIST,发现53(dns)端口已经开始监听了。(注:修改配置文件需要unload之后在load一次)
3. 配置你的EC2主机,在EC2上安装dnsmasq。(我的是ubuntu,直接apt-get install即可)并且配置该DNS的解析走默认的amazon的DNSserver。这样我们就在EC2上启动了一个DNS服务;
4. 将你的EC2的主机的外网IP设置到你的vpn的路由表里,使53的DNS服务也从vpn路由出去,而不要通过直接连接的形式(直连也被污染)
5. 配置mac本地的Dnsmasq的配置文件,cp /etc/resolv.conf /etc/resolv.dnsmasq.conf拷贝你的本地DNS配置,然后修改dnsmasq的配置文件,设置:resolv-file=/etc/resolv.dnsmasq.conf
6. 设置你要解析的host:
server=/twitter.com/xxx.xxx.xxx.xxx(这里写你的EC2的外网IP)
...
7. 修改你当前网卡的DNS设置:修改到127.0.0.1
8. 删除之前配置的hosts
9. nslookup,可以看到twitter.com的host已经正常解析,无需配置hosts文件了。

没有评论:

发表评论