適用於 NAS 不支援 Docker 的環境(例如一些 ARM 處理器的型號),處理器架構可在官網查詢;若 NAS 支援 Docker ,建議直接用 Docker 部署。
AdGuard Home 是一套透過 DNS 來擋惡意網站以及廣告(或是其他特定網站,可自行設定 allowlist / blocklist)的服務,一般瀏覽網站兩側的廣告、或 APP 上下方的橫幅廣告都可以利用 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 則複製以下網址貼上:
7. 設定 DNS
最後需要把電腦 或 router 的 DNS 改成 NAS 的 IP :
這邊的 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 交流討論:
View Comments (10)
想詢問一下,如何安裝更新呢?
您好,請問是指 AdGuardHome的更新嗎? 需要從 GitLab 下載後解壓縮,替代原本的檔案。
HI 請問在這樣的環境,該如何進行密碼重設呢? 謝謝
您好,您可以參考這裡的步驟重設密碼: https://github.com/AdguardTeam/AdGuardHome/wiki/Configuration#password-reset
或是比較簡單的方式是將 AdGuardHome 資料夾內的 AdGuardHome.yaml 刪除,重新啟動後會恢復原始設定。
您好,我的機器是 DS213j(CPU Armada 370),之前參考您的方式安裝 v0.102.0/AdGuardHome_linux_arm.tar.gz 這個版本,運行多年穩定,但最近將 213j 升級到 DSM 7.0.1-42218 ,ADH 似乎就無法正常運作,因此欲重新安裝 ADH,但不確定應該要安裝 v0.107.6 哪一個版本? 謝謝。是否要將舊版先移除?
您好,將舊版的資料夾刪除即可移除喔!若之前是安裝AdGuardHome_linux_arm.tar.gz版本並可正常運行
最新版下載armv7的版本,網址如下:
https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.6/AdGuardHome_linux_armv7.tar.gz
並用 tar -xzvf AdGuardHome_linux_armv7.tar.gz 解壓縮。
你好, 我的機器是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 也可以嗎?謝謝
您好,因為沒有用過Synology 的 router,不確定其是否具備ssh介面供連線,若您可以使用ssh進入router,可以試著安裝看看!