Synology NAS 設定 AdGuard Home

適用於 NAS 不支援 Docker 的環境(例如一些 ARM 處理器的型號),處理器架構可在官網查詢;若 NAS 支援 Docker ,建議直接用 Docker 部署

AdGuard Home 是一套透過 DNS 來擋惡意網站以及廣告(或是其他特定網站,可自行設定 allowlist / blocklist)的服務,一般瀏覽網站兩側的廣告、或 APP 上下方的橫幅廣告都可以利用 AdGuard Home 來阻擋

開啟 AdGuard Home 前
開啟 AdGuard Home 後

基本的原理是,這些廣告都有固定的網址,例如 ads.flurry.com ,網址會經由 DNS (Domain Name System) 對應到 IP ,網頁再從該 IP 下載廣告圖片等資料,那今天 AdGuard Home 就是在對應 IP這步驟動手腳,讓其沒有辦法正確對應到廣告商的IP,所以就得不到圖片啦~(但也有些例外,例如 Facebook 的廣告內容和動態牆內容是使用同一個網址,就沒辦法用這種方式來阻擋廣告)

白話一點講,過去要打電話給某人,會去通訊錄找到 某某某 -> 0912-345678姓名 -> 電話 對應資料,今天就是把通訊錄改成 某某某 -> 000 ,要撥打電話時,會發現再也連絡不上 某某某 了。

AdGuard Home 有網頁介面可以查看流量、被阻擋的網站統計,以及自行匯入允許/阻擋名單:

1. 確認 CPU 架構

CPU 型號除了可以在官網查詢,也可直接登入 Web 介面,在 Control Panel –> Info Center 檢視

我這邊用的 DS216play 是採用 STM Monaco STiH412 CPU ,屬於 ARMv7 架構,所以待會在下載 AdGuard Home 時,要選擇 AdGuardHome_linux_arm.tar.gz 這個檔案。

2. 開啟 SSH

因為下載需用 SSH 進入 NAS ,要先在 Control Panel -> Terminal & SNMP 開啟 SSH 服務:

接者利用 cmd (Windows) 或 Terminal (macOS) 使用 SSH 登入 NAS:

ssh username@x.x.x.x

username 就是登入 NAS 網頁的帳號,要有管理者權限; x.x.x.x 是 NAS 的 IP 。接著可能會提醒說第一次以 SSH 方式連接該 IP ,按 yes 確認後,輸入密碼。

若有安全上的疑慮,建議完成 AdGuard Home 安裝後將 SSH 設定回關閉。

3. 下載 AdGuard Home

為了簡化設定,我們這邊會以 root 使用者來執行 AdGuard Home ,首先需要轉換身分至 root ,輸入以下指令並輸入使用者密碼:

sudo -i

如果沒出錯的話,會看到每行前面從 username@... 變為 root@... 。接著進入 root 的家目錄,並下載 AdGuard Home (請自行修改檔案 url):

cd /root

wget https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.102.0/AdGuardHome_linux_arm.tar.gz

tar -xzvf AdGuardHome_linux_arm.tar.gz

到這裡後,用 ls 應該會看到 /root 資料夾有一個 .tar.gz 檔,以及一個 AdGuardHome 資料夾(藍字)

4. 初始設定

我們這邊要先進行第一次執行的初始設定,先 cd AdGuardHome./AdGuardHome 會看到下方跳出一些文字:

接著在瀏覽器網址列輸入 NAS IP : 3000 ,例如 192.168.2.15:3000

注意,這邊要將 Admin Web Interface 的 port 改成別的,避免與 Synology NAS 的網頁介面衝突:

例如可以改成 3000 。下面的 DNS server Port 不要變更,接著建立帳號就完成啦。最後回到 cmd / Terminal ,鍵盤按住 Control + C 中斷程式,cd .. 回到上一個目錄,rm AdGuardHome_linux_arm.tar.gz 刪除剛下載的壓縮檔,最後輸入 exit 兩次就可以關閉 cmd / Terminal 了。

5. 設定排程

為了確保 NAS 每次啟動都會自動執行 AdGuard Home ,我們需要設定排程~

回到 Synology 的網頁介面,在 Control Panel -> Task Scheduler 點選 Create -> Triggered Task -> User-defined script :

Task 名稱輸入 AdGuardHome 即可,使用者請選擇 root

在 Task Settings 下方 User-defined script ,請輸入:

/root/AdGuardHome/AdGuardHome -l /dev/null

其中 -l 後面是指將執行日誌( log 檔)導向至空檔案,而不顯示出來或是存起來。

最後點選 OK 儲存,並打勾啟用,接著按右鍵點選 run 就完成啦!

6. 設定阻擋名單

因為 AdGuard Home 預設是沒有啟用 blocklist ,需要進入 Web Admin Interface 點選 Filters -> DNS blocklists ,把下面三個自動帶入的 list 打勾啟用:

