使用 DNSmasq 部署家庭网络的公共 dns 和个性化的局域网内的 dns 域名服务
我的使用场景:
软路由(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
下面介绍我的搭建步骤:
- 首先安装
DNSmasq
,我的是lede
系统,好像一开始自带了,最开始玩 lede 是 18 年下半年,不记得了,无所谓,安装什么的最简单了对吧,故略去 - 编辑配置文件
/etc/dnsmasq.conf
在文件末添加如下几行
resolv-file
是指定 DNSmasq 解析的文件
strict-order
参数是让DNSmasq
严格的从resolv.dnsmasq.conf
这个文件中寻找上游 dns 服务器
listen-address
是监听的地址,本机 127.0.0.1 和 自己所在局域网的 10.10.10.1resolv-file=/etc/resolv.dnsmasq.conf strict-order listen-address=127.0.0.1,10.10.10.1
vim /etc/resolv.conf
设置成nameserver 127.0.0.1
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
vim /etc/dnsmasq.conf
增加如下行addn-hosts=/etc/dnsmasq.hosts
- 把 Linux 系统的
/etc/hosts
拷贝过来,设置局域网内共享的自定义的域名解析服务cp /etc/hosts /etc/dnsmasq.hosts
- 编辑
/etc/dnsmasq.hosts
,在文件末尾添加个性化的自定义的域名
比如我的:10.10.10.1 home.to 10.10.10.2 k2p.to 10.10.10.3 tp.to
- 根据 DNSmasq 安装的方式的不同,来管理 DNSmasq 的进程服务。有 service 的形式的,有 /etc/init.d/dnsmasq 的形式的,有通过 systemd 来管理的。根据你的情况来 reload 配置文件 然后 restart。 必要时可以进行
dnsmasq -test
(此命令并非所有发行版都相同)来检测配置文件语法是否正确。
lede 默认的 dnsmasq 是通过 init.d 下的服务实现的:/etc/init.d/dnsmasq reload /etc/init.d/dnsmasq restart
-
这时候可以 ping 一下
home.to
,已能正确解析
本地已能正确解析 home.to 到 10.10.10.1
- 分别设置软路由和 k2p 的 dns
软路由的 lan 口 bridge 上 配置本地使用 10.10.10.1 解析域名服务
作为 ap 使用的 k2p 也在 dhcp/dns 里设置域名服务器 host 为 10.10.10.1
分别应用配置,这下接入家庭网络的有线设备和无线设备均能正确解析自定义的域名服务和公共 dns 服务
ps: 使用自定义的优质的公共 dns 服务是优化 dns 查询的第一步。
局域网内访问 home.to
局域网内访问 home.to:106
局域网内访问 tp.to:8444
end.