身為專業的資安與 IT / Infra,我們不斷尋求更有效率、更全面的方式來提高上網的安全性。在當今充斥著追蹤器、惡意軟體與惱人廣告的數位環境中,一個乾淨、安全且高速的網路是提升工作效率與生活品質的基石。本文深入探討如何利用我們的 QNAP NAS,透過 AdGuard Home 的 Docker 部署,建構一個強大且集中化的網路廣告與惡意請求過濾系統,適用於辦公室與居家環境。
根據我們的內部測試數據,在一百萬次的 DNS 查詢中,有高達 17.22% 的請求被成功攔截,這不僅意味著更乾淨的瀏覽體驗,更代表著可觀的流量節省與安全威脅的有效降低。

向手機蓋版廣告說再見,為何選擇網路層級的廣告過濾?
傳統的廣告過濾方式,如著名的免費瀏覽器擴充套件 ublock Origin (日前也無法在 Google 瀏覽器繼續使用了),僅能保護單一裝置的單一瀏覽器,而手機如果要裝廣告阻擋 App ,通常都是要另外付費的,且每支手機都得支付費用。
不過呢,在當前這個萬物聯網的時代,其實不只是電腦和手機,實際上從智慧電視 (如 AndroidTV 為基礎的各大品牌液晶電視或 OLED TV)、平板電腦到冷氣、除濕機、攝影機等物聯網(IoT)設備,這些裝置連接著我們的網路,它們的應用程式與系統底層除了要定時連線回原廠寫在程式中的檢查更新、確認資料等伺服器外,還可能成為廣告與追蹤器的入口。
而近年大家瀏覽網路的主力變成是手機,而許多網站瀏覽頁面時,自動跳出的內文中廣告,甚至是蓋版廣告,都有不少惱人的經驗,比方說廣告設計不良,要點選關閉的X按鈕還會點錯,導致開到廣告網頁去,或根本找不到關閉的按鈕,藏在很角落或因為版面設計緣故被遮蔽了,以上種種問題,在這個網路 DNS 服務加上去後都能迎刃而解。

網路層級的過濾,是從網路連線的重要源頭,也就是從 DNS 查詢這一段來釜底抽薪,徹底解決問題。當我們辦公室或家用網路環境中的任何一台設備嘗試連線到一個網域時(例如 ads.example.com),作為網路 DNS 解析核心的 AdGuard Home 會立即識別並自動攔截阻擋此類查詢請求,使其無法連線,稱之為 DNS dropping,也稱為DNS 查詢丟包,你手機連網時,頁面自動就不會出現相關廣告,原理就是這些連去網路廣告伺服器的 DNS 請求全部都被自動攔截下來的,這種方式的優勢顯而易見:
全面覆蓋:一次設定,保護辦公室與家用網路上所有連線裝置,無需在每台設備上單獨安裝與設定。
提升效能與節省流量: 大量廣告內容與追蹤程式碼 script 在下載前就已被 QNAP NAS 上的 AdGuard Home docker 容器阻擋,可以顯著地加快網頁載入速度,長期下來會節省可觀的網路頻寬。
增強隱私與安全性: 有效阻擋已知的追蹤器、惡意軟體與釣魚網站網域,從根本上降低隱私洩露與網路攻擊的風險。
集中管理與客製化: 提供一個統一的網頁管理介面,讓我們輕鬆掌握網路活動,並根據需求自訂過濾規則,它還有內建一堆重要合法重要服務的額外阻擋設定,如不希望辦公室同仁連線到影響生產力的網站,只開放中午休息時間給同仁用,或者是家中有兒少,讓他們在休閒時間才能夠連線玩遊戲,甚至是阻擋情色內容都可在這個系統中實現。
另外, AdGuard 原本是手機上和電腦上的廣告阻擋軟體,是需要付費的,但 AdGuard Home 軟體則是以開放原始碼的形式提供給社群,也不用另外的授權費,自行安裝和維護的話,是不需要付費的,因此很值得企業與家庭都使用。

QNAP NAS + Docker:完美的硬體與平台選擇
QNAP NAS 作為一台全天候執行的網路儲存設備,具備穩定、低功耗的特性,是部署 AdGuard Home 的理想硬體平台。透過 QNAP 的 Container Station(容器工作站),我們可以利用 Docker 技術,將 AdGuard Home 執行在一個獨立、輕量化的虛擬環境中,這種方式不僅安裝簡便,更不會影響 QNAP NAS 的原有功能,實現了資源的最大化利用。
當然,如果想要更省電的裝置來處理這個任務,我們可以買樹梅派的微型電腦,安裝 AdGuard Home 在上面執行服務,這也是不錯的方式,日後我們會再教學。
實戰部署:在 QNAP NAS 上安裝 AdGuard Home
以下步驟將引導我們完成 AdGuard Home 的安裝與基礎設定:
透過Container Station安裝 (也可以透過 Portainer 開 Stacks 安裝):
登入我們的 QNAP NAS 系統。
開啟 App Center,搜尋「Container Station」並進行安裝。
建立 AdGuard Home 容器:
開啟 Container Station。
在左側選單選擇「應用程式」,然後選建立。

