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. 參考文件
- ofollow,noindex">dnsmasq安裝使用和體驗
- 解決dnsmasq安裝好之後主機不能解析其他域名的問題
- Dnsmasq 介紹與使用