我的使用场景:

软路由(10.10.10.1)作为家里的中心网络服务器和网关设备,本地搭建了很多服务,很多服务需要输入 host 时,如果不做 dns 域名解析,那么每次都要输入 10.10.10.1 这一串很长的字符串,很麻烦。若是在局域网中的每台机器上 各自配置 hosts 文件那也很麻烦。所以就萌生了在软路由上使用 DNSmasq 来作为本地的唯一 dns 域名解析服务的想法。而且,k2p 作为 ap 接入的路由器,在配置了 dns 地址是 10.10.10.1 后也可以实现任何接入的终端得到正确的域名解析。现在我本地的软路由、k2p、Thinkpad(7 * 24h working) 均已部署好对应的简短且个性的域名。手动doge

下面介绍我的搭建步骤:

  1. 首先安装 DNSmasq,我的是 lede 系统,好像一开始自带了,最开始玩 lede 是 18 年下半年,不记得了,无所谓,安装什么的最简单了对吧,故略去
  2. 编辑配置文件 /etc/dnsmasq.conf
    在文件末添加如下几行
    resolv-file 是指定 DNSmasq 解析的文件
    strict-order 参数是让 DNSmasq 严格的从 resolv.dnsmasq.conf 这个文件中寻找上游 dns 服务器
    listen-address 是监听的地址,本机 127.0.0.1 和 自己所在局域网的 10.10.10.1
    resolv-file=/etc/resolv.dnsmasq.conf 
    strict-order
    listen-address=127.0.0.1,10.10.10.1
  3. vim /etc/resolv.conf
    设置成 nameserver 127.0.0.1
  4. vim /etc/resolv.dnsmasq.conf
    这里设置公共 dns,我的如下(南方某城市移动家宽,顺便说一句:垃圾yidong):
    nameserver 119.29.29.29
    nameserver 223.5.5.5
    nameserver 223.6.6.6
    nameserver 8.8.8.8
    nameserver 8.8.4.4
    nameserver 180.76.76.76
  5. vim /etc/dnsmasq.conf 增加如下行
    addn-hosts=/etc/dnsmasq.hosts
  6. 把 Linux 系统的 /etc/hosts 拷贝过来,设置局域网内共享的自定义的域名解析服务
    cp /etc/hosts /etc/dnsmasq.hosts
  7. 编辑 /etc/dnsmasq.hosts,在文件末尾添加个性化的自定义的域名
    比如我的:
    10.10.10.1 home.to
    10.10.10.2 k2p.to
    10.10.10.3 tp.to
  8. 根据 DNSmasq 安装的方式的不同,来管理 DNSmasq 的进程服务。有 service 的形式的,有 /etc/init.d/dnsmasq 的形式的,有通过 systemd 来管理的。根据你的情况来 reload 配置文件 然后 restart。 必要时可以进行 dnsmasq -test (此命令并非所有发行版都相同)来检测配置文件语法是否正确。
    lede 默认的 dnsmasq 是通过 init.d 下的服务实现的:
    /etc/init.d/reload
    /etc/init.d/restart
  9. 这时候可以 ping 一下 home.to,已能正确解析
    image.png

    本地已能正确解析 home.to 到 10.10.10.1

  10. 分别设置软路由和 k2p 的 dns
    软路由的 lan 口 bridge 上 配置本地使用 10.10.10.1 解析域名服务
    作为 ap 使用的 k2p 也在 dhcp/dns 里设置域名服务器 host 为 10.10.10.1
    分别应用配置,这下接入家庭网络的有线设备和无线设备均能正确解析自定义的域名服务和公共 dns 服务

ps: 使用自定义的优质的公共 dns 服务是优化 dns 查询的第一步。

image.png

局域网内访问 home.to

image.png

局域网内访问 home.to:106

image.png

局域网内访问 tp.to:8444

end.