現場(環境):CentOS7.6 套件:dnsmasq
一般在安裝DNS服務的時候都會直覺的想到bind9,
這次換一套輕量化DNS 開源軟體來試試。
#yum install dnsmasq -y
#yum install dnsmasq-utils -y
服務啟用部分的名稱是: dnsmasq
#systemctl start dnsmasq
服務部分可以先把Selinux關閉,避免影響服務運作。
Firewalld部分記得要先把相對應的53port(DNS service)打開。
#firewall-cmd --add-service=dns --permanent
# firewall-cmd --reload
Forward功能要記得開啟
#echo '1' > /proc/sys/net/ipv4/ip_forward
主要的設定檔放在/etc/dnsmasq.conf 當中,
在設定之前養成好習慣,備份一下原本的設定檔。
開始設定dnsmasq.conf
#vim /etc/dnsmasq.conf
*這邊的設定,可以直接在dnsmasq.conf當中直接寫入設定,
也可以用導引的方式,將檔案引導到dnsmasq.d/XXX.conf當中去使用。
像下面的設定就是引入所有/etc/dnsmasq.d下面的設定資料。
設定檔中 resolv-flie主要是將查詢的動作轉給這邊設定檔內的DNS主機處理。
這邊你可以預設指定到你的DNS主機去。
預設會找到/etv/resolv.conf檔案,但建議另外複製一份一樣的檔案讓這邊對應
#cp -rf /etc/resolv.conf /etc/resolv.dnsmasq.conf
#echo 'nameserver 8.8.8.8' > /etc/resolv.dnsmasq.conf
(但是若是DNS沒有打算繞到外面,這個可以不用設定)
strict-order配合resolve-file使用,
這個項目建議可以把#(註解)拿掉,設定下去會嚴格的依據resolv-file檔案中的順序從上到下進行DNS解析。
No-host的項目預設是關閉的,這個啟用的話會變成最先去找local端的host檔案。
通常與no-hosts對應的是addn-hosts設定檔部分,
這個就不是讀取/etc/hosts,而是自己定義要對應到哪個檔案去。
(這邊的格式要跟/etc/hosts的一樣)
格式範例:
Listen address表示用哪個IP提供DNS服務。
listen-address=127.0.0.1 //這樣表示用127.0.0.1提供服務,這樣只有自己可以用
listen-address=127.0.0.1,172.16.100.12 //這樣開放提供服務的IP。
都不寫就是自己監控主機上有哪些IP,然後就每個本機上的IP都提供服務。
設定檔內會有特別的網域對應DNS方法
server參數
下面的用法就是,若網域名稱內有tw的話,
PASS給168.95.1.1這DNS查詢,若是對到google. Com網域就丟給8.8.8.8查詢。
=!============
server=/tw/168.95.1.1
server=/google.com/8.8.8.8
#如果要設定反向解析的對應的話,加上.in-addr.arpa
# name queries for 192.168.3/24 to nameserver 10.1.2.3
#注意IP網段是反過來的
#server=/3.168.192.in-addr.arpa/10.1.2.3
=!============
如果不限定網域對應DNS的話,我們也可以指定全部都對到特定的DNS,
但要記得加上【all-servers】參數
all-servers表示對以下設定的所有server發起查詢,選擇迴應最快的一條作為查詢結果返回。
=!============
all-server
server=168.95.1.1
server=8.8.8.8
=!=============
address參數
這個使用方法跟server不同,這個是強制設定哪個網域會被導到哪去。
(這個設定不會再導到外面DNS)
一樣的狀況下,只要網域名稱內有tw的就都被解析成168.95.1.1.的IP位址。
網域名稱內有google.com會被解析成8.8.8.8的IP位址。
=!============
address=/tw/168.95.1.1
address=/google.com/8.8.8.8
#反向解析配合address一起使用,使用情況如下
# ptr-record=[IP位址反過來]. in-addr.arpa,[網域名稱]
=!============
以上server、address會建議另外寫到dnsmasq.d/XXX.conf設定檔中。
要測試的時候要使用nslookup、dig工具。
#yum install bind-utils
直接透過這個方法反解
NSLOOKUP方面
正向解析
# nslookup [IP位址] [DNS主機]
#nslookup
>server [DNS IP位址]
>輸入網址
反向解析
# nslookup -query=ptr [IP位址] [DNS主機]
#nslookup
>set type=ptr
>輸入IP
#nslookup [網域名稱] [DNS IP位址]
#nslookup -type=[格式] [待查詢IP位址] [DNS IP位址]
DIG方面
正向解析
# dig @[DNS IP位址] [網域名稱]
反向解析
# dig @[DNS IP位址] -x [IP位址]
現在測試 address這邊故意設定成test.com會導向127.0.0.1。
測試一下優先度的問題,到底是會先去找hosts還是以address優先。
測試結果還是以hosts為優先。
我們關閉addn-hosts功能後再次測試,會得到我們在address內的資料。
(所以在addn-hosts內的優先權高於addrss的設定,也表示只有在addn-hosts內找不到的對應主機才會運用到這邊的設定)
關於dnsmasq還有很多設定可以調整,但初步介紹就先到這邊。
參考網址:
https://www.itread01.com/content/1547553626.html
http://xstarcd.github.io/wiki/sysadmin/dnsmasq.html
(本篇完)