1. 程式人生 > >樹莓派搭建 DNS 伺服器 | 樹莓派小無相系列

樹莓派搭建 DNS 伺服器 | 樹莓派小無相系列

自建 DNS 伺服器,可以規避運營商的 DNS 劫持,還可以一定程度上加速網路訪問。除此之外,在自定一些配置之後,能實現廣告攔截及其他的一些功能。在這裡我們通過在樹莓派使用 dnsmasq 搭建這樣一個 DNS 伺服器。

安裝 dnsmasq

sudo apt-get install dnsmasq

配置 dnsmasq

首先備份一下原配置檔案,命令列如下:

sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.bak

接著編輯配置檔案,命令列如下:

sudo vi /etc/dnsmasq.conf

這裡,我們首先按下 esc 進入命令模式,然後使用快捷鍵 yddG 清空檔案,之後使用 i 進入插入模式,ctrl+v 貼上如下配置內容,貼上完成後按下 esc,最後使用 :wq 儲存檔案:

resolv-file=/etc/my_dns.conf
strict-order
cache-size=10000
listen-address=127.0.0.1,192.168.1.37
address=/pi.com/192.168.1.37

其中 192.168.1.37 為樹莓派的區域網 ip,address=/pi.com/192.168.1.37 是為了測試規則並將樹莓派上的網站解析到 pi.com

其餘各項解釋:

resolve-file:定義 dnsmasq 的上游DNS伺服器,預設是 /etc/resolv.conf。但是 resolv.conf 在每次樹莓派重啟後就會被系統重置,因此我們指定 resolve-file
檔案 strict-order:表示嚴格按照 resolv-file 檔案中的順序從上到下進行DNS解析 listen-address:定義 dnsmasq 監聽的地址,預設是監控本機的所有網絡卡上。為使區域網其他裝置得以使用需要加上樹莓派的區域網 ip cache-size:快取條數 address:自定義域名解析的 ip 地址,以 pi.com 這個域名為例。也可以在其他檔案中配置,配置檔案放在 /etc/dnsmasq.d/ 中即可。例如可以在 /etc/dnsmasq.d/ 下新建檔案test.conf,加入該規則,效果等同

編輯 my_dns.conf,命令列如下:

sudo nano /etc/my_dns.conf

貼上如下內容:

nameserver 127.0.0.1
nameserver 119.29.29.29
nameserver 182.254.116.116

ctrl+o 儲存,之後 回車 確認,然後 ctrl+x 退出。

附註,各大 dns(推薦 DNSpod):

114 dns:
114.114.114.114
114.114.115.115
阿里 dns:
223.5.5.5
223.6.6.6
DNSpod:
119.29.29.29
182.254.116.116

廣告攔截及其他配置

dnsmasq 會優先檢測 hosts 檔案,並通過其解析 ip,我們可以通過修改樹莓派 hosts 檔案實現攔截廣告的需求和其他的一些需求。

在使用者目錄(/home/pi)建立 hosts 資料夾,在資料夾內放置一個 hosts.sh 指令碼,修改檔案許可權:

cd ~
mkdir hosts
cd hosts
touch hosts.sh
sudo chmod 777 hosts.sh

之後編輯檔案,命令列如下:

nano hosts.sh

貼上如下內容:

#!/bin/sh
cd /home/pi/hosts/
echo "***下載 g hosts 檔案***"
wget --no-check-certificate https://raw.githubusercontent.com/googlehosts/hosts/master/hosts-files/hosts -O hosts_g.txt;
echo "***下載 ad hosts 檔案***"
wget --no-check-certificate https://raw.githubusercontent.com/vokins/yhosts/master/hosts -O hosts_ad.txt;
echo "***合併 hosts 檔案***"
cat hosts_g.txt hosts_ad.txt > hosts.txt
echo "***複製 hosts 檔案***"
sudo cp hosts.txt /etc/hosts
echo "***hosts 檔案更新完成"

ctrl+o 儲存,之後 回車 確認,然後 ctrl+x 退出。

編輯完成之後執行一下,命令列如下:

sudo sh hosts.sh

設定定時執行更新 hosts 指令碼,命令列如下:

sudo crontab -e

新增如下內容至檔案末行(每天三點半執行一次):

30 3 * * * sh /home/pi/hosts/hosts.sh

重啟 dnsmasq

sudo service dnsmasq restart

檢視 dnsmasq 狀態

sudo service dnsmasq status

檢視網路狀態

可以通過 dig 一下相關網址來測試 dns 是否生效。

如果未安裝 dnsutils,則通過如下命令安裝:

sudo apt-get install dnsutils

之後可以通過如下命令列簡單測試:

dig pi.com

在其他裝置使用 dns

可以只在裝置上單獨設定,如下:

macOS:

開啟網路設定-高階-dns,配置為樹莓派 ip 即可。

Windows:

控制面板-網路和Internet項-檢視網路狀態和任務-更改介面卡設定-右鍵正在使用的本地連線-屬性-雙擊Internet協議4(TCP/IPV4),將內容填寫至相關部分即可。

在這裡,建議在路由器配置,即配置路由器 LAN 口的 DNS 為樹莓派 ip,這樣便無需單獨為裝置配置。

例如:華碩路由器(RT-AC68U),設定 內部網路-DHCP 伺服器-DNS Server 1 為樹莓派 ip,之後應用即可,其他裝置大同小異。

系列說明

小無相功是小說《天龍八部》中「逍遙派」的一門內功,講究不著形相,無跡可尋,熟悉後再瞭解其他武功招式便可依仗威力習得,甚至青出於藍而勝於藍。而樹莓派形似小無相功,同具無限可能,瞭解一些基礎便可輕鬆上手,去探尋其他更多未知。因此,系列以此為題,帶來一系列樹莓派相關的教程,同時也是對個人長期折騰樹莓派以來的一個歸檔整理。