
前言
使用自架的 AdGuard Home DNS 時一直有出現無法使用 google map 的短連結,點開後無法顯示地點的問題 (例如 maps.app.goo.gl 或 https://maps.app.goo.gl/YGhkKLZZWLPADNrD7?g_st=il) ,一開始不知道的時候一直以為是 google 壞了,直到問了其他人說可以正常顯示之後才開始除錯,最後發現只要關閉 AdGuard Home 就能正常顯示!沒想到原來是 AdGuard Home 的鍋
問題描述與現象
當環境中啟用 AdGuard 防護時,點擊他人分享的地標網址,會出現以下兩種典型錯誤:
- iOS 系統提示: 彈出「不支援的連結」,頁面完全停滯。
- 瀏覽器畫面提示: 網頁跳轉至 Firebase 服務並顯示 「Dynamic Link Not Found」 錯誤,並伴隨
Request (...) cannot be redirected again的提示。
當暫時關閉手機的 AdGuard 或中斷阻擋時,連結卻能立刻恢復正常,直接喚醒 Google Maps App。
根本原因分析
此問題並非單一因素引起,而是 手機本地端攔截機制 與 遠端 DNS 廣告過濾清單 共同產生的連鎖反應:
1. 廣告過濾清單「誤殺」基礎跳轉網域
在自架 AdGuard Home 的查詢記錄中,可以觀察到手機在嘗試解析地圖連結時,以下兩個關鍵網域遭到過濾清單攔截:
firebasedynamiclinks.googleapis.com(Firebase 動態連結服務)clientservices.googleapis.com(Google 用戶端服務)
Google Maps 的短網址極度依賴 Firebase 機制在背景進行深層跳轉 (Deep Linking)。當這些網域在 DNS 層級被直接封鎖回傳空值時,手機便無法解析出真正的地圖目標網址。
2. 本地端網址追蹤保護機制竄改參數
iPhone 本地端的 AdGuard App 若開啟了「網址追蹤保護」,會自動將網址後方帶有的 ?g_st=il (Google 用於標記 iOS 分享來源的參數) 等追蹤代碼強制修剪。一旦網址結構在跳轉前被變更,iOS 的「通用連結 (Universal Links)」機制就會失效,無法直接喚醒 Google Maps App,進而將流量丟給瀏覽器,最終撞上已被 DNS 阻擋的 Firebase 死胡同。
詳細解決步驟
調整自架的 AdGuard Home 後台將被誤殺的 Google 基礎服務放行。
登入 AdGuard Home 網頁管理後台。
進入上方選單的 「過濾器」 (Filters) -> 「自訂過濾規則」 (Custom filtering rules)。
在文字輸入框中,移至最下方並加入以下放行規則 (每行一條,請勿漏掉
@@||與^符號):@@||firebasedynamiclinks.googleapis.com^ @@||clientservices.googleapis.com^點選 「套用」 (Apply) 儲存設定。
改完之後點選 map 的短連結就能正常顯示地點了
常見問答 (FAQ)
Q:將這些 Google 網域設為白名單後,手機會開始出現廣告嗎?
不會。 本次放行的 firebasedynamiclinks.googleapis.com 與 clientservices.googleapis.com 屬於 Google 的後端功能性基礎設施與跳轉轉發服務,而非廣告聯播網的素材伺服器 (Ad Servers)。真正的廣告域名 (如 googleads.g.doubleclick.net 等) 依然會被你的 AdGuard Home 黑名單牢牢擋下。這種精準放行只會修復系統功能,不會導致廣告氾濫。