在本文章中,我們將介紹如何在CentOS / RHEL 8/7發行版上使用dnsmasq安裝和設置DNS / DHCP服務器的教程;dnsmasq是一個小巧且方便地用於配置DNS和DHCP的工具,適用於小型網絡,它提供了DNS功能和可選擇的DHCP功能。
動態主機配置協議 ( DHCP )服務器為網絡上的每個設備動態分配IP地址和其他網絡配置參數。 LAN上的DNS轉發器將對非本地域名的DNS查詢轉發到上游DNS服務器(該網絡外部)。 DNS緩存服務器可響應來自客戶端的遞歸請求,以便可以更快地解決DNS查詢,從而提高了對以前訪問的站點的DNS查找速度。
dnsmasq是輕型,易於配置的DNS轉發器,DHCP服務器軟件和路由器通告子系統,適用於小型網絡。 Dnsmasq支持Linux,* BSD,Mac OS X以及Android。
它具有一個DNS子系統,該子系統為網絡提供本地DNS服務器,並將所有查詢類型轉發到上游遞歸DNS服務器並緩存常見記錄類型。 DHCP子系統支持DHCPv4,DHCPv6,BOOTP,PXE和TFTP服務器。 路由器通告子系統支持IPv6主機的基本自動配置。
在本文中,我們將引導您完成有關如何在CentOS / RHEL 8/7發行版上使用dnsmasq安裝和設置
DNS / DHCP服務器的說明 。在CentOS和RHEL Linux中安裝dnsmasq
1.dnsmasq軟件包是在默認存儲庫中可用,可以使用YUM包管理器輕鬆安裝,如下所示。
# yum install dnsmasq
2. dnsmasq軟件包安裝完成後,您需要立即啟動dnsmasq服務,並使它能夠在系統引導時自動啟動。 此外,使用以下systemctl命令檢查其狀態以確保其已啟動並正在運行。
# systemctl start dnsmasq
# systemctl enable dnsmasq
# systemctl status dnsmasq
在CentOS和RHEL Linux中配置dnsmasq服務器
3.可以通過/etc/dnsmasq.conf文件(包含註釋和解釋清楚的選項)來配置dnsmasq服務器,還可以將用戶定義的配置文件添加到/etc/dnsmasq.d目錄中。
默認情況下,DNS是啟用的,因此在進行任何更改之前,請確保創建/etc/dnsmasq.conf文件的備份。
#cp /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
4.現在,使用您喜歡的文本編輯器打開/etc/dnsmasq.conf文件,並進行以下建議的配置設置。
#vi /etc/dnsmasq.conf
listen-address選項用於設置dnsmasq監聽的IP地址。 要使用您的CentOS / RHEL服務器在LAN上監聽DHCP和DNS請求,如下所示,將listen-address選項設置為其LAN IP地址(記住包括127.0.0.1 ) 請注意,服務器IP必須是靜態的。
listen-address=::1,127.0.0.1,192.168.56.10
與上述相關,您可以使用interface選項限制dnsmasq監聽的接口(為多個接口添加更多行)。
interface=eth0
5.如果要將域 (可以如下所示進行設置)自動添加到hosts文件中的簡單名稱,請取消註釋expand-hosts選項。
expand-hosts
6.要為dnsmasq設置域,這意味著只要設置的域匹配, DHCP客戶端將具有完全限定的域名,併為所有客戶端設置“ domain ” DHCP選項。
domain=tecmint.lan
7.接下來,如下所示,使用server選項(以server = dns_server_ip的形式)為非本地域定義上游DNS服務器。
# Google's nameservers
server=8.8.8.8
server=8.8.4.4
8.然後,您可以使用顯示的地址選項將本地域強制為IP地址。
address=/tecmint.lan/127.0.0.1
address=/tecmint.lan/192.168.56.10
9.保存文件,並檢查配置文件語法中的錯誤,如下所示。
# dnsmasq --test
使用/etc/resolv.conf文件配置dnsmasq
10.在此步驟中,您需要通過將localhost地址添加為/etc/resolv.conf文件中的唯一名稱服務器,來使所有查詢都發送到dnsmasq 。
#vi /etc/resolv.conf
11. /etc/resolv.conf文件由本地守護程序(尤其是NetworkManager )維護,因此任何用戶進行的更改都將被覆蓋。為了防止這種情況,請使用chattr命令通過設置不可變文件屬性 (禁用對文件的寫訪問)來對其進行寫保護。
#chattr + i /etc/resolv.conf
#lsattr /etc/resolv.conf
定義DNS主機和名稱
12. Dnsmasq從/etc/hosts文件中讀取所有DNS主機和名稱,因此,如下所示添加DNS主機的IP地址和名稱對。
127.0.0.1 dnsmasq
192.168.56.10 \tdnsmasq
192.168.56.1 \tgateway
192.168.56.100\tmaas-controller
192.168.56.20 \tnagios
192.168.56.25 \twebserver1
重要說明 :本地DNS名稱也可以通過從DHCP子系統導入名稱來定義,也可以通過配置各種有用的記錄類型來定義。
13.要應用以上更改,請如下所示重新啟動dnsmasq服務。
# systemctl restart dnsmasq
14.如果正在運行Firewalld服務,則需要在防火牆配置中打開DNS和DHCP服務,以允許來自LAN上主機的請求傳遞到dnsmasq服務器。
# firewall-cmd --add-service=dns --permanent
# firewall-cmd --add-service=dhcp --permanent
# firewall-cmd --reload
測試本地DNS
15.要測試本地DNS服務器或轉發是否工作正常,您需要使用dig或nslookup之類的工具來執行DNS查詢。這些工具是由bind-utils軟件包提供的,該軟件包可能未預先安裝在CentOS / RHEL 8上,但是您可以參考如下所示進行安裝。
#yum install bind-utils
16.安裝後,您可以在本地域上運行一個簡單查詢,如下所示。
# dig tecmint.lan
OR
# nslookup tecmint.lan
17.您也可以嘗試查詢其中一臺服務器的FQDN。
# dig webserver1.tecmint.lan
OR
# nslookup webserver1.tecmint.lan
18.要測試反向IP查找,請運行類似的命令。
# dig -x 192.168.56.25
OR
# nslookup 192.168.56.25
使用dnsmasq啟用DHCP服務器
19.您可以通過取消註釋dhcp-range選項來啟用DHCP服務器,並提供可租用的地址範圍以及可選的租用時間,例如(對於多個網絡重複)。
dhcp-range=192.168.0.50,192.168.0.150,12h
20.以下選項定義了DHCP服務器將其租約數據庫保留在何處,這將幫助您輕鬆檢查其已分配的IP地址。
dhcp-leasefile = /var/lib/dnsmasq/dnsmasq.leases
21.要將DHCP服務器設置為權威模式,請取消註釋該選項。
dhcp-authoritative
22.保存文件,然後重新啟動dnsmasq服務以應用最近的更改。
# systemctl restart dnsmasqru
如果你對本教程有任何想法或疑問,請在下面留言交流討論。
PS:本文來自翻譯,文中內容有所改動,並非原文所譯。
參考資料:https://cloud.tencent.com/developer/article/1174717
閱讀更多 IT運維社區 的文章