DNSMasq 域名解析配置

作者: blackpiglet | 来源:发表于2018-09-25 16:27 被阅读25次
    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. 参考文档

    相关文章

      网友评论

        本文标题:DNSMasq 域名解析配置

        本文链接:https://www.haomeiwen.com/subject/xjyloftx.html