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

自建 DNS 服務器,能夠規避運營商的 DNS 劫持,還能夠必定程度上加速網絡訪問。除此以外,在自定一些配置以後,能實現廣告攔截及其餘的一些功能。在這裏咱們經過在樹莓派使用 dnsmasq 搭建這樣一個 DNS 服務器。git

安裝 dnsmasq

sudo apt-get install dnsmasq

配置 dnsmasq

首先備份一下原配置文件,命令行以下:github

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

粘貼以下內容:google

nameserver 127.0.0.1
nameserver 119.29.29.29
nameserver 182.254.116.116

ctrl+o 保存,以後 回車 確認,而後 ctrl+x 退出。命令行

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

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

參考資料:https://www.v2ex.com/t/250719

廣告攔截及其餘配置

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,以後應用便可,其餘設備大同小異。

系列說明

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

注:本做品採用知識共享署名-非商業性使用-禁止演繹 3.0 未本地化版本許可協議進行許可。

相關文章
相關標籤/搜索