動態(tài)主機配置協(xié)議(DHCP)服務器為網(wǎng)絡上的每個設備動態(tài)分配IP地址和其他網(wǎng)絡配置參數(shù)。 LAN上的DNS轉(zhuǎn)發(fā)器將對非本地域名的DNS查詢轉(zhuǎn)發(fā)到上游DNS服務器(該網(wǎng)絡外部)。 DNS緩存服務器可響應來自客戶端的遞歸請求,以便可以更快地解決DNS查詢,從而提高了對以前訪問的站點的DNS查找速度。
dnsmasq是輕型,易于配置的DNS轉(zhuǎn)發(fā)器,DHCP服務器軟件和路由器通告子系統(tǒng),適用于小型網(wǎng)絡。 Dnsmasq支持Linux,* BSD,Mac OS X以及Android。
它具有一個DNS子系統(tǒng),該子系統(tǒng)為網(wǎng)絡提供本地DNS服務器,并將所有查詢類型轉(zhuǎn)發(fā)到上游遞歸DNS服務器并緩存常見記錄類型。 DHCP子系統(tǒng)支持DHCPv4,DHCPv6,BOOTP,PXE和TFTP服務器。路由器通告子系統(tǒng)支持IPv6主機的基本自動配置。
在本文中,我們將引導您完成有關(guān)如何在CentOS/RHEL 8/7發(fā)行版上使用dnsmasq安裝和設置DNS/DHCP服務器的說明。
在CentOS和RHEL Linux中安裝dnsmasq
1. dnsmasq軟件包在默認存儲庫中可用,并且可以使用YUM軟件包管理器輕松安裝,如圖所示。
# yum install dnsmasq
2. dnsmasq軟件包安裝完成后,您需要立即啟動dnsmasq服務,并使它能夠在系統(tǒng)引導時自動啟動。 此外,使用以下systemctl命令檢查其狀態(tài)以確保其已啟動并正在運行。
# systemctl start dnsmasq
# systemctl enable dnsmasq
# systemctl status dnsmasq
在CentOS和RHEL Linux中配置dnsmasq服務器
3.可以通過/etc/dnsmasq.conf文件(包含注釋和解釋清楚的選項)來配置dnsmasq服務器,還可以將用戶定義的配置文件添加到/etc/dnsmasq.d目錄中。
默認情況下,DNS是啟用的,因此在進行任何更改之前,請確保創(chuàng)建/etc/dnsmasq.conf文件的備份。
# cp /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
4.現(xiàn)在,使用您喜歡的基于文本的編輯器打開/etc/dnsmasq.conf文件,并進行以下建議的配置設置。
# vi /etc/dnsmasq.conf
listen-address選項用于設置dnsmasq監(jiān)聽的IP地址。 要使用您的CentOS/RHEL服務器在LAN上偵聽DHCP和DNS請求,請如圖所示將listen-address選項設置為其LAN IP地址(請記住包括127.0.0.1)。 請注意,服務器IP必須是靜態(tài)的。
listen-address=::1,127.0.0.1,192.168.56.10
與上述相關(guān),您可以使用interface選項限制dnsmasq偵聽的接口(為多個接口添加更多行)。
interface=eth0
5.如果要將域(可以如下所示進行設置)自動添加到hosts文件中的簡單名稱,請取消注釋expand-hosts選項。
expand-hosts
6.要為dnsmasq設置域,這意味著只要設置的域匹配,DHCP客戶端將具有完全限定的域名,并為所有客戶端設置“域” DHCP選項。
domain=tecmint.lan
7.接下來,還如圖所示,使用服務器選項(格式為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文件中的唯一名稱服務器,來使所有查詢都發(fā)送到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 dnsmasq
192.168.56.1 gateway
192.168.56.100 maas-controller
192.168.56.20 nagios
192.168.56.25 webserver1
重要說明:本地DNS名稱也可以通過從DHCP子系統(tǒng)導入名稱來定義,也可以通過配置各種有用的記錄類型來定義。
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服務器或轉(zhuǎn)發(fā)是否工作正常,您需要使用dig或nslookup之類的工具來執(zhí)行DNS查詢。 這些工具由bind-utils軟件包提供,該軟件包可能未預先安裝在CentOS / RHEL 8上,但您可以如圖所示進行安裝。
# yum install bind-utils
16.安裝后,您可以在本地域上運行一個簡單查詢,如圖所示。
# dig tecmint.lan
或者
# nslookup tecmint.lan
17.您也可以嘗試查詢其中一臺服務器的FQDN。
# dig webserver1.tecmint.lan
或者
# nslookup webserver1.tecmint.lan
18.要測試反向IP查找,請運行類似的命令。
# dig -x 192.168.56.25
或者
# nslookup 192.168.56.25
使用dnsmasq啟用DHCP服務器
19.您可以通過取消注釋dhcp-range選項來啟用DHCP服務器,并提供可用于租用的地址范圍以及可選的租用時間,例如(對于多個網(wǎng)絡重復)。
dhcp-range=192.168.0.50,192.168.0.150,12h
20.以下選項定義了DHCP服務器將其租約數(shù)據(jù)庫保留在何處,這將幫助您輕松檢查其已分配的IP地址。
dhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases
21.要將DHCP服務器設置為權(quán)威模式,請取消注釋該選項。
dhcp-authoritative
22.保存文件,然后重新啟動dnsmasq服務以應用最近的更改。
# systemctl restart dnsmasq
如果您想與我們分享有關(guān)本指南的任何問題或想法,請使用以下的評論欄與我們聯(lián)系。