为什么要自建DNS服务器?

以联通为例,经常劫持没有ssl加密的网页(提醒各位ssl一定要部署https://freessl.org/)然后加浮窗广告甚至强制跳转到广告页面,每次DNS解析生效总是联通最慢,以及经常找不到新网站的IP地址,dns解析缓慢等问题。

如何自建DNS?

# 准备:

  • 一块可以正常使用的Raspberry pi
  • 一根网线
  • 一个可以上网的网关
  • 一台电脑(如果手机SSH你习惯也可以)
  • 一个带了脑子和手的人

# 安装Dnsmasq

不用BB,安装软件这事情你还不会吗?
sudo apt-get update
sudo apt-get install dnsmasq -y

# 配置 Dnsmasq

配置文件目录在 /etc/dnsmasq.conf

然后就可以去修改配置了吗?

在配置之前,我建议先备份配置文件以免搞炸了 :shame:
mkdir 备份
sudo cp /etc/dnsmasq.conf /home/pi/备份
然后开始愉快的修改配置文件啦 :huaji:
sudo nano /etc/dnsmasq.conf

教萌新用VIM都是屑(小声BB)

按下Ctrl(唱跳Rap篮球 :huaji: )+W搜索strict-order ( 表示严格按照 resolv-file 文件中的顺序从上到下进行DNS解析 )并且把他前面的#号砍了 :huaji:

然后Ctrl+W搜索listen-address(监听地址,为了使其他设备能用请加上树莓派内网IP) 砍掉#号并且按照如下格式配置
listen-address=127.0.0.1,你的树莓派内网ip,不会看?输入ifconfig试试。树莓派连接着两个网关的话需要再添一个内网IP

还是搜索 cache-size (缓存的条数,不够用再加)砍掉#并且将数值改成1000

桥豆麻袋!要配置上游DNS地址,默认 /etc/resolv.conf 但是每次开机会被重置,添加一条
resolv-file=/etc/pidns.conf
自定义DNS解析,类似改Host文件
address=/example.com/1.1.1.1
Ctrl+x,y,回车保存 然后我们新建一个pidns.conf
sudo nano /etc/pidns.conf
然后将如下内容加入:
nameserver 127.0.0.1
nameserver 223.5.5.5
nameserver 223.6.6.6
表示先从本地找,找不到从上游dns服务器找,这里用的阿里云DNS,可以换成:

Google DNS:8.8.8.8/8.8.4.4

114 DNS:114.114.114.114/114.114.114.115

Public DNS+ : 119.29.29.29/182.254.116.116

清华大学TUNA DNS:101.6.6.6

保存,然后重启服务
sudo service dnsmasq restart
查看服务状态:
sudo service dnsmasq status
应输出信息:
● dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
   Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-08-15 01:43:47 CST; 48s ago
  Process: 2927 ExecStop=/etc/init.d/dnsmasq systemd-stop-resolvconf (code=exited, status=0/SUCCESS)
  Process: 2999 ExecStartPost=/etc/init.d/dnsmasq systemd-start-resolvconf (code=exited, status=0/SUCCESS)
  Process: 2987 ExecStart=/etc/init.d/dnsmasq systemd-exec (code=exited, status=0/SUCCESS)
  Process: 2985 ExecStartPre=/usr/sbin/dnsmasq --test (code=exited, status=0/SUCCESS)
 Main PID: 2998 (dnsmasq)
   CGroup: /system.slice/dnsmasq.service
           └─2998 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -r /run/dnsmasq/resolv.conf -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --trust-anchor=.,2032

8月 15 01:43:47 raspberrypi dnsmasq[2985]: dnsmasq: syntax check OK.
8月 15 01:43:47 raspberrypi dnsmasq[2998]: started, version 2.76 cachesize 1000
8月 15 01:43:47 raspberrypi dnsmasq[2998]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect inotify
8月 15 01:43:47 raspberrypi dnsmasq[2998]: reading /etc/pidns.conf
8月 15 01:43:47 raspberrypi dnsmasq[2998]: ignoring nameserver 127.0.0.1 - local interface
8月 15 01:43:47 raspberrypi dnsmasq[2998]: using nameserver 223.5.5.5#53
8月 15 01:43:47 raspberrypi dnsmasq[2998]: using nameserver 223.6.6.6#53
8月 15 01:43:47 raspberrypi dnsmasq[2998]: read /etc/hosts - 5 addresses
8月 15 01:43:47 raspberrypi dnsmasq[2999]: Too few arguments.
8月 15 01:43:47 raspberrypi systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.

基本第一次打开会较慢,之后会快很多而且没有广告 自建成功√,在电脑手机的dns配置改成你树莓派的内网ip享受高速上网把!