首頁 > 軟體

輕量級域名解析伺服器之dnsmasq的介紹與部署

2022-07-19 18:04:54

1、dnsmasq的簡介

dnsmasq提供DNS快取和DHCP服務功能。作為域名解析伺服器(DNS),dnsmasq可以通過快取DNS請求來提高對存取過的網址的連線速度。作為DHCP伺服器,dnsmasq可以用於為區域網電腦分配內網ip地址和提供路由。DNS和DHCP兩個功能可以同時或分別單獨實現。dnsmasq輕量且易設定,適用於個人使用者或少於50臺主機的網路。此外它還自帶了一個PXE伺服器。

2、dnsmasq的主要作用

  1. 將Dnsmasq作為本地DNS伺服器使用,直接修改電腦的本地DNS的IP地址即可。
  2. 應對ISP的DNS劫持(反DNS劫持),輸入一個不存在的域名,正常的情況下瀏覽器是顯示無法連線,DNS劫持會跳轉到一個廣告頁面。先隨便nslookup 一個不存在的域名,看看ISP商劫持的IP地址。
  3. 智慧DNS加快解析速度,開啟/etc/dnsmasq.conf檔案,server=後面可以新增指定的DNS,例如國內外不同的網站使用不同的DNS。
    國內指定DNS
    server=/cn/114.114.114.114
    server=/taobao.com/114.114.114.114
    server=/taobaocdn.com/114.114.114.114
    國外指定DNS
    server=/google.com/223.5.5.5
  4. 遮蔽網頁廣告,將指廣告的URL指定127這個IP,就可以將網頁上討厭的廣告給去掉了。
    address=/ad.youku.com/127.0.0.1
    address=/ad.iqiyi.com/127.0.0.1
  5. 指定域名解析到特定的IP上。這個功能可以讓你控制一些網站的存取,非法的DNS就經常把一些正規的網站解析到不正確IP上。
    address=/www.baidu.com/123.123.123.123
  6. 管理控制內網DNS,首先將區域網中的所有的裝置的本地DNS設定為已經安裝Dnsmasq的伺服器IP地址。然後修改已經安裝Dnsmasq的伺服器Hosts檔案:/etc/hosts,指定域名到特定的IP中。
    例如想讓區域網中的所有使用者存取www.freehao123.com時跳轉到192.168.0.2,新增:192.168.0.2 www.freehao123.com在Hosts檔案中既可,整個過程也可以說是“DNS劫持”。

3、dnsmasq的解析流程

  • dnsmasq先去解析hosts檔案;
  • 再去解析/etc/dnsmasq.d/下的*.conf檔案;
  • 上面這些檔案的優先順序要高於dnsmasq.conf,我們自定義的resolv.dnsmasq.conf中的DNS也被稱為上游DNS,這是最後去查詢解析的。

如果不想用hosts檔案做解析,我們可以在/etc/dnsmasq.conf中加入no-hosts這條語句,這樣的話就直接查詢上游DNS了;
如果我們不想做上游查詢,就是不想做正常的解析,我們可以加入no-reslov這條語句。

4、dnsmasq的引數及常用設定說明(/etc/dnsmasq.conf )

1)dnsmasq經常修改的比較重要引數說明

resolv-file:定義dnsmasq從哪裡獲取上游DNS伺服器的地址, 預設從/etc/resolv.conf獲取
strict-order:表示嚴格按照resolv-file檔案中的順序從上到下進行DNS解析,直到第一個解析成功為止
listen-address:定義dnsmasq監聽的地址,預設是監控本機的所有網路卡上
address:啟用泛域名解析,即自定義解析a記錄,例如:address=/long.com/192.168.115.10 存取> > > long.com時的所有域名都會被解析成192.168.115.10
bogus-nxdomain:對於任何被解析到此IP的域名,將響應 NXDOMAIN 使其解析失效,可以多次指定,通常用於對於存取不存在的域名,禁止其跳轉到運營商的廣告站點
server:指定使用哪個DNS伺服器進行解析,對於不同的網站可以使用不同的域名對應解析。
例如:server=/google.com/8.8.8.8 #表示對於google的服務,使用谷歌的DNS解析。

2)檢視組態檔語法是否正確,可執行下列命令

dnsmasq --test

3)DNS 快取設定

要在單臺電腦上以守護行程方式啟動dnsmasq做DNS快取伺服器,編輯/etc/dnsmasq.conf,新增監聽地址:

listen-address=127.0.0.1

如果用此主機為區域網提供預設DNS,請用為該主機繫結固定IP 地址,設定:

listen-address=10.10.x.x

這種情況建議設定靜態IP

多個ip地址設定:

listen-address=127.0.0.1,10.10.x.x 

4)三個以上域名伺服器

