如何在本地網路上執行自己的 DNS 伺服器
2022-01-14由 四川人在香港 發表于 農業
怎麼啟動伺服器
執行您自己的 DNS 伺服器是加快網路響應速度、減少對公共基礎設施的依賴並從主機名路由等額外功能中受益的好方法。
以下是如何使用 Dnsmasq 在 Linux 機器上設定 DNS 伺服器。
什麼是 DNS?
DNS 是將域名等
example。com
轉換為其伺服器的數字 IP 地址的系統。
這可能看起來像
127。0。0。1
。
每當您使用域名發出網路請求時,您的系統都會執行 DNS 查詢以確定它應該聯絡的伺服器地址。
這會增加您提出的每個請求的開銷。
儘管您的裝置會快取 DNS 響應,但在實際請求開始之前,對新域的訪問將導致 DNS 往返。
這發生在作業系統網路堆疊級別,作為使用者的您是不可見的。
ISP 通常執行 DNS 伺服器。
如果您在路由器和裝置上使用預設設定,則您可能依賴 ISP 的伺服器。
其他公共 DNS 伺服器可從
Cloudflare
和
等提供商處獲得
。
為什麼要執行自己的 DNS?
執行您自己的 DNS 伺服器可以讓您更好地控制您的網路。
一個常見的動機是能夠配置網路級域對映,例如
web-server
到
192。168。0。101
。
將您的路由器配置為使用您的 DNS 將導致您連線的任何裝置都能夠
192。168。0。101
透過
http://web-server
。
擁有自己的 DNS 伺服器可讓您將設定集中到一個位置,而不是
/etc/hosts
在每臺裝置上
單獨應用它們
。
它們將適用於您連線到網路的所有內容,包括無法透過其他方式自定義其路由堆疊的嵌入式硬體。
內部 DNS 伺服器還可以提高效能並提供額外的彈性層。
大規模 DNS 中斷
並非聞所未聞
;
為您與之互動的關鍵服務使用具有長期快取的自定義伺服器可以幫助您度過所選上游提供商的停機時間。
DNS 與 Dnsmasq
Dnsmasq
是一個輕量級的 DNS 伺服器,它包含在大多數 Linux 發行版中。
配置也非常簡單。
在開始之前,值得考慮一下您需要 DNS 伺服器提供哪些功能。
在本指南中,我們將介紹如何使用本地快取、一些自定義域路由以及 Google
8。8。8。8
作為我們的上游 DNS 提供商
來設定 Dnsmasq
。
路由流程如下所示:
網路路由器接收來自您連線的裝置之一的請求。
路由器將配置為使用 Dnsmasq 主機作為其 DNS 伺服器。
Dnsmasq 會檢查它是否有定義的域名路由,例如
web-server
to
192。168。0。101
。
如果請求是
http://web-server/example-page
,它將傳送
192。168。0。101
迴路由器。
當 Dnsmasq 沒有匹配的路由時,它會將 DNS 請求轉發給 Google 的
8。8。8。8
,從而在公共網際網路上啟用解析。
這確保您在使用自己的 DNS 時仍然可以訪問更廣泛的網路。
您無需在客戶端裝置上進行任何配置更改。
路由器後面的所有東西最終都會透過 Dnsmasq 進行 DNS 查詢。
但是,值得注意的是,所有流行的桌面和移動作業系統都支援設定 DNS 伺服器,因此您可以將單個裝置配置為使用 Dnsmasq,而無需在路由器級別啟用它。
入門
我們假設你已經有一臺可以執行的 Linux 機器準備好託管 Dnsmasq。
Dnsmasq 並不是特別需要資源——如果你的客戶端裝置很少,它很容易在 Raspberry Pi 上執行。
您的主機應該
分配
有
靜態 IP
。
從這裡開始,IP
192。168。0。1
指的是 Dnsmasq 伺服器。
確保已安裝 Dnsmasq:
# Assuming a Debian systemapt updateapt install dnsmasq
Dnsmasq 的配置檔案通常位於
/etc/dnsmasq。conf
。
這已預先填充了初始設定。
Dnsmasq 需要進行一些更改才能在本地網路場景中有效工作。
執行
sudo nano /etc/dnsmasq。conf
以開啟檔案,然後使用 Ctrl+W 鍵盤快捷鍵查詢並取消註釋以下行:
#domain-needed#bogus-priv
#
從每行的開頭
刪除
字元。
以下是這些設定啟用的內容:
domain-needed
– 這會阻止 Dnsmasq 將沒有域部分的本地名稱轉發到上游 DNS 伺服器。
在我們的安裝中,這意味著
example。com
將有資格透過 Google 進行解析,但
example
或
web-server
不會。
它為您的本地網路保留無點名稱。
bogus-priv
– 防止將 DNS 反向查詢查詢轉發到上游 DNS 伺服器。
這意味著內部 IP
192。168。0。101
永遠不會暴露給 Google。
不啟用此功能可能會無意中將您的內部網路架構洩露給您的上游提供商。
#
從每行的開頭
刪除
字元。
以下是這些設定啟用的內容:
domain-needed
– 這會阻止 Dnsmasq 將沒有域部分的本地名稱轉發到上游 DNS 伺服器。
在我們的安裝中,這意味著
example。com
將有資格透過 Google 進行解析,但
example
或
web-server
不會。
它為您的本地網路保留無點名稱。
bogus-priv
– 防止將 DNS 反向查詢查詢轉發到上游 DNS 伺服器。
這意味著內部 IP
192。168。0。101
永遠不會暴露給 Google。
不啟用此功能可能會無意中將您的內部網路架構洩露給您的上游提供商。
要設定上游 DNS 伺服器,請在配置檔案中新增新行:
server=8。8。8。8server=4。4。4。4
這指示 Dnsmasq 將未解析的查詢轉發到
8。8。8。8
。
如果該伺服器不可用,
4。4。4。4
將改為使用。
這些地址是 Google DNS 服務的主要和次要解析器。
接下來調整快取大小。
這預設為 150 個快取請求的相對較低的值。
增加這將使 Dnsmasq 從快取中提供更多查詢服務,從而減少網路延遲。
找到該
cache-size
行,取消註釋並更改其值:
cache-size=1000
立即儲存並關閉檔案。
將主機名對映到 IP
有幾種不同的方法可以將主機名對映到其 IP 地址。
最簡單的方法是將條目新增到伺服器的現有
/etc/hosts
檔案中。
Dnsmasq 自動從該檔案載入規則作為其預設配置的一部分。
開啟
/etc/hosts
並將您的路線新增到檔案底部。
首先是 IP 地址,然後是要分配的名稱:
192。168。0。101 web-server192。168。0。105 gateway。lan
這些行意味著任何請求都
http://web-server
將被定向到
192。168。0。101
而
http://gateway。lan
將在 結束
192。168。0。5
。
完成裝置對映後,儲存並關閉檔案。
測試您的伺服器
重新啟動 Dnsmasq 以應用所有更改:
sudo service dnsmasq restart
檢查伺服器是否正常執行:
sudo service dnsmasq status
您應該看到
active (running)
顯示為綠色。
如果沒有,請檢查狀態資訊底部的日誌行以找出問題所在。
現在您已準備好測試您的伺服器。
您可以使用該
dig
工具
進行手動 DNS 查詢嘗試
。
您可能需要先安裝
dnsutils
軟體包。
dig google。com @localhostdig gateway。lan @localhost
這兩個命令都應該在ANSWER SECTION。 在 的情況下gateway。lan,結果應192。168。0。5根據 中設定的路由規則/etc/hosts。@localhost命令的一部分指示dig查詢您的本地 DNS 伺服器。
配置您的網路
最後一步是配置您的網路路由器以透過您的 Dnsmasq 伺服器進行 DNS 查詢。
執行此操作的
步驟
將因您使用的路由裝置而異。
找到正確的設定頁面後,將伺服器的 IP(
192。168。0。1
在本指南中)設定為路由器的主要 DNS 伺服器。
將公共 DNS 提供商(例如 Google 的
8。8。8。8
)配置為輔助伺服器
是個好主意
。
這可確保您在 DNS 伺服器崩潰和離線時仍能訪問網際網路。
現在所有連線到路由器的裝置都將透過您的 Dnsmasq 例項進行 DNS 查詢。
他們將能夠透過分配的名稱(例如
web-server
和 )
訪問您的裝置
gateway。lan
,並受益於網路級 DNS 快取。
結論
DNS 是一個複雜的話題,但 Dnsmasq 使基本伺服器的執行變得容易。
還有很多
更多的設定
,你可以探索一旦你掌握了核心功能的工作。
這些使您可以過濾查詢、管理中繼和代理、在事件發生時執行指令碼以及設定其他型別的 DNS 記錄,例如郵件伺服器的 MX 結果。
Dnsmasq 一旦上線,通常不需要太多的人工干預。
您可以使用
service dnsmasq status
或
監視日誌
systemctl status dnsmasq
。
現在您已準備好從您的自託管 DNS 伺服器中受益,最大限度地提高效能並讓您使用內部域名來訪問本地網路裝置。
想了解更多精彩內容,快來關注
四川人在香港