DNSMasq 域名解析配置-阿里云开发者社区

开发者社区> 开发与运维> 正文

DNSMasq 域名解析配置

简介: DNSMasq DNSMasq 主要用来解决内网 DNS 域名缓存、DHCP、网络启动和路由通告功能,本文主要是将 DNSMasq 作为内网 DNS 使用。
img_8610aa70bc6fb085471788dcdbbf780b.png
DNSMasq

DNSMasq 主要用来解决内网 DNS 域名缓存、DHCP、网络启动和路由通告功能,本文主要是将 DNSMasq 作为内网 DNS 使用。安装环境为 Ubuntu 16.04。

1. 安装

Ubuntu 安装很简单,使用自带的 APT 安装就可以了。

$ sudo apt update
$ sudo apt install -y dnsmasq

完成后,需要对配置做些修改:

$ sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
$ sudo vim /etc/dnsmasq.conf
....
resolv-file=/etc/resolv.conf
strict-order
listen-address=<host-ip>
addn-hosts=/etc/hosts.dnsmasq

需要在配置文件中新增四行,下面解释一下新增这个四行的含义:

  • resolv-file:从文件读取 DNSMasq 上游的 DNS 服务器配置。
  • strict-order:resolv-file 文件中如果指定了多个 DNS 服务器,严格安装 DNS 服务器的先后顺序查询域名。
  • listen-address:监听地址,配置为本机 IP 即可。
  • addn-hosts:从文件读取本地 DNS 域名和 IP 的对应关系,格式为 <IP> <Domain name>。其实可以把 IP 和域名的对应关系写在 /etc/hosts 文件中,DNSMasq 默认从那里读取,但如果要支持一个域名对应多个 IP,就必须使用 addn-hosts 选项了。

/etc/hosts.dnsmasq 文件内容如下:

$ cat /etc/hosts.dnsmasq
10.0.0.1 blackpiglet.com
10.0.0.2 blackpiglet.com
10.0.0.3 blackpiglet.com

修改完成后重启 DNSMasq

$ sudo systemctl restart dnsmasq.service

2. resolv.conf 设置

上面提到了 DNSMasq 是从 /etc/resolv.conf 文件中读取上游的 DNS 服务器的,所以可能要修改该文件,但是 Ubuntu 系统里该文件很可能是自动生成的,如果是自动生成的,系统重启,该文件的修改内容无法保存。

$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 10.0.0.2
nameserver 114.114.114.114
nameserver 127.0.0.1

那么我们该怎么让修改一直有效呢?这个文件是由 resolvconf.service 来负责维护的,我们可以通过修改下面这个文件来达到我们想要的效果:

$ cat /etc/resolvconf/resolv.conf.d/head 
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 10.0.0.2
nameserver 114.114.114.114

3. 参考文档

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章