起因
幾天前看到幾篇瀏覽器 AdBlock 以及其他外掛效能大戰,無意間看到一個有趣的專案:Pi-Hole (RASPBERRY PI AD-BLOCKER)。
原來是透過 dnsmasq 來提供 dns service (tcp/udp 53),並藉由網路上定期維護的幾份黑名單來阻擋域名解析…
Dnsmasq is a Domain Name System (DNS) forwarder and Dynamic Host Configuration Protocol (DHCP) (more information)
這樣就可以把廣告 擋在你的電腦之前;而不是先讀取完廣告,才將其隱藏或刪除網頁上的元素!
DEMO
原理
原本顯示廣告流程應為:
- 從 好棒棒廣告公司.com 取得廣告程式 or 影片 or 圖片
- 詢問 DNS Server adserver.com IP 位置 <— 黑手伸入的地方
- Download IP 位置的廣告
- 顯示/執行 廣告
透過修改本機裝置的 DNS Server 將其指為 127.0.0.1 位置,廣告流程就會變成:
- 從 好棒棒廣告公司.com 取得廣告程式 or 影片 or 圖片
- 詢問 AD-ZaiJian (DNS Server) 好棒棒廣告公司.com IP 位置
- AD-ZaiJian 中的 dnsmasq 開始查詢 好棒棒廣告公司.com 是否存在黑名單中
是 就回覆 127.0.0.1,否 將其查詢往上透通 (預設 8.8.4.4, 8.8.8.8 Google 大神 DNS Service) - 如此一來 好棒棒廣告公司.com 的廣告即無法被成功下載 (因為 127.0.0.1 是…你懂得)
原始版本的 Pi-Hole 比較搞剛,還多用了一個 Web Server 上面放空白網頁跟圖片,我目前覺得有點多餘跟複雜
修改 Pi-Hole 成為 Docker Image
安裝
由於已經包裝成 Docker Image 並放置在 Docker Hub 上公開下載;所以我們可以很輕鬆地在不同平台上運行 AD-ZaiJian
Raspberry Pi 2 與 其他支援 Docker 的平台 (Ubuntu/Debian/…)
λ ~/ export IMAGE_NAME=zack/ad-zaijian-armhf # (Raspberry Pi 2 為 zack/ad-zaijian-armhf) |
搞定,接下來把手機/裝置的 DNS 設定改為 Server IP,這邊例子為 192.168.1.130,大功告成!
Synology DS 713+
圖片比較多的關係,另開一篇…說明:安裝 AD-JaiJian 在 Synology DS 713+(尚未完工)