DNSMasq 域名解析配置

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. 參考文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章