本文首发于我的博客,内容略有改动
原文链接:使用 Dnsmasq 自建 DNS
Dnsmasq 的功能比较多,本文介绍它的 DNS 功能。
有些 Linux 发行版中预装了 Dnsmasq, 如果没有可以通过软件管理器安装,这里不赘述。
Dnsmasq 的配置文件一般在 /etc/dnsmasq.conf
。
几个关键的参数:
port
DNS的端口resolv-file
指向另一个文件,里面定义了上游 DNS,当遇到本地的 DNS 无法解析的域名,则会向上游 DNS 进行查询listen-address
这里填写监听的 ip,如果要应用于所有的网卡可设为0.0.0.0
,或者设为指定的 ip 也可
最为重要的参数就是 address
了。
这个参数即为注册的 DNS 记录。
例如:address=/test.domain.com/192.168.1.1
Dnsmasq 比 SkyDNS (以及修改 hosts 文件的方案)强大的一点就是支持泛域名解析,例如:address=/.domain.com/192.168.1.1
会将 domain.com
下的所有子域名都解析到指定的 ip 上,另有配置的除外。
配置好以后重启一下 Dnsmasq 服务即可生效。
Dnsmasq 可以用于本机作为高级的 hosts 使用,也可搭建在国外的 VPS 上,防止 DNS 污染。
注意:CentOS7 系统中会有一个默认由 libvirtd 管理的 dnsmasq 服务和一个 systemd 管理的 dnsmasq 服务。建议使用 virsh net-autostart --disable default
命令关闭由 libvirtd 启动的 dnsmasq,通过 systemctl enable dnsmasq.service
实现开机启动。