自建 DNS 服務器,能夠規避運營商的 DNS 劫持,還能夠必定程度上加速網絡訪問。除此以外,在自定一些配置以後,能實現廣告攔截及其餘的一些功能。在這裏咱們經過在樹莓派使用 dnsmasq 搭建這樣一個 DNS 服務器。git
sudo apt-get install 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
sudo service dnsmasq restart
sudo service dnsmasq status
能夠經過 dig 一下相關網址來測試 dns 是否生效。
若是未安裝 dnsutils,則經過以下命令安裝:
sudo apt-get install dnsutils
以後能夠經過以下命令行簡單測試:
dig pi.com
能夠只在設備上單獨設置,以下:
macOS:
打開網絡設置-高級-dns,配置爲樹莓派 ip 便可。
Windows:
控制面板-網絡和Internet項-查看網絡狀態和任務-更改適配器設置-右鍵正在使用的本地鏈接-屬性-雙擊Internet協議4(TCP/IPV4),將內容填寫至相關部分便可。
在這裏,建議在路由器配置,即配置路由器 LAN 口的 DNS 爲樹莓派 ip,這樣便無需單獨爲設備配置。
例如:華碩路由器(RT-AC68U),設置 內部網絡-DHCP 服務器-DNS Server 1 爲樹莓派 ip,以後應用便可,其餘設備大同小異。
小無相功是小說《天龍八部》中「逍遙派」的一門內功,講究不着形相,無跡可尋,熟悉後再瞭解其餘武功招式即可依仗威力習得,甚至青出於藍而勝於藍。而樹莓派形似小無相功,同具無限可能,瞭解一些基礎即可輕鬆上手,去探尋其餘更多未知。所以,系列以此爲題,帶來一系列樹莓派相關的教程,同時也是對我的長期折騰樹莓派以來的一個歸檔整理。
注:本做品採用知識共享署名-非商業性使用-禁止演繹 3.0 未本地化版本許可協議進行許可。