範例的 docker compose YAML 設定檔語法如下,請直接複製貼上到建立應用程式的視窗中,將裡面的IP改成你網路中適當的未使用IP,點選 YAML 代碼檢驗過後無誤,再來點建立,很快地映像檔就下載好,容器也開起來了。
我們更新了更好的 QNAP NAS 搭配 AdGuard Home 容器部署的 YAML 寫法 :
services:
adguardhome:
image: adguard/adguardhome:latest
container_name: adguardhome
restart: unless-stopped
environment:
- TZ=Asia/Taipei # 確保日誌的時間戳記正確
volumes:
# 建議使用 QNAP 預設的 Container 共用資料夾來做永久存放
# 確保容器更新或重建時,所有設定與過濾資料不會遺失
- /share/Container/adguardhome/work:/opt/adguardhome/work
- /share/Container/adguardhome/conf:/opt/adguardhome/conf
networks:
qnap_macvlan:
ipv4_address: 192.168.1.xx # 請更改為區網內「未使用」的獨立 IP
networks:
qnap_macvlan:
driver: macvlan
driver_opts:
# 請依照 QNAP 的網路與虛擬交換器設定,確認對應的實體網卡代號 (如 eth0 或 qvs0)
parent: qvs0
ipam:
config:
- subnet: 192.168.1.0/24 # 請替換為您目前的區網網段
gateway: 192.168.1.xx # 請替換為路由器的 IP 位址這個 YAML 寫法的幾個重點:
網路完全隔離 (Macvlan)是一大重點。給予 AdGuard Home 一個與 NAS 不同的獨立 IP(例如 NAS 是 .100,AdGuard Home 是 .53)。這樣所有的 53 (DNS)、80 (HTTP 管理介面)、3000 (初始設定) 都能維持標準連接埠,不需要刻意改成冷門的埠口,其他設備在設定 DNS 指向時也更直覺。
完整的資料持久化 (Volumes) 可將路徑直接對應到 QNAP 系統標準的 /share/Container/。不依賴系統自動產生的匿名卷,確保未來在 Portainer 或 Container Station 中進行映像檔更新時,複雜的設定檔與 DNS 統計資料都能安全保留。
時區設定 (TZ)加入 TZ=Asia/Taipei 的環境變數。這對於後續分析 DNS 請求日誌與資安除錯非常重要,能確保儀表板上的事件紀錄時間與本地時間完全一致。
自動重啟機制設定 restart: unless-stopped,確保 NAS 重新開機或是遇到意外服務中斷時,AdGuard Home 能夠在背景自動恢復執行,維持整個區域網路的穩定解析。
這個寫法無論是在 QNAP 內建的 Container Station 3 或是透過 Portainer 以 Stacks 方式建立,都能順暢執行。
不過要提醒的是,有關網路卡的指定,是 qvs0 或別的網路卡,你要先用 SSH 連進去 QNAP NAS,輸入指令看是哪一卡要用對出去的才行。
ip -4 addr show

以 CyberQ 使用的 QNAP NAS 為例,輸入該指令後列出的一推網路卡中,只有編號 18 的這個 qvs0 才是我們要指定給 AdGuard 容器使用的網路卡,填入到上面的 YAML ,存檔案就可以順利建立容器並自動執行了。
初始化 AdGuard Home:
容器成功建立並執行後,在瀏覽器中開啟 http://我們的QNAP_IP:3000,本案例是 http://192.168.2.3:3000。

按照設定精靈的指示,設定網頁管理介面與 DNS 服務的監聽介面。


接著建立我們的管理者帳號與密碼,都完成之後就可以進入正式網頁來登入改設定了。

設定介面也很簡單,可以指定紀錄保留的時間,內網每一個連線的裝置 IP 也可以標註是誰使用的,或設備名稱,這樣你在查找時會比看 IP 不知道是誰方便。預設是每天自動更新一次過濾器,要記得設定過濾器的自動收取,除了官方列出的兩個過濾器清單外,你有收到額外的黑名單資料也可以納入做列管。

上游的 DNS 伺服器我是設定常用的 DNS 清單進去,這是讓 AdGuard Home 往上做 DNS 查詢用的,它還是需要有網際網路的 DNS 對外查詢功能,才能把正確網址和 IP 對應回傳給你的裝置網路查詢請求,而在過濾器清單上的網址,就通通自動阻擋掉,也就是本服務的最重要核心功能。

