之前在 UniFi USG 內建的 dnsmasq 服務放入 yhost 擋廣告的清單
把廣告在 DNS 查詢時就徹底按死在地上,這樣做挺好的,因為局域網內所有上網的設備
不需要額外安裝軟體或者設定,不管是上網還是打開任何App,全部都能享受到零廣告的好處
但是 USG 一直以來都兩個致命毛病
- USG 更新升級時,放入的擋廣告清單會被清空
- 需要另外寫腳本放它自動去更新
某次在 USG 升級後又被清空,不爽了所以乾脆另尋他路,結果就找到一個開源的 Pi-hole !
這個項目有各種好處:
- 能識別阻擋全世界超過 10 萬個有害或者廣告的域名
- 阻擋廣告的效果可以在所有設備、所有系統以及所有App內
- 增進整體網路效能(因為廣告在被下載前,已經被阻擋)
- 行動設備可以用 VPN 連回家中 Pi-hole 阻擋廣告節省行動網路流量
- 有個漂亮完整的 Web 管理介面
- 提供 API ,可以在你的程式中使用
可以看下 LTT 介紹 Pi-hole 的影片:
Pi-hole 開發者目前也都很活躍,想要看完整源碼可以到 Pi-hole Github 網頁去,或者只是想要獲取他們的擋廣告清單
他們現行採用的擋廣告清單有七個,稍微看一下,各個維護都還算勤勞
而安裝好 Pi-hole 以後,系統也會在午夜時間自動抓取更新,並且自動去除重複的項目,無人值守非常方便
雖然這個項目是設計給 Raspberry Pi 的,不過也有人移植到 Docker 上面來
今天我們要介紹的就是在 Synology DSM 的 Docker 上面安裝一套 Pi-hole
在 DSM Docker 裡面下載 Pi-hole 的映像檔
在 DSM 管理頁面打開 Docker
點選「倉庫伺服器」
在搜索欄位裡面輸入「pi-hole」
點「搜尋」
點選「diginc/pi-hole」(目前 Pi-hole 把它更名為官方映像檔 pihole/pihole 了)
點選「下載」
跳出「選擇標籤」時,預設「latest」就可以了
稍等片刻以後,DSM 就會下載完畢
佈署 Pi-hole 與設定 Docker 環境變數
點選 DSM Docker 的「映像檔」
點選剛剛下載好的映像檔「diginc/pi-hole:latest」
點擊「佈署」按鈕
點擊「進階設定」按鈕
「自動重啟」建議勾選,如果當機掛了或者 DSM 重新開機後,這個容器還會自動啟動
為了避免以後升級 Docker 映像檔後設定消失,所以我們要建立本地資料夾與容器資料夾的連結
這樣容器內的設定檔就會存到 DSM 本地的資料夾,這樣也方便我們編輯
點擊「儲存空間」
點擊「新增資料夾」
DSM 本地資料夾請隨意新增兩個,分別對應兩個容器資料夾,設定完應該會跟下面圖片一樣
「/etc/pihole」這個是 pi-hole 存放設定檔的地方
「/etc/dnsmasq.d」這個是 pi-hole 存放 dnsmasq 規則的地方
在「連接埠設定」頁面是設定 DSM 與容器端口的映射,設定好以後我們連到 DSM IP 跟相應端口就能訪問到容器
點選「連接埠設定」
pi-hole 共要設定三個端口,設定完應該如下面圖片
其中因為我 DSM 已經跑一個 http 服務,所以已經佔用掉 80 端口,這邊我就改成 36778
53 端口是 DNS 伺服器專用,如果 DSM 上面沒其他 DNS Server 建議就不要修改
設定 pi-hole 環境變數,有幾項比較重要需要設定
點擊「環境設定」
這邊列出幾個比較重要的設定,完整的設定可以到 Docker 的網頁查詢
「ServerIP」這邊設定 DSM 的內網 IP 地址
「TZ」這邊設定時區,有設定時區以後,Pi-hole 會在半夜時間更新廣告清單
「WEBPASSWORD」這個是登入 Pi-hole 網頁管理頁面的密碼
「DNS1」、「DNS2」這兩個可以根據你的網路設定來決定,下圖是 OpenDNS 的,你也可以換成自己網路運營商的,不設定的話就 Pi-hole 就會使用 Google DNS
設定完以上內容後,就全部都點「確定」或者「下一步」,最後 Pi-hole 就會正常啟動了!
啟動後我們就可以透過剛剛設定的 ServerIP 來登入 Pi-hole 管理頁面
http://[ServerIP]
:[Port]
/admin
根據以上文章設定為例那就是: http://192.168.2.200:36778/admin
瀏覽器輸入以上網址,然後輸入剛剛設定的 WEBPASSWORD,就能登入管理頁面囉~
登入後就能看到更多資訊,有客戶端的請求紀錄、添加白名單與黑名單。。等等,還有 Pi-hole 的設定選項~
以下列幾個 Pi-hole 比較重要的選項
「Pi-hole DHCP Server」如果你局域網內有其他 DHCP Server 這裡就不要打開,否則會打架
「Pi-hole Block Lists」這裡可以讓你添加或刪除廣告清單,系統會在每週日凌晨 01:59 自動更新
另外他還支援 DNSSEC 功能,如果你使用 Google DNS 或者其他支援 DNSSEC 的話,這裡可以打開支援
Google DNS 在 2013 年的時候就已經支援這項服務,打開後也可以到這個網頁看看有沒有生效?
設定選項逛一圈以後,我們還需要到你路由器裡面修改一下 DNS Server 指向 Pi-hole IP
每種路由器的設定方法不同,以下是以 UniFi USG 為例
通常路由器裡面 DNS Server 應該都能設定兩個,你也可以只設定一組到 Pi-hole
但是這樣如果 Pi-hole 當機或者還沒有啟動的時候,你局域網內的設備會上不了網路
所以保險一點做法是再寫一個 DNS Server 當備援
設定完路由器以後,你可以把你的 iPhone 或者電腦重新連線,不知道怎麼做就關閉 WiFi 再打開或者關機再開機
然後請隨意開幾個網站,或者打開Facebook App之類的看看,廣告是不是變少許多呢。。。
連續兩篇都在講阻止廣告,我是有多討厭廣告呢?