Linux處理DNS 請求時有個限制,在 resolv.conf 中最多隻能設定三個域名伺服器(nameserver)。作為一種變通方法,可以在 resolv.conf 檔案中只保留localhost 作為域名伺服器,然後為外部域名伺服器另外建立 resolv-file 檔案。首先,為dnsmasq 新建一個域名解析檔案:

cat /etc/dnsmasq.d/resolv.dnsmasq.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

然後編輯 /etc/dnsmasq.conf 讓 dnsmasq 使用新建立的域名解析檔案:

cat /etc/dnsmasq.conf
...
resolv-file=/etc/dnsmasq.d/resolv.dnsmasq.conf
...

5、dnsmasq的部署

1)安裝dnsmasq

yum -y install dnsmasq

安裝完畢後,可以通過dnsmasq -v命令檢視版本,有版本號出來就代表安裝上了。

2)修改Dnsmasq組態檔dnsmasq.conf

修改組態檔前一定要先備份

cp /etc/dnsmasq.conf  /etc/dnsmasq.conf.bak
echo 'resolv-file=/etc/dnsmasq.d/resolv.dnsmasq.conf' >> /etc/dnsmasq.conf  #表示dnsmasq 會從這個指定的檔案中尋找上游dns伺服器
echo 'addn-hosts=/etc/dnsmasq.d/dnsmasq.hosts' >> /etc/dnsmasq.conf  #新增讀取額外的 hosts 檔案路徑,可以多次指定;也可以指定為目錄,會自動掃描此目錄下的組態檔
cat /etc/dnsmasq.conf
...
strict-order      #取消這一行的註釋,表示嚴格按照resolv.conf中的順序進行查詢
listen-address=127.0.0.1,192.168.115.120   #多個ip地址設定;如果想允許所有的使用者使用你的DNS解析伺服器,把listen-address去掉即可
...

3)修改/etc/resolv.conf檔案,並建立resolv.dnsmasq.conf和dnsmasq.hosts檔案

echo 'nameserver 127.0.0.1' > /etc/resolv.conf
yes | cp /etc/resolv.conf  /etc/dnsmasq.d/resolv.dnsmasq.conf
echo 'nameserver 8.8.8.8' >>/etc/dnsmasq.d/resolv.dnsmasq.conf
echo 'nameserver 10.10.0.120' >>/etc/dnsmasq.d/resolv.dnsmasq.conf
yes | cp /etc/hosts  /etc/dnsmasq.d/dnsmasq.hosts

resolv.dnsmasq.conf中設定的是真正的Nameserver,可以填寫各大商家提供的免費DNS地址。

4)啟動Dnsmasq

systemctl start dnsmasq             #啟動dnsmasq服務
systemctl enable dnsmasq         #設定成開機自啟動
netstat -antp|grep 53                  #檢視埠是否啟動成功

5)測試是否設定成功。

第一次查詢耗時150ms,第二次查詢耗時0ms

6、dnsmasq的使用及實現的功能

1)作為本地DNS使用

將dnsmasq作為本地DNS伺服器使用,直接修改電腦的本地DNS的IP地址即可。

ping harbor私服的域名並存取,發現可以ping通且可以正常存取

2)智慧DNS加快解析速度。

開啟/etc/dnsmasq.conf檔案,server=新增指定的DNS,例如國內外不同的網站使用不同的DNS。

cat /etc/dnsmasq.conf
...
國內指定DNS
server=/cn/114.114.114.114
server=/taobao.com/114.114.114.114
server=/taobaocdn.com/114.114.114.114
國外指定DNS
server=/google.com/223.5.5.5
...

3)遮蔽網頁廣告

將廣告的URL指定127.0.0.1這個IP,就可以將網頁上討厭的廣告給去掉了。

cat /etc/dnsmasq.conf
...
address=/ad.youku.com/127.0.0.1
address=/ad.iqiyi.com/127.0.0.1
...

4)指定域名解析到特定的IP上

這個功能可以讓你控制一些網站的存取,非法的DNS就經常把一些正規的網站解析到不正確IP上。

cat /etc/dnsmasq.conf
...
address=/www.baidu.com/123.123.123.123
...

存取www.baidu.com會發現無法存取此網站

5)管理控制內網DNS

首先將區域網中的所有的裝置的本地DNS設定為已經安裝dnsmasq的伺服器IP地址;然後修改已經安裝dnsmasq的伺服器hosts檔案:/etc/hosts,指定域名到特定的IP中。

例如:想讓區域網中的所有使用者存取www.http123.com時跳轉到10.10.0.111,新增'10.10.0.111 www.http123.com'hosts檔案中既可,整個過程也可以說是"DNS劫持"。

echo'10.10.0.111 www.http123.com' >> /etc/hosts

瀏覽器存取www.http123.com就會自動跳轉到10.10.0.111上

總結 

到此這篇關於輕量級域名解析伺服器之dnsmasq的文章就介紹到這了,更多相關輕量級域名解析伺服器dnsmasq內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com