如果像我一樣不喜歡內容農場的話,可以新增一條阻擋內容農場網址的名單:點選下方綠色按鈕 Add Blocklist , 再點 Add a custom list , Name 輸入「內容農場」即可, Url 則複製以下網址貼上:

https://raw.githubusercontent.com/danny0838/content-farm-terminator/gh-pages/files/blocklist/content-farms.txt

設定阻擋名單 (blocklist)

7. 設定 DNS

最後需要把電腦 或 router 的 DNS 改成 NAS 的 IP :

電腦端修改 DNS
router 端修改 DNS

這邊的 DNS server 就是前面例子的 通訊錄 啦~兩種方式選一種操作就好,從 router 端修改會比較方便,因為這樣所有連上該 router 的設備都會自動套用此 DNS 設定囉。注意 Alternate / Secondary DNS server 請留空,這個等於是備用的通訊錄,如果主通訊錄找出來的電話號碼無效,會再查詢備用通訊錄,因此這邊不要額外做設定~

基本的安裝設定就介紹到這裡啦~其他 AdGuard Home 的設定可以查閱 wiki

A. 手機使用自訂 DNS

這裡介紹一下該如何用 Android 手機連到自訂的 DNS ,來達到擋廣告以及惡意連結的效果(不限於 wifi 網路,在外頭使用 4G 網路也有效)。

首先要確認家裡的 IP 為固定 IP ,家用網路通常使用 PPPoE 連線且沒有特別申請的話為非固定制;社區網路或者有特別申請的話才會是固定 IP 噢。

  • 固定制 IP:利用 http://ipinfo.io/ip 記下 IP 位置即可

接著到 router 設定頁面做 port forwarding ,這裡以 ASUS 的 router 設定為例,本地 IP 填入 NAS 的 IP (例如上方範例的 192.168.2.15), 本地通訊埠填入 53 ,通訊協定選擇 UDP ,通訊埠範圍則是要看是否為撥號網路(PPPoE)或者社區網路(DHCP):

  • 撥號網路(PPPoE),通訊埠範圍填入53即可,或者擔心被惡意程式try,可以選擇自己喜歡的數字(例如12345)
  • 社區網路(DHCP),因為 router 拿到的不是外部 IP ,還要再經過一層 NAT ,這邊需要聯絡社區網路公司請他們開 port (通常是大於 10000 的 port ,例如 12345),通訊埠範圍就填入 12345 。

接著到 Play 商店找 DNS Changer (有好幾個,下載一個順眼的就好),在進階設定開啟 custom port :

接著在 primary server 填入 「外部IP : port 」即可,例如 http://ipinfo.io/ip 查到的 IP 是 1.2.3.4 ,通訊埠範圍填寫的是 12345 ,這邊則應該輸入 1.2.3.4:12345 如圖:

記得上面說過的, secondary server 不要填寫噢。最後再按 START 就 OK 啦!可以到 AdGuardHome 的 Query Log 頁面查看是否有手機的 DNS query ,這樣手機瀏覽網頁、使用 Mo PTT 、 PiTT 或任何上下方有廣告欄的 APP 都不會有廣告啦。

有問題歡迎留言或到我的 Discord 交流討論:

Frigate | NVR | HA | TrueNAS 相關討論的 Discord 連結

View Comments (10)

    • 您好,請問是指 AdGuardHome的更新嗎? 需要從 GitLab 下載後解壓縮,替代原本的檔案。

  • 您好,我的機器是 DS213j(CPU Armada 370),之前參考您的方式安裝 v0.102.0/AdGuardHome_linux_arm.tar.gz 這個版本,運行多年穩定,但最近將 213j 升級到 DSM 7.0.1-42218 ,ADH 似乎就無法正常運作,因此欲重新安裝 ADH,但不確定應該要安裝 v0.107.6 哪一個版本? 謝謝。是否要將舊版先移除?

  • 你好, 我的機器是synology ds218+

    剛剛用docker成功安裝了adguard home在nas上
    用主router (asus ax86u) 上網, lan和wan dns指向NAS上網都沒有問題, lan 和wifi都能連到, 亦成功封鎖廣告

    但用aimesh node (ax55u) 上的時候, 就所有device都連不到wifi...要刪掉主router 的dns設定才能成功再次連接

    我想問是否router 設定錯了? 但我找不到mesh node那裡可以做設定...
    謝謝.

    • 你好,因為沒用過ASUS 的 AiMesh ,不確定您的網路架構,可能可以先試試看用電腦連上AiMesh Node後,從電腦端設定DNS,確認是否可以正常擋廣告。

    • 您好,因為沒有用過Synology 的 router,不確定其是否具備ssh介面供連線,若您可以使用ssh進入router,可以試著安裝看看!

Related Post