通过Dnsmasq自建干净的DNS服务

/ 45评 / 33

不晓得为撒,用网上的一些公共DNS服务的时候,总是莫名其妙的有些网站无法解析,有时候114能解析,阿里DNS不行或者腾讯DNS不行,导致总是来回切换DNS,很是烦心。

于是就想着自己搭建一个DNS服务会不会好一点?网上搜了一下,好像很复杂的样子,一直就没动手,但是今天试了下,发现出奇的简单,体验了一番,感觉效果良好。

首先你要有一个VPS,质量不用太好,我在我美国的64M内存的VPS上面完美安装,看了下内存32M应该也是可以的。

如果你对解析速度要求比较高,建议是用亚洲的VPS,甚至用国内VPS中转也是可以的,但是成本就略高了点,还是根据自己需求DIY吧。

安装Dnsmasq

yum install dnsmasq -y 
service dnsmasq start 

配置Dnsmasq

Dnsmasq的配置文件是 /etc/dnsmasq.conf,编辑成如下格式:

需要注意的一点是,检查一下no-hosts前面是不是已经有了#号,默认的情况下是有的,dnsmasq 会首先寻找本地的 hosts 文件再去寻找缓存下来的域名, 最后去上游dns 服务器寻找。

一般搭建DNS服务,可以允许所有用户使用你的DNS服务,即listen-address默认注释掉即可,如果你不想所有用户都使用你的DNS服务,可以在listen-address后面加上你指定的IP地址,如:

listen-address=listen-address=192.168.1.123,127.0.0.1

修改Dnsmasq上游DNS服务器

编辑 /etc/resolv.conf ,参考如下:

nameserver 8.8.8.8
nameserver 4.4.4.4

启动Dnsmasq并加入启动项

chkconfig dnsmasq on
/etc/init.d/dnsmasq restart

执行 netstat -tunlp|grep 53 可以查看Dnsmasq是否有正常启动

剩下的就是修改你本地的DNS就可以了。

提供一个我搭建好的DNS

63.223.104.179 (美国)

仅供测试,不保证永久可用

45条回应:“通过Dnsmasq自建干净的DNS服务”

  1. 关关说道:

    请问自建dns以后可以上草榴吗……?

  2. 雨落无声说道:

    这个方法会产生一个很明显的问题。就是带CDN的网站,你用国外的DNS会解析出其国外节点的IP,访问速度会比以前慢。最好加一个ChinaIP和 ChinaDNS的判断。 😳 评论框表情好评 😉 😆 😛

  3. 穹庐说道:

    没用的,自建dns的请求只要经过GFW就会被篡改。不信你可以从国内向你自建的这个ip查询一下google/fasebook的IP,肯定会被篡改的。

    解决的办法是使用53端口之外的端口。
    在 /etc/dnsmasq.conf里加上 port=5834(随便一个53以外的端口) 😉

    • Tokin说道:

      @穹庐 soka,怪不得我在我的DNS上设置了可解析正确google ip的操作,本地却没效果。。。我改一下再试试

      • 穹庐说道:

        @Tokin 记得你vps上改了dns端口,本地查询的时候就不能用原来的53端口了,得用“IP+你的自定义端口”的形式。

        window下向自定义端口的dns服务器发起查询的话推荐用unbound 🙄

    • 无名说道:

      @穹庐 其实,最稳妥的办法是加密DNS流量。只要是明文的,GFW就能劫持篡改。可用 stubby 加密DNS流量。

  4. 九州套图说道:

    简约不简单,大气有内涵!

  5. benzBrake说道:

    你是不是换过域名?

  6. 不点儿说道:

    发出来,小心查水表, 😈 又换主题了

  7. 行星说道:

    如果使用自建DNS 是不是就可以访问google了? 然而我用了上面您分享的DNS 却还是不能访问。。。。 🙂

  8. Jimmeh说道:

    主题顶部的按钮的文字写成“HOEM”了 😀

  9. Q先生说道:

    我发现最近好像很多人都开始自己搭建DNS了,而我还在用公共DNS 😕

  10. 洃少说道:

    改的真像一个笔记本了

发表评论

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