dns怎么設置 私人dns怎么設置
本内容来源于@什么值得买APP,觀點僅代表作者本人 |作者:縱筆浮生
寫在前面
1.iKuai +OpenWRT 做旁路由網絡拓撲
前面幾篇文章寫完了,基本上折騰完了,以ESXi 8.0虛擬機為基礎,安裝作為iKuai 主路由,負責撥號及 DHCP,OpenWRT 做旁路由。
今天搞定SmartDNS+AdGuardHome設置分流與去廣告。SmartDNS作為DNS管理并提供DNS緩存,實現國內國外DNS分流,徹底解決 DNS 污染問題、實現秒開網頁。同時搭配AdGuardHome實現整個局域網去廣告。
2.【AdGuardHome】有什么用?
作為著名廣告攔截與反跟蹤軟件,可以將廣告與追蹤相關的域名屏蔽,同時不再需要安裝任何客戶端,包括 Windows、Mac、Android、iOS,下面我們說的是 OpenWrt 安裝 AdGuard Home 設置全局廣告攔截,教程開始之前,我先介紹一下 AdGuard Home 的工作原理。
AdGuard Home 的工作原理是在 DNS 的域名解析過程中攔截網頁上的廣告,目前支持 DNS over TLS 和 DNS over HTTPS,本教程講解講解如何配置 OpenWRT 的 AdGuardHome 實現DNS防污染加快網站解析速度 和 廣告攔截。
3.什么是DNS?
開搞之前先搞清楚幾個概念,便于折騰:
【客戶端(client)】:指在本地的電腦或者軟件,而服務器(server)就是在網上為客戶端提供服務的電腦。client是發出請求 (request)的一方,而服務器(server)響應它的請求并為其提供服務。
img
【域名系統(Domain Name S ystem,縮寫:DNS)】是互聯網的一項服務。它作為將域名和 IP 地址相互映射的一個分布式數據庫,是 Internet 上解決網上機器命名的一種系統,能夠使人更方便地訪問互聯網。就像拜訪朋友要先知道別人家怎么走一樣,Internet 上當一臺 主機要訪問另外一臺主機時,必須首先獲知其地址。
4.域名解析:
域名解析就像我們初次拜訪朋友一樣,首先要知道人家的門牌號,然后按照地址去找。在 Internet 上只知道某臺機器的域名還是不夠的,還要有辦法去找到那臺機器。尋找這臺機器的任務由網上一種被稱為域名服務器的設備來完成的,而完成這一任務的過程就稱為域名解析。
可以用 IP 地址標識,并且可以通過 IP 地址被訪問,但即使是將 32 位的二進制 IP 地址寫成 4 個 0~255 的十位數形式,也依然太長、太難記。因此,人們發明了域名 (Domain Name),域名可將一個 IP 地址關聯到一組有意義的字符上去。用戶訪問一個網站的時候,既可以輸入該網站的 IP 地址,也可以輸入其域名,對訪問而言,兩者是等價的。例如:微軟公司的 Web 服務器的 IP 地址是 207.46.230.229,其對應的域名是 www.microsoft.com,不管用戶在瀏覽器中輸入的是 207.46.230.229 還是 www.microsoft.com,都可以訪問其 Web 網站。
5.【53端口】
53端口是為(Domain Name Server(DNS域名服務器)服務器所開放的端口,主要用于域名解析,DNS 服務在 NT 系統中使用的最為廣泛。通過 DNS 服務器可以實現域名與 IP 地址之間的轉換,只要記住域名就可以快速訪問網站。
6.DNSMASQ DNS服務器
OpenWrt默認使用的是DNSMASQ來管理DNS默認監管的 53 端口。我們這些上網的設備發出的 DNS 請求都是先到這里,然后再通過 DNS 轉發(在常規設置中可以更改)送到網關,最后到運營商等 DNS 服務器進行查詢。
DNSMASQ 是一個輕量級的DNS和DHCP 服務器,大約 200 多 KB,并且完整的包含了 DNS 服務器和 DHCP 服務器功能,非常適合 flash 空間有限的嵌入式系統。DNSMASQ作為OpenWrt默認的DNS 服務器和轉發器,接收Client的 DNS 查詢請求,并回復 DNS 查詢結果。查詢的結果可以來自本地緩存和公共 DNS 服務器,如果本地緩存沒有記錄,DNSMASQ 會將請求轉發到公共的 DNS 服務器,并將公共的 DNS 解析的結果回復到請求的設備。
那SmartDNS 和 DNSMASQ 有什么區別?我們為何又這么折騰呢?
SMARTDNS 在設計上并不是替換 DNSMASQ 的,SMARTDNS 主要功能集中在 DNS 解析增強上,增強部分有:
多上游服務器并發請求,對結果進行測速后,返回最佳結果;
address,ipset 域名匹配采用高效算法,查詢匹配更加快速高效,路由器設備依然高效。
域名匹配支持忽略特定域名,可單獨匹配 IPv4, IPV6,支持多樣化定制。
針對廣告屏蔽功能做增強,返回 SOA,屏蔽廣告效果更佳;
IPV4,IPV6 雙棧 IP 優選機制,在雙網情況下,選擇最快的網絡通訊。
支持最新的 TLS, HTTPS 協議,提供安全的 DNS 查詢能力。
ECS 支持,是查詢結果更佳準確。
域名 TTL 可指定,使訪問更快速。
高速緩存機制,使訪問更快速。
第二 DNS 支持自定義更多行為。
7.擬實現的DNS轉發流程
設置最核心的部分就是DNS轉發端口的銜接,而我們要做的就是把DNSMASQ、Adguardhome、SmartDNS三個插件里的DNS服務器功能分成三個層級,實現層層轉發。依次是第一級DNSMASQ,第二級Adguardhome,第三級SmartDNS。
客戶端 DNS 請求流程簡單來說就是:
【客戶端(client)】國內請求】→
→192.168.1.1:53→192.168.2.1:53(DNSMASQ)→192.168.2.1:5351(Adguardhome)→192.168.2.1:6053 (SmartDNS緩存)→上游國內DNS公共服務器→返回最快DNS給客戶端
【客戶端(client)】國外請求→
→192.168.1.1:53→192.168.2.1:53(DNSMASQ)→192.168.2.1:5351(Adguardhome)→192.168.2.1:5335 (SmartDNS緩存)→上游國外DNS公共服務器→返回最快DNS客戶端
經過設置之后,openWrt的默認DNS服務器為DNSMASQ,本地的DNS由openWrt的SmartDNS負責解析緩存,DNSMASQ作為最底層的DNS服務器,只擔任轉發功能。
一、OpenWrt基本設置
1.配置OpenWrt的lan口設置
IPv4地址:為OpenWrt的網關,也是我們管理OpenWrt的地址,這里設置為192.168.50.2。
子網掩碼:和ikuai一致保證同一個網段。
IPv4網關:指向ikuai的網關。保證OpenWrt的上網數據傳輸到ikuai再傳輸到外網。
使用自定義的DNS服務器:首先設置一個自定義的DNS,這里我們先設置一個能用的DNS即可,保證我們在設置過程中可以上網,后面設置好了,可以將DNS改為由OpenWrt代理,即輸入OpenWrt的網關改成192.168.50.2。
2.關閉DHCP服務,統一由ikuai分配
樓主的電信網絡沒有IPv6服務,全部使用的是IPv4的服務,禁用掉IPv6服務。
3.lan高級設置
lan口高級設置里不勾選IPv6,勾選【開啟開機自動運行】和【強制鏈路】:
4.Turbo ACC 加速
開啟【Turbo ACC 加速】,如果前面已經開啟了,檢查網絡內的【Turbo ACC 加速】設置是否正確:
只開啟前三個即可,DNS緩存后面由SmartDNS來管理。如果開啟了會產生沖突,沖突了就會不生效,關閉 Turbo ACC 網絡加速設置的 DNS 加速。
5.防火墻設置
①基本設置
打開openwrt的防火墻, SYN-flood 防御、丟棄無效數據包起不起用都可。下面啟用 FullCone-NAT、入站數據、出站數據、轉發都設置為接受。
下面lan口開啟:IP 動態偽裝。
②防火墻自定義規則
一般 openwrt 防火墻默認有以幾條規則,若沒有,加上
iptables -t nat -A PREROUTING -p udp —dport 53 -j REDIRECT —to-ports 53
iptables -t nat -A PREROUTING -p tcp —dport 53 -j REDIRECT —to-ports 53
[ -n “$(command -v ip6tables)” ] && ip6tables -t nat -A PREROUTING -p udp —dport 53 -j REDIRECT —to-ports 53
[ -n “$(command -v ip6tables)” ] && ip6tables -t nat -A PREROUTING -p tcp —dport 53 -j REDIRECT —to-ports 53
③加入回程旁路由統一轉發代碼
自定義規則里再加入下面一條規則,如果現在使用的網卡是eth1或者eth2,這里同樣修改為eth1或者eth2。
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
如果不加會導致我們廣告屏蔽等功能失效,原理大概如下:
家里的上網設備對外發送一個上網請求數據包,向外發一個包,先發到旁路由openwrt(192.168.50.2),如果不加這條規則,旁路由并沒有修改這個包的源地址(192.168.50.XX),這個包由旁路由openwrt轉發給ikuai主路由(192.168.50.1)再到外網。外網回應的數據包,到了ikuai主路由(192.168.50.1),主路由一查 NAT表,發現是設備(192.168.50.XX)的,就直接發給設備了,這個數據(包含廣告),沒有經過openwrt(192.168.50.2)處理。我們加上這條命令后,回程返回的數據包會先回到openwrt進行處理,再返給設備。
需要設置情況:
ikuai主路由開 DHCP(未指向openwrt旁路由網關),openwrt旁路由關 DHCP,旁路由只有 LAN 口工作,其他設備需設置靜態網關為旁路由,需要設置。
ikuai主路由開 DHCP(未指向openwrt旁路由網關),openwrt旁路由開 DHCP(強制模式開),旁路由只有 LAN 口工作,其他設備通過強制 DHCP 獲取旁路由網關,需要設置。
ikuai主路由開 DHCP(指向openwrt旁路由網關),openwrt旁路由關 DHCP,旁路由只有 LAN 口工作,需要設置。
ikuai主路由關 DHCP,openwrt旁路由開 DHCP,openwrt旁路由只有 LAN 口工作,需要設置。
不需要設置的情況:
openwrt旁路由 WAN LAN 共用 eth0,不用設置。
ikuai單臂路由情況,openwrt作為撥號路由(有撥號就有 WAN 口),不用設置。
二、ikuai的DNS設置
回到ikuai進行簡單設置,這一步將ikuai的DNS設置為openwrt代理:
網關:設置為openwrt的網關:192.168.50.2
這樣上網設備發出的數據,到達ikuai,ikuai會發送到openwrt進行一番處理,然后在發送到外網。回程的數據,ikuai也會發送到openwrt進行一番處理,然后轉發到各個設備。
DNS:設置為openwrt代理:192.168.50.2
三、安裝SmartDNS
安裝:在 istore 中輸入SmartDNS ,查找軟件包安裝即可,一般openwrt都帶有這個服務,這個就不多說了。
在服務中打開SmartDNS:
四、SmartDNS設置
1.SmartDNS基礎設置
基本設置→SmartDNS勾選啟用→服務器組名稱:china→端口默認【6053】→開啟TCP服務器→勾選雙棧IP優選→勾選域名預加載→勾選緩存過期服務→重定向默認「無」→緩存大小設為:1000000→域名TTL最大值設為:3600→勾選啟動→保存&應用。
【雙棧IP優選】:應注意自己的設備是否完全支持 IPv6,尤其是網絡運營商是否支持
【重定向】:一定不要選擇,后面我們用Adguard Home進行重定向。還有就是一些版本的SmartDNS,沒有重定向功能,改成了自動設置 DNSMASQ,如果是這個版本注意不要點自動設置 DNSMASQ 。因為我自己是用的IPV4公網,這里IPV6的兩項設置不勾選,如果用IPV6勾選此兩項。
【停用HTTPS地址解析】:如果下面上游路由器添加HTTPS協議的話,停用HTTPS地址解析這一項不要勾選。
【緩存大小】:可根據需求填入,這里填入的數字是指緩存的條數,樓主寫了個十萬「100000」,自己可以多寫幾條。
【域名TTL】:是指緩存的時間,也就是DNS在本地保留生效的時間,留空則根據上游服務器告知的時間緩存,但是如果低于最小值,則按照最小值在緩存之內防止短時間多次查詢,如果時間過長則按照最大值緩存防止失效。域名TTL可根據自己需求需求填入,最小值填入「300」、域名 TTL 最大值填入「3600」。域名TTL最大值如果我們這里填入3600,意思是緩存一個小時。同樣如果填入864000,意思就是系統會幫我們緩存十天。
2.SmartDNS配置上游服務器
配置參考規則
smartdns 提供了域名緩存機制:對查詢的域名,進行緩存,緩存時間符合 DNS TTL 規范。
①為提高緩存命中率,適當增大 cache 的記錄數、通過 cache-size來設置緩存記錄數。內存大的情況下,可適當調大。可以提高 cache 效率,加快訪問速度
②適當設置最小 TTL 值:通過 rr-ttl-min`將最低 DNS TTL 時間設置為一個合理值,延長緩存時間。建議是超時時間設置在 10~30 分鐘,避免服務器域名變化時,查詢到失效域名。
③開啟域名預獲取功能:通過來啟用域名預先獲取功能,提高查詢命中率。
配合上述 ttl 超時時間,smartdns 將在域名 ttl 即將超時使,再次發送查詢請求,并緩存查詢結果供后續使用。頻繁訪問的域名將會持續緩存。此功能將在空閑時消耗更多的 CPU。
④數量方面:SmartDNS 有測速機制,在配置上游服務器時,建議配置多個上游 DNS 服務器,包含多個不同區域的服務器,但總數建議在 10 個左右。
⑤隱私方面:默認情況下,SmartDNS 會將請求發送到所有配置的 DNS 服務器,若上游 DNS 服務器使用 DNS,或記錄日志,將會導致隱私泄漏。所以在配置的時候要考慮:
配置使用可信的 DNS 服務器。
優先使用 TLS 查詢。
設置上游 DNS 服務器組。
⑥IOS 系統解析緩慢問題怎么解決?
IOS14 開始,蘋果支持了 DNS HTTPS (TYPE65) 記錄的解析,此功能用于快速 DNS 查詢和解決 HTTPS 鏈接相關的問題,但當前還是草案,另外會導致廣告屏蔽等功能失效,建議通過如下配置關閉 TYPE65 記錄查詢。
force-qtype-SOA 65
按照以上規則我們開始進行配置
這里將DNS分別進行分組,當瀏覽國內網頁時使用國內DNS,在訪問國外網站時自動使用國外DNS。點新增開始下一步:
①添加國內DNS服務器
按照以下設置分別將下面的國內DNS插入進去,注意這里我們使用了國內國外分流,國內國外不宜添加過多,添加之前可以在網上測試下DNS的速度,國內國外各添加十條就夠了。DNS測試網站
DNS服務器名稱:自己隨便定義
服務器組:china(自己隨便定義,這個是國內組的意思)
端口:default(默認端口)
類型:udp(國內統一填寫)
②添加添加運營商的DNS(隸屬于國內組)
首先添加電信運營商給的DNS。這樣在查詢的時候會優先查詢。打開ikuai wan口撥號頁面,查看供應商給的DNS,可以看到電信供應商給了兩個DNS:
將兩個DNS復制出來,在SmartDNS分別添加上去。
116.228.111.118
180.168.255.18
添加完成,將上面的DNS刪掉,盡量保證電信供應商的排在第1、2位置。
關于DNS,可以到dns.ip.cn查詢:
③添加國內DNS服務器:
阿里公共DNS:223.5.5.5,223.6.6.6 類型選擇:UDP
阿里加密DNS:aliDNS_ip/DNS-query 類型選擇:http
阿里加密DNS:DNS.aliDNS.com/origin/DNS-query 類型選擇:http
騰訊公共DNS+:119.29.29.29 類型選擇:UDP
騰訊加密DNS:doh.pub/DNS-query 類型選擇:http
騰訊加密DNS:sm2.doh.pub/DNS-query 類型選擇:http
百度公共DNS:180.76.76.76 類型選擇:UDP
華為云公共DNS :122.112.208.1,139.9.23.90 類型選擇:UDP
114公共DNS:114.114.114.114,114.114.115.115 類型選擇:UDP
OpenerDNS:42.120.21.30 類型選擇:UDP
DNS派 電信 / 移動 / 鐵通:101.226.4.6,218.30.118.6 類型選擇:UDP
DNS派 聯通:123.125.81.6,140.207.198.6 類型選擇:UDP
添加完成:
④添加國外DNS服務器
下面進行添加國外DNS,國外DNS協議要添加UDP、TCP和TLS三種協議。
服務器組選擇:guowai
添加一項額外的服務器參數(從默認服務器組排除),填入:
-exclude-default-group
下面搜集了這些常見的國外DNS:
Google DNS:8.8.8.8,8.8.4.4 類型選擇:tls(UDPTCP也可以加入)
Google加密DNS:dns.google/dns-query 類型選擇:http
Google加密DNS:dns.google 類型選擇:tls
CloudFlare:1.1.1.1類型選擇:tls(UDPTCP也可以加入)
IBM Quad9:9.9.9.9類型選擇:tls(UDPTCP也可以加入)
IBM Quad9:doh.opendns.com/origin/dns-query 類型選擇:http
Norton ConnectSafe:199.85.126.10 199.85.127.10 類型選擇:UDP
威瑞信:64.6.64.6 64.6.65.6 類型選擇:UDP
Comodo**安全DNS:** 8.26.56.2 68.20.247.20 類型選擇:UDP
DNS Watch**:** 84.200.69.80 84.200.70.40 類型選擇:UDP
OpenDNS:208.67.222.222,208.67.220.220類型選擇:tls(UDPTCP也可以加入)
韓國電信DNS:168.126.63.1,168.126.63.2類型選擇:tls(UDPTCP也可以加入)
V2EX DNS:199.91.73.222,178.79.131.110類型選擇:tls(UDPTCP也可以加入)
有的版本的SmartDNS是有從默認服務器組排除這個選項的,如果有這個選項,國外的DNS服務器在添加的時候,勾選就可以了。這樣就可以把國內組進行分開,訪問國內網站的時候使用國內DNS,使用國外網站的時候,選擇國外的DNS服務器。
添加完成:
⑤設置第二DNS服務器
啟用第二 DNS 服務器,端口默認「5335」,因為很多插件的DNS服務中用的就是5335端口,這里設置后好了之后,直接選用即可。
服務器組我們選擇上面的國外分組,其他的對照設置。
啟用→開啟「TCP 服務器」→本地端口設為5335→服務器組:guowa→勾選跳過測速→勾選跳過address規則→勾選跳過雙棧優選→勾選跳過cache→啟用——保存&應用
下面四項勾選,第二DNS服務器設置完畢。
⑥SmartDNS 自定義設置
在SmartDNS 自定義中添加下面兩項分組信息,其他的刪掉即可,只保留主體部分:
bind:6053 -group china
bind:5335 -group guowai
SmartDNS 自定義備份
Add custom settings here.
set log level
log-level [level], level=fatal, error, warn, notice, info, debug
log-level error
log-size k,m,g
log-size 128k
log-file /var/log/smartDNS.log
log-num 2
List of hosts that supply bogus NX domain results
bogus-nxdomain [ip/subnet]
bind:6053 -group china
bind:5335 -group guowai
五、配置AdGuard Home
1.AdGuard Home WEB端設置
在服務里打開AdGuard Home,可以看到基本設置、日志、手動設置三個選項。前兩個是wed端可視設置,手動設置就是通過命令進行設置。
首先看第一項基礎設置
①更新核心
首先更新核心版本,現在可以看到紅色的狀態是未運行和未重定向,如果特殊上網正常的話是可以更新的,點擊檢查更新,更新核心:
②手動更新核心
如果因為網絡問題無法更新,那只能手動更新了。打開AdGuardHome,找到點擊右下角,作者編譯好的最新的版本。
打開列表,找到自己對應的版本,一般X86 64位平臺選擇換個版本即可。
下載打開壓縮包,第一個AdGuardHome就是核心文件,我們只用到這一個就可以了。
我們打開winSCP,電腦上沒有的可以去下載安裝下:
安裝完成后,新建連接。輸入主機名,openwrt的IP地址,端口號不用該,輸入用戶名和密碼,連接。
點擊【打開目錄】,路徑輸入/usr/bin/AdGuardHome/,確定打開。
將剛才下載的復制粘貼進來:
右擊屬性,分配權限,權限和下面一樣就可以了。
這時可以看到核心已經有了。
2.重定向方式:
更新完核心之后可以看到,重定向選項,重定向方式有【作為 DNSMASQ 的上游服務器】、【重定向 53 端口到 Adguardhome】、【使用 53 端口替換DNSMASQ 】3種選擇,這里先選擇無,就是先不重定向,等到后面設置好了,我們再開啟。
先來捋一下,AdGuard Home的上級DNS服務器是SmartDNS,這點是肯定的,我們主要是要理清DNSMASQ和Adguardhome之間的關系。而DNSMASQ和Adguardhome的上下級關系關系就是通過重定向來實現的。
關于三種重定向方式的區別。從下面luci-app-adguardhome的作者注釋來看,【作為 DNSMASQ 的上游服務器】是最穩定的方式,就采用這個就好了,效果其實都一樣,不要折騰,越折騰莫名其妙的問題越多。
作為 dnsmasq 的上游服務器 (在 AGH 中統計到的 ip 都為 127.0.0.1,代價就是沒法統計局域網客戶端,都顯示 127.0.0.1 了,無法統計客戶端及對應調整設置,基本上無影響,但是酸酸乳plus 正常)
重定向 53 端口到 AdGuardHome(ipv6 需要開啟 ipv6 nat redirect 否則如果客戶端使用 ipv6 過濾無效,不以 dnsmasq 為上游酸酸乳plus 失效)
使用 53 端口替換 dnsmasq (需要設置 AGH 的 dnsip 為 0.0.0.0, AGH 和 dnsmasq 的端口將被交換,不以 dnsmasq 為上游酸酸乳plus 失效)
然后勾選【詳細日志】、【開機后網絡準備好時重啟】、【在關機時備份工作目錄文件】所有的選項,保存啟動AdGuard Home。
3.AdGuard Home web端配置
這時可以看到,AdGuard Home已經運行,但是還有一個紅色的未重定向,這是正常的。
后打開下面框選的位置,打開AdGuard Home的web配置頁面。
也可以直接輸入旁路由地址:端口號,樓主旁路由地址是192.168.50.2,可以直接輸入192.168.50.2:3000進行配置。會出來個網頁。點擊開始配置進入下一步:
①端口設置
網頁管理界面——監聽接口——所有接口,端口號設置為默認的3000。也可以設置成其他的,這個只要不和現用的其他端口沖突即可。
DNS 服務器——監聽接口——所有接口,端口號設置為5351。(這個可以隨便設置一個,同樣也是不沖突就行)
②網頁管理界面登錄密碼
配置AdGuard Home的網頁管理界面登錄密碼,輸入常用的賬戶密碼即可。
點擊進入下一步,檢查有沒有問題,可以把這些內容保存下來,省的以后忘記或者后面設置忘記了。
為保證 AdGuard Home 可以開始正常工作,您需要在設備上對其進行配置。AdGuard Home DNS 服務器正在監聽以下地址:
127.0.0.1:5351
172.17.0.1:5351
192.168.50.2:5351
[::1]:5351
[fe80::62be:b4ff:fe09:c9f%br-lan]:5351
③設置AdGuard Home的上游DNS服務器
首先【常規設置】
常規設置里【使用過濾器和Hosts文件以攔截指定域名】勾選開啟,其他選擇關閉。不要問為什么,問就是穩定優先,已經夠用,開了會出bug,網頁崩潰、顯示不全、打不開等種種問題。
日志和統計大家根據自己的喜好設置就可以了,這個沒多大影響。
再打開【DNS設置】頁面,設置AdGuard Home的上游DNS服務器:
前面我們已經在在SmartDNS設置了國內DNS端口為端口默認【6053】
SmartDNS第二DNS服務器(國外DNS)的端口為【5335】
這時候我們就要將AdGuard Home的上游DNS服務器設置為SmartDNS,將AdGuard Home過濾后的 DNS 請求再轉發給 SmartDNS。
上游DNS服務器設置為:
127.0.0.1:6053
127.0.0.1:5335
至于為何是127.0.0.1 ?
127.0.0.1是一個特殊用途的 IPv4 地址,稱為 localhost 或 環回地址 。所有計算機都使用此地址作為自己的地址,但它不會像真實 IP 地址那樣讓計算機與其他設備通信。
。 的任何數據包都不應該離開計算機(主機),發送它 —— 而不是被發送到本地網絡或互聯網,它只是被自己 “環回”,并且發送數據包的計算機成為接收者。localhost 只是默認情況下引用 127.0.0.1 的簡寫,就是當做本地主機的總127.0.0.1來用。
下面DNS的查詢方式有負載均衡、并行請求、最快的IP地址三種,樓主還是建議選擇并行請求,上面我們設置過了DNS全部放到了smartdns里面緩存,Adguardhome會向smartdns緩存庫里并行查詢,smartdnsDNS本身具有返回最快dns的功能,也會向Adguardhome返回最快的DNS。
列一下三種方式的區別(恩山大佬的分享):
負載均衡:一次查詢一臺服務器。 AdGuard Home 將使用加權隨機算法來選擇服務器,以便更頻繁地使用最快的服務器。具體使用感受是,去視頻 app 廣告迅速,微博國際版登陸 5 秒廣告可以去除,圖片加載速度較快。存在的問題是,儀表盤平均處理時間較長,80-120ms 之間。
并行請求:通過同時查詢所有上游服務器,使用并行請求以加速解析。最老的模式,在添加本地 DNS 地址的情況下,去視頻 app 廣告迅速,微博國際版登陸 5 秒廣告可以去除,儀表盤平均處理時間較短,可以保持在 5-8ms 之間。存在問題是,圖片加載速度受影響,偶爾會加載慢,存在些許不穩定因素。
最快的 IP 地址:查詢所有 DNS 服務器并返回所有響應中速度最快的 IP 地址。因必須等待全部 DNS 服務器均有所回應,因而會降低 DNS 查詢的速度,但同時此舉將會改善總體的連接。本模式據說是 Smart DNS 的功能一樣。對比上述模式沒有區別,和并行模式并無態度啊去吧。存在問題是,儀表盤處理時間超長,1000ms 以上……
接下來到 Adguardhome 的網頁控制面板中,將 Bootstrap DNS 服務器設為 127.0.0.1:6053。
④DNS 服務配置
速度限制:0
⑤DNS 緩存配置
這里都空著即可,采用上游DNS服務器,也就是讓SmartDNS來管理這些,如果設置會產生沖突。
3.DNS黑名單設置
將阻止匹配 DNS 攔截清單的域名,這里添加的清單就是一種在線的TXT 文件,而且是有專人維護的。可能是公司或者是大神來維護。而TXT文件里面就是一條一條網站信息。
添加黑名單,這里可以從列表中添加,也可以添加自定義名單,列表中是Adguardhome收集和維護的一些名單,可以直接使用。自定義名單是從網上找一些大神為愛發電分享的名單。
其中列表名單里這一條推薦使用,其他的可以去找一些網絡大神分享的名單,搜索Adguardhome規則。
4.黑名單推薦
AdGuard 默認的內置規則里很多選擇,規則一定不要搞太多,一兩個綜合性的規則列表就已足夠覆蓋大部分情況,如果同時使用,這些規則可能會沖突,出現很多莫名其妙的問題,使用幾個自己用的順手的就可以了。有的規則帶有兩個或者兩個以上的源頭,可以留著以后失效之后使用。【】后面就是規則地址,使用前請自行在列表地址前面加上http://前綴。
1.【EasyList China+EasyList去除國際國內網頁中大多數廣告,包括不需要的框架、圖像和對象】easylist-downloads.adblockplus.org/easylistchina+easylist.txt
2.【EasyList去除國際網頁中大多數廣告,包括不需要的框架、圖像和對象】easylist-downloads.adblockplus.org/easylist.txt
3.【Easylist China針對國內的補充規則】 easylist-downloads.adblockplus.org/easylistchina.txt
4.【HalfLife合并規則,合并自 EasylistChina、EasylistLite、CJX’sAnnoyance 】cdn.jsdelivr.net/gh/o0HalfLife0o/list@master/ad-pc.txt
5.【HalfLife合并規則,合并自 EasylistChina、EasylistLite、CJX’sAnnoyance 】raw.githubusercontent.com/origin/o0HalfLife0o/list/master/ad-pc.txt
6.【ad-pc.txt推薦桌面端,合并自乘風視頻廣告過濾規則、Easylist、EasylistChina、EasyPrivacy、CJX’sAnnoyance,以及補充的一些規則】cdn.jsdelivr.net/gh/o0HalfLife0o/list@master/ad-pc.txt
7.【ad-pc.txt推薦桌面端,合并自乘風視頻廣告過濾規則、Easylist、EasylistChina、EasyPrivacy、CJX’sAnnoyance,以及補充的一些規則】raw.githubusercontent.com/origin/o0HalfLife0o/list/master/ad-pc.txt
8.【ad-mo.txt 合并自 Easylist、EasylistChina、EasyPrivacy、CJX’sAnnoyance】cdn.jsdelivr.net/gh/o0HalfLife0o/list@master/ad-mo.txt
9.【ad-mo.txt 合并自 Easylist、EasylistChina、EasyPrivacy、CJX’sAnnoyance】raw.githubusercontent.com/origin/o0HalfLife0o/list/master/ad-mo.txt
10.【ad1合并自乘風視頻廣告過濾規則、EasylistChina、EasylistLite、CJX’sAnnoyance,以及補充的一些規則】cdn.jsdelivr.net/gh/o0HalfLife0o/list@master/ad.txt
11.【ad1合并自乘風視頻廣告過濾規則、EasylistChina、EasylistLite、CJX’sAnnoyance,以及補充的一些規則】raw.githubusercontent.com/origin/o0HalfLife0o/list/master/ad.txt
12.【ad2.txt 合并自乘風視頻廣告過濾規則、EasylistChina、EasylistLite、CJX’sAnnoyance】cdn.jsdelivr.net/gh/o0HalfLife0o/list@master/ad2.txt
13.【ad2.txt 合并自乘風視頻廣告過濾規則、EasylistChina、EasylistLite、CJX’sAnnoyance】raw.githubusercontent.com/origin/o0HalfLife0o/list/master/ad2.txt
14.【ad3.txt合并自乘風視頻廣告過濾規則、EasylistChina、EasylistLite、CJX’sAnnoyance、EasyPrivacy】cdn.jsdelivr.net/gh/o0HalfLife0o/list@master/ad3.txt
15.【ad3.txt合并自乘風視頻廣告過濾規則、EasylistChina、EasylistLite、CJX’sAnnoyance、EasyPrivacy】raw.githubusercontent.com/origin/o0HalfLife0o/list/master/ad3.txt
16.【ad-edentw.txt 合并自 Adblock Warning Removal List、ABP filters、anti-adblock-killer-filters】cdn.jsdelivr.net/gh/o0HalfLife0o/list@master/ad-edentw.txt
17.【ad-edentw.txt 合并自 Adblock Warning Removal List、ABP filters、anti-adblock-killer-filters】raw.githubusercontent.com/origin/o0HalfLife0o/list/master/ad-edentw.txt
18.【anti-AD規則目前中文區命中率最高的廣告過濾列表,實現了精確的廣告屏蔽和隱私保護,屏蔽廣告域名、電視廣告、APP 內置廣告,同時屏蔽了一些日志收集、大數據統計等涉及個人隱私信息的站點,能夠保護個人隱私不被偷偷上傳】raw.githubusercontent.com/origin/privacy-protection-tools/anti-AD/master/anti-ad-easylist.txt
19.【anti-AD規則目前中文區命中率最高的廣告過濾列表,實現了精確的廣告屏蔽和隱私保護,屏蔽廣告域名、電視廣告、APP 內置廣告,同時屏蔽了一些日志收集、大數據統計等涉及個人隱私信息的站點,能夠保護個人隱私不被偷偷上傳】raw.githubusercontent.com/origin/privacy-protection-tools/anti-AD/master/adblock-for-DNSMASQ.conf
20.【Anti-AD CDN 加速】anti-ad.net/easylist.txt
21.【Anti-AD CDN 加速】cdn.jsdelivr.net/gh/privacy-protection-tools/anti-AD@master/anti-ad-easylist.txt
22.【adgk 手機去廣告規則】raw.githubusercontent.com/origin/banbendalao/ADgk/master/ADgk.txt
23.【Youtube 去廣告】sdwz.icu/TQtFq
24.【大圣净化】cdn.jsdelivr.net/gh/jdlingyu/ad-wars@master/hosts
25.【澳門皇家賭場及惡意廣告主機列表】raw.githubusercontent.com/origin/Goooler/1024_hosts/master/hosts
26.【adgk 手機去廣告規則】raw.githubusercontent.com/origin/banbendalao/ADgk/master/ADgk.txt
27.【EasyPrivacy 去跟蹤 從網絡上完全刪除所有形式的跟蹤,包括 Web 錯誤、跟蹤腳本和信息收集,從而保護您的個人數據】easylist-downloads.adblockplus.org/easyprivacy.txt
28.【Adbyby】raw.githubusercontent.com/origin/adbyby/xwhyc-rules/master/lazy.txt
29.【Adbyby CDN 加速】cdn.jsdelivr.net/gh/adbyby/xwhyc-rules@master/lazy.txt
30.【Adbyby video】raw.githubusercontent.com/origin/adbyby/xwhyc-rules/master/video.txt
31.【CDN 加速列表】cdn.jsdelivr.net/gh/adbyby/xwhyc-rules@master/video.txt
32.【ADH 去廣告攔截】raw.githubusercontent.com/origin/BlueSkyXN/AdGuardHomeRules/master/all.txt
33.【其他大神推薦,3個隨便選一個即可】
鏈接:cats-team.github.io/AdRules/DNS.txt
鏈接:gitlab.com/origin/cats-team/adrules/-/raw/main/DNS.txt
鏈接:adrules.top/DNS.txt
5.白名單推薦
有誤殺可嘗試使用白名單,添加到 Adguardhome 的允許清單(不保證一定能解決問題),下面的地址請自己加上http://前綴。
cats-team.github.io/AdRules/allow-domains-list.txt
gitlab.com/origin/cats-team/adrules/-/raw/main/allow-domains-list.txt
adrules.top/allow-domains-list.txt
6.自定義規則
也可以添加你的規則列表,在允許清單里加上這個網址,這個網站就可以使用了,相當于給這個網站開了一個特權。
ADGUARD 過濾語法規則,一行一回車,常用的就是第一二條。手動添加和接觸攔截。直接復制,然后將里面的網址替換掉就可以了。
||example.org^ – 攔截 example.org 域名及其所有子域名
@@||example.org^ – 放行 example.org 及其所有子域名
比如我們要放行值得買網站及其子域名,只要添加一行代碼就可以了,用于訪問個別網站時候有BUG時快速添加。
@@||post.smzdm.com^
7.Adguardhome重定向【作為 DNSMASQ 上游服務器】
回到基本設置,會看到Adguardhome運行中、已重定向。
【作為 DNSMASQ 上游服務器】,可以看到前面的重定向變成了5351重定向,這個也就是AdGuard Home的DNS監聽端口,如果你設置成8336、8338或者其他,這里顯示的就是你設置的端口值。選擇【作為 DNSMASQ 的上游服務器】,這樣設置之后Adguardhome變成了DNSMASQ的上級DNS服務器。
六、DNSMASQ設置
最后一步設置DNSMASQ。打開網絡——DHCP/DNS,可以看到DNSMASQ服務,主要是解除DNSMASQ的DNS功能,只保留轉發功能,讓DNSMASQ作為AdGuard Home的下級服務生效。
我們到DNSMASQ看下目前的狀態,在【網絡】→【DHCP/DNS】→DNS轉發,可以看到,DNS轉發內已經自動設置成了127.0.0.15351。如果轉發路徑不對,就強制改成127.0.0.15351。
2.HOSTS 和解析文件
這里忽略掉解析文件,不用DNSMASQ的解析。
【/etc/hosts】是記錄本地配置的域名和 IP 的映射的文件,是域名解析(如 ping,http 訪問)時域名的第一解析方式。DNSMASQ可以選擇加載 /etc/hosts到本地緩存,也可以選擇不加載。
如果選擇加載:當客戶端(client)設備的 DNS 請求的域名正好在 /etc/hosts 中的情況下,DNSMASQ 直接回復 /etc/hosts 域名對應的 IP 地址。
如果選擇不加載:DNSMASQ 則會將請求轉發到公共的 DNS 服務器去解析,而不是使用 /etc/hosts 中的記錄,通過 —no-hosts 選項可以選擇是否加載 /etc/hosts 內容作為 DNSMASQ 的 DNS 的本地緩存。
【/etc/resolv.conf】該文件主要記錄 DNS 的 Name Server,對于沒在 /etc/hosts 記錄的域名,系統向 Name Server 發起 DNS 請求,從而解析域名。
3.高級設置
前半部分保持默認即可:
同樣在在【網絡】→【DHCP/DNS】高級設置里面DNSMASQ還是在監聽53端口。DNS 查詢緩存的大小設置為0。不使用DNSMASQ的DNS緩存。點擊保存生效。
到這里整個設置完成了,從DNSMASQ→AdGuard home→SmartDNS設置好了。DNSMASQ監聽本地【53端口】,將請求轉發到AdGuard Home監聽的【5351端口】,然后AdGuard Home再轉發到SmartDNS查詢最快的DNS,然后提交給DNSMASQ,然后發送到ikuai主路由。回程數據首先發送到ikuai,然后經過SmartDNS交給AdGuard home進行處理,返回到DNSMASQ,然后發送回設備。
查詢流程:
進入配置網頁,儀表盤里你會發現已經開始DNS查詢和廣告攔截了。這里我們看到客戶端攔截列表里看到的全部都是127.0.0.1 的數據。我們前面在重定向模式中選擇了【作為 DNSMASQ 上游服務器】, DNS 請求第一步經過 DNSMASQ,然后才到Adguardhome,所以Adguardhome接受到的都是53 端口的DNS請求,這時候Adguardhome自是無法區分是哪個客戶端發過來的請求,所以才出現了后臺攔截的全都是 127.0.0.1 的數據。這里小伙伴不需要糾結,影響不大,穩定第一。
4.AdGuard Home手動設置代碼:
如果懶得設置也可以使用別人的代碼,不過容易出問題,最好的方法就是自己花個十幾分鐘設置一下。本次設置的代碼如下:
bind_host: 0.0.0.0 bind_port: 3000 users: - name: root password: $2a$10$HUb1IkETLPc/b.pgaWHQoeV5NplfV auth_attempts: 5 block_auth_min: 15 http_proxy: &34;&34; language: &34;&34; theme: auto de_pprof: false web_session_ttl: 720 dns: bind_hosts: - 0.0.0.0 port: 5351 statistics_interval: 1 querylog_enabled: true querylog_file_enabled: true querylog_interval: 2160h querylog_size_memory: 1000 anonymize_client_ip: false protection_enabled: true blocking_mode: default blocking_ipv4: &34;&34; blocking_ipv6: &34;&34; blocked_response_ttl: 10 parental_block_host: family-block.dns.adguard.com safebrowsing_block_host: standard-block.dns.adguard.com ratelimit: 0 ratelimit_whitelist: [] refuse_any: true utream_dns: - 127.0.0.1:6053 - 127.0.0.1:5335 utream_dns_file: &34;&34; bootstrap_dns: - 127.0.0.1:6053 all_servers: true fastest_addr: false fastest_timeout: 1s allowed_clients: [] disallowed_clients: [] blocked_hosts: - version.bind - id.server - hostname.bind trusted_proxies: - 127.0.0.0/8 - ::1/128 cache_size: 0 cache_ttl_min: 0 cache_ttl_x: 0 cache_optimistic: false bogus_nxdoin: [] aaaa_disabled: true enable_dnssec: true edns_client_subnet: true x_goroutines: 300 handle_ddr: true iet: [] iet_file: &34;&34; filtering_enabled: true filters_update_interval: 24 parental_enabled: false safesearch_enabled: false safebrowsing_enabled: false safebrowsing_cache_size: 1048576 safesearch_cache_size: 1048576 parental_cache_size: 1048576 cache_time: 30 rewrites: [] blocked_services: [] utream_timeout: 10s private_networks: [] use_private_ptr_resolvers: true local_ptr_utreams: [] use_dns64: false dns64_prefixes: [] serve_http3: false use_http3_utreams: false tls: enabled: false server_name: &34;&34; force_htt: false port_htt: 443 port_dns_over_tls: 853 port_dns_over_quic: 853 port_dnscrypt: 0 dnscrypt_config_file: &34;&34; allow_unencrypted_doh: false certificate_chain: &34;&34; private_key: &34;&34; certificate_path: &34;&34; private_key_path: &34;&34; strict_sni_check: false filters: - enabled: true url: htt://raw.githubusercontent.com/origin/o0HalfLife0o/list/ster/ad-pc.txt name: 【ad-pc.txt】推薦桌面端,合并自乘風視頻廣告過濾規則、Easylist、EasylistChina、EasyPrivacy、CJX&39;sAnnoyance,以及補充的一些規則; id: 1676121231 - enabled: true url: htt://raw.githubusercontent.com/origin/banbendalao/ADgk/ster/ADgk.txt name: 【adgk 手機去廣告規則】 id: 1676121232 - enabled: true url: htt://sdwz.icu/TQtFq name: 【Youtube 去廣告】 id: 1676121233 - enabled: true url: htt://cdn.jsdelivr.net/gh/jdlingyu/ad-wars@ster/hosts name: 【大圣凈化】 id: 1676121234 - enabled: true url: htt://raw.githubusercontent.com/origin/Goooler/_hosts/ster/hosts name: 【host及澳門皇家賭場及惡意廣告主機列表】 id: 1676121235 - enabled: true url: htt://adguardteam.github.io/HostlistsRegistry/assets/filter_21.txt name: &39;CHN: anti-AD&39; id: 1676121236 whitelist_filters: [] user_rules: - &39;@@||jd.com^&39; - &39;@@||smzdm.com^&39; - &39;@@||post.smzdm.com^&39; dhcp: enabled: false interface_name: &34;&34; local_doin_name: lan dhcpv4: gateway_ip: &34;&34; subnet_sk: &34;&34; range_start: &34;&34; range_end: &34;&34; lease_duration: 86400 icmp_timeout_msec: 1000 options: [] dhcpv6: range_start: &34;&34; lease_duration: 86400 ra_slaac_only: false ra_allow_slaac: false clients: runtime_sources: whois: true arp: true rdns: true dhcp: true hosts: true persistent: [] log_file: &34;&34; log_x_backu: 0 log_x_size: 100 log_x_age: 3 log_compress: false log_localtime: false verbose: false os: group: &34;&34; user: &34;&34; rlimit_nofile: 0 sche_version: 14
5.如何修改Adguardhome密碼
如果直接使用上面的代碼可能導致主頁登錄不上去,可以看到代碼里面是有一段加密的密碼的,這里就需要我們去改一下密碼,然后保存生效。
在Adguardhome的基礎設置頁面,翻到最下面,可以看到有一個功能框,選擇改變網頁登錄密碼,點添加。
可以看到網頁上出現了一個改變網頁登錄密碼的框,這里輸入密碼點載入計算模塊,點計算即可生成新密碼。
將生成的新密碼復制到自定義設置里去粘貼一下就可以用新密碼登錄了。
七、驗證已經生效?
采用命令測試最快IP,如果返回多個說明沒有設置成功。
nslookup www.taobao.com 127.0.0.1:6053返回的是國內最快的IP
nslookup www.taobao.com 127.0.0.1:5335返回的是國外最快的IP
nslookup www.baiduu.com 127.0.0.1:6053返回的是國內最快的IP
nslookup www.baiduu.com 127.0.0.1:5335返回的是國外最快的IP
小結
好了今天《OpenWrt 旁路由模式下的SmartDNS+AdGuardHome設置分流與去廣告》就完成了。下一篇會繼續折騰《個人域名、DDNS動態解析、公網IP:通過ikuai軟路由端口映射高速訪問內部網絡