DNSMasq 主要用來解決內網 DNS 域名緩存、DHCP、網絡啟動和路由通告功能芜茵,本文主要是將 DNSMasq 作為內網 DNS 使用。安裝環(huán)境為 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:監(jiān)聽地址,配置為本機 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 系統(tǒng)里該文件很可能是自動生成的缀拭,如果是自動生成的咳短,系統(tǒng)重啟,該文件的修改內容無法保存蛛淋。
$ 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