設定路由器 DNS:
登入我們辦公室或居家的路由器管理介面。
找到 DHCP 伺服器或網際網路連線中的 DNS 設定。

將主要的 DNS 伺服器位址更改為我們剛剛為 AdGuard Home 容器設定的固定 IP 位址(本例是 192.168.2.3),你可以看到在本案例中,這兩個用 AdGuard Home 打造的 DNS 伺服器的連線 latency 延遲時間都只有 20ms 和 10ms ,反應速度夠快。
note: 也可以再多做一個容器來提供第二個 DNS 服務,如本例是 192.168.2.1 這是為了提供兩個 DNS 服務來一起工作,一個主,一個副,網路設備會自己去連線,一般是以第一個 DNS 為主要連線請求對象。
儲存設定並重啟路由器或防火牆。
現在,我們網路中的所有設備,都會在重新取得 DHCP 分配的 IP 後,全部自動開始使用 AdGuard Home 作為其 DNS 解析伺服器,享受無廣告且上網相對安全的網路環境。下圖中可以看到還有封鎖惡意軟體與網路釣魚的情形,詳細都可以點進去再看是誰連的,再去做應對處理。

另外,不用擔心這個容器會忙碌或崩潰,它本身非常穩定,耗用的記憶體在辦公室網路大概兩百MB以內,家用約一百MB,看連線快取數,而CPU利用率都不到個位數。

進階設定實作
要發揮 AdGuard Home 的最大潛力,以下提供幾個進階設定建議:
啟用安全搜尋與家長監護: 在「過濾」設定中,我們可以為特定裝置或整個網路強制啟用 YouTube、Google、Bing 等搜尋引擎的安全搜尋模式,並一鍵封鎖成人內容網站,為家庭與辦公室環境打造一個更安全的網路空間。
設定加密 DNS (DNS-over-HTTPS/TLS): 在「DNS 設定」中,我們可以將上游 DNS 伺服器設定為支援 DoH (DNS-over-HTTPS) 或 DoT (DNS-over-TLS) 的加密 DNS 服務(例如 Google DNS, Cloudflare DNS)。這能有效加密我們的 DNS 查詢,防止被網路服務供應商 (ISP) 或中間人窺探,進一步提升隱私安全。
精選與自訂過濾清單: AdGuard Home 已內建多個優秀的過濾清單。我們可以根據需求,在「過濾」->「DNS 封鎖清單」中添加更多針對惡意軟體、釣魚網站、追蹤器或特定地區廣告的清單。同時,善用「自訂過濾規則」功能,手動封鎖或允許特定的網域,實現更精細化的管理。例如,我們可以為辦公室網路封鎖已知的生產力殺手網站。
下面是 AdGuard Home 內建的可封鎖熱門服務一覽,可以自訂要點選欲封鎖的服務內容,還可以選那些時段封鎖那些時段不封鎖。

用戶端識別與個別化設定: 在「用戶端設定」中,我們可以為網路中的特定裝置(透過 IP 位址或 MAC 位址識別)設定不同的過濾規則。例如,我們可以為孩子的裝置設定更嚴格的家長監護規則,同時允許大人的裝置有較高的存取權限。
如下圖所示,比方說你在前面服務把抖音封鎖,那抖音相關的網域都會被擋掉,因此辦公室網路或家裡就會連不上tiktok和douyin網域的所有服務。而有阻擋色情網站的話也是,就不需要中華電信的色情守門員了,費用可以省下來。

疑難排解
特定網站或應用程式無法正常運作: 這通常是因為該服務的必要網域被過濾清單誤擋。我們可以登入 AdGuard Home 的「查詢日誌」,找到被封鎖的相關網域,並將其加入允許清單。
容器無法啟動或連接埠衝突: 確保我們在建立容器時所設定的主機連接埠(特別是 53 埠)未被 QNAP NAS 的其他服務(如 DNS Server)所佔用。
透過在 QNAP NAS 上部署 AdGuard Home,我們不僅是為辦公室與居家網路架設了一道堅實的廣告防火牆,更是建立了一個集中化、高效率且易於管理的網路安全核心。從顯著的流量節省、網頁載入速度的提升,到對隱私追蹤與惡意威脅的有效防禦,其帶來的效益是全面且深刻的。
這套方案充分利用了現有硬體資源,以極低的成本實現了企業級的網路過濾功能,是每一位重視網路品質與安全的 IT 人與進階使用者的明智之選。現在就動手實踐,親身體驗由 AdGuard Home 帶來的純淨網路環境吧,向手機蓋版廣告說再見。
https://cyberq.tw/2025/06/21/nas-portainer-docker













