自建DNS服务器(dnsmasq),对抗DNS污染

  • 这个方案已不推荐,仅作为备份存留.
  • 域名递归解析服务属于 B 类增值电信业务资质,需要有经营许可才能对外提供服务.个人提供公共 DNS 违规.

目的

  • 搭建一个可访问个人公网DNS服务器
  • 提高DNS加载速度
  • 规避运营商的DNS劫持
  • 不影响学校内网访问
  • 简单的能上google 已有 sni 检测,已失效.

准备

  • 一台有公网IP的vps,开放了53端口(端口扫描显示开放了53端口),国内服务器违规.
  • 装的是linux系统(以 CentOS 6.4 为例)
  • WinSCP(或其他文件管理)
  • putty.exe(或者其他SSH登陆工具)

DNSmasq原理和说明

  • DNSmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络。作为域名解析服务器(DNS),dnsmasq可以通过缓存 DNS 请求来提高对访问过的网址的连接速度。
  • 通过设置DNSmasq的上游DNS地址为无污染DNS来解决运营商的DNS污染。
  • DNSmasq可以对单独的网址设置DNS服务器。对于学校内网地址设置为学校教育网的DNS解析。对于类似于youtube这种由于DNS污染没法访问的地址,可以先收集无污染的DNS地址,然后交与无污染DNS解析得到正确地址。 改host 基本已退出舞台.
  • DNSmasq再对网址提交上游DNS解析前,可以先通过本地hosts匹配。设置合适hosts可以实现科学上网。 改host 基本已退出舞台.

开始!

步骤

安装dnsmasq

  • ```
    yum install dnsmasq -y

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18

    #### 配置Dnsmasq
    * Dnsmasq的配置文件是 /etc/dnsmasq.conf .通过WinSCP加载修改。

    * [dnsmasq.conf设置项说明](http://www.jianshu.com/p/71ccc79aaa9e)
    * 此次使用的配置如下
    ```xml
    #指定给dnsmasq使用的hosts
    addn-hosts=/etc/dnsmasq.host
    #不使用/etc/resolv.conf(VPS默认DNS)来进行上游dns服务器解析需要配置的比较少直接写在dnsmasq.conf文件里了
    no-resolv

    #上游DNS地址这里为腾讯DNS和中科大DNS
    server=119.29.29.29
    server=202.141.162.123
    server=/google.com/202.141.162.123
    #这一行是针对学校内网访问,学校内地址使用学校内网DNS。具体地区调整。
    server=/.edu.cn/202.141.162.123
  • 上游DNS推荐
    这里需要在VPS上测试各个DNS后决定。

    • 常用靠谱DNS
      阿里DNS 223.5.5.5 223.6.6.6
      114DNS 114.114.114.114
      腾讯DNS 119.29.29.29
      V2EX DNS 199.91.73.222 178.79.131.110(访问苹果商店有buff加速)
    • 高校DNS 几乎不再对外提供 DNS 服务.
    • 无污染DNS
      目前比较稳定的只有中科大DNS和一些自建的小型DNS。小型DNS通过反带来访问google等,会带来一些隐私和安全风险,还是推荐自建DNS/hosts访问。
      中科大DNS
      202.38.93.153 (教育网)
      202.141.176.93 (中国移动)
      202.141.162.123 (中国电信)
    • 其他DNS请自行GOOGLE
  • 千万注意!!! 配置文件中有listen-address配置,网络大多数教程中有listen-address=127.0.0.1这是指Dnsmasq只服务于本机的DNS请求。如果需要搭建公网DNS服务,这个绝对不能有!!

创建/修改/etc/dnsmasq.host文件

  • 一些常用去广告hosts/科学上网hosts的内容,
    具体不多说hosts科学上网是一天比一天死的快。没有找到靠谱的地址推荐。自行搜索把!

重启Dnsmasq服务

  • ```xml
    sudo service dnsmasq restart
    1
    2
    3
    #### 测试53端口
    * ```xml
    netstat -tunlp|grep 53
  • 如果正常应该如下
    1
    2
    3
    4
    [root@VM_27_70_centos ~]# netstat -tunlp|grep 53
    tcp 0 0 0.0.0.0:53 0.0.0.0:* LIST EN 4226/dnsmasq
    udp 0 0 0.0.0.0:53 0.0.0.0:* 4226/dnsmasq

    修改本地DNS地址

  • 这个不多说了,不会的自行google了。。

结束语
创建完了,本地DNS快多了,访问淘宝再也没有了牛皮癣。

参考文献

http://blog.antior.cn/posts/2015_29.html
http://www.jianshu.com/p/71ccc79aaa9e
http://www.linuxdown.net/install/soft/2016/0520/5566.html
http://blog.cnwyhx.com/centos-linux-dnsmasq-install-dns/