Thomas 在 Windows WeChat(桌面版微信)朋友發來一大堆語音。平常長按語音可以選「轉文字」,但這天整天按下去——按鈕毫無反應。不轉、不報錯、不轉圈,就是死掉。
他第一反應不是怪微信,而是想到:自己家裡剛裝了 AGH,會不會把誰擋了?
- AGH 擋了
dns.weixin.qq.com——微信找語音伺服器必經的訊號塔。 - 訊號塔被擋 = 微信不知道要去哪個機房轉文字 = 整個功能死掉。
- 加 25 條白名單規則放行微信+騰訊全家族,重啟 AGH,清 DNS 快取 → 復活。
- whitelist(白名單)格式:
@@||域名^。
今天微信派了一個「語音轉文字翻譯員」來你家收語音、送回文字稿。
但警衛看到他的工作證寫著「dns.weixin.qq.com(微信 DNS 端點)」,覺得這名字有點像廣告,把他擋在門外。
翻譯員進不來 → 你家的語音永遠卡在「還沒送到翻譯中心」 → 按鈕按了沒反應。
解法:去警衛室,把微信相關的工作證名字全部寫進「whitelist(白名單,放行清單)」,警衛以後看到就放行。
補充兩個名詞:
- DNS(Domain Name System,網域名稱解析):把「weixin.qq.com」這種人類看得懂的名字,翻譯成機器認得的 IP(網路地址)。警衛 AGH 就是管這個翻譯過程的。
- Query Log(查詢日誌):AGH 的工作流水帳,記錄誰查了什麼、放行還是擋下。就像警衛室的監視器錄影。
NotFilteredWhiteList(表示命中白名單放行),然後 Thomas 在 Windows 跑 ipconfig /flushdns 清本機 DNS 快取。微信重新開啟,轉文字復活。從 Query Log 搜出以下 4 個被 AGH 標記為「blocked」的域名。影響等級照重要性排序:
| 等級 | 域名 | 作用(人話) | 被擋後果 |
|---|---|---|---|
| 🔴 致命 | dns.weixin.qq.com | 微信自己的 DNS(網域解析)端點,用來查找語音轉文字伺服器在哪個機房 | 語音轉文字整個死掉 |
| 🔴 致命 | aedns.weixin.qq.com | 微信備用 DNS 端點,主端點失敗時會走這個 | 備援也死 = 徹底無救 |
| 🟡 雜項 | otheve.beacon.qq.com | 騰訊 beacon(用戶行為統計,俗稱遙測)伺服器 | 不影響功能,但日誌會一直吵 |
| 🟡 雜項 | badjs.weixinbridge.com | 微信 JS Bridge(JavaScript 橋接)的錯誤上報端點 | 不影響功能 |
只修 🔴 那兩個就能讓功能復活,🟡 兩個順手加入白名單是為了日誌乾淨。
AGH 提供 REST API,可以用 curl(命令列打 API 的工具)抓取日誌。把下面的 NAS_IP、USER、PASS 換成你家 AGH 的實際值:
# 抓最近 200 筆查詢,用 grep 篩出被擋(blocked)且含關鍵字的 curl -s -u USER:PASS \ "http://NAS_IP:8053/control/querylog?limit=200" \ | grep -E "blocked.*(weixin|qq\.com|tencent)"
如果不會 grep,直接用瀏覽器打開 http://NAS_IP:8053 進 AGH Web 介面 → Query Log → 搜尋框打「weixin」,按 Blocked 過濾,一樣看得到。
AGH 白名單格式:@@||域名^。開頭 @@ 表示放行,|| 是前綴錨點,^ 是後綴錨點。
進 AGH Web 介面 → Filters → Custom filtering rules,貼入以下規則,按 Apply:
小提醒:@@||qq.com^ 是最粗的保險——整個 qq.com 根域放行。如果你不想這麼粗,把這行刪掉,靠前面細項支撐;如果你懶得管細節,保留這行最省事。
AGH 提供 check_host API(測試端點),可以模擬「如果現在有人查這個域名,會被放行還是擋下」:
# 測試 dns.weixin.qq.com 是否放行 curl -s -u USER:PASS \ "http://NAS_IP:8053/control/filtering/check_host?name=dns.weixin.qq.com" # 期望看到: {"reason":"NotFilteredWhiteList","rules":[...]} # 如果還是被擋會回: {"reason":"FilteredBlackList","rules":[...]}
確認回傳 NotFilteredWhiteList 後,回 Windows 清 DNS 快取:
# Windows CMD 或 PowerShell 執行 ipconfig /flushdns # 看到這行就成功: 已成功刷新 DNS 解析程式快取。
然後重啟 WeChat,朋友長按語音 → 轉文字 → 復活。
網路上很多教學會叫你「清網路」時跑 ipconfig /release 再 /renew。
⛔ 禁止!這兩個指令會把電腦的 IP 地址退還給路由器、再重新申請,過程會斷網 10 秒到幾分鐘不等。
Thomas 之前試過一次,結果整台電腦斷網 10 分鐘才回來(WiFi 卡在「正在取得 IP」),還牽連到正在跑的遠端任務全部掉線。
✅ 只要跑 ipconfig /flushdns 就夠了——這只清 DNS 快取,不會動網路連線本身。幾毫秒完成,不斷網。
記憶口訣:DNS 問題只用 flushdns;release/renew 是修 IP 衝突用的,平時絕不碰。
AGH 的廣告/追蹤清單常常誤傷通訊 App——它們的伺服器名稱往往含 beacon、analytics、telemetry、report 這類字眼,會被 AGH 當成遙測擋下。以下是常見受害者:
📞 Microsoft Teams
*.teams.microsoft.com *.skype.com statics.teams.cdn.office.net主要擋點:skype.com 被一些清單當追蹤域。症狀:視訊卡頓或無法進會議。
🎥 Zoom
*.zoom.us zoomgov.com cdn.zoom.us主要擋點:log.zoom.us 容易被擋。症狀:會議連不上或中途掉線。
🎮 Discord
*.discord.com *.discord.gg cdn.discordapp.com主要擋點:discord-analytics.com 被封後登入卡住。症狀:顯示 connecting 轉不停。
💬 Signal
*.signal.org textsecure-service.whispersystems.orgSignal 對 DNS 敏感,任何 DNS 查詢失敗都會導致「訊息無法送達」。
✈️ Telegram
*.telegram.org *.t.me *.telegram-cdn.org主要擋點:tg.dev 被一些中國清單擋。症狀:貼紙/檔案下載失敗。
📱 其他可能受害者
LINE(line-apps.com) Slack(slack-edge.com) WhatsApp(whatsapp.net)凡是用了 CDN(內容分發網路)或 beacon 統計的 App,都可能出事。
通用解法:AGH 裝好後前 2 週每 2-3 天去 Query Log 看一次 Blocked,搜你常用 App 的關鍵字(weixin / teams / zoom / discord / signal / telegram),看到誤殺的立刻加白名單。2 週後穩定了就不用常查。
nslookup dns.weixin.qq.com 測試,如果回傳 NXDOMAIN 或空 IP,就是上游擋了。解法:換 DNS 伺服器(例如 1.1.1.1 或 8.8.8.8)試試。short/long/voice 加 sz/hk/minor 各地 CDN)。今天用 A 伺服器、明天用 B 伺服器。一次把整個家族加進白名單,才不會隔兩天又壞。這就是一勞永逸的代價——多寫幾行規則換永不翻車。ipconfig /flushdns 是必須的。手機上沒辦法輕易清快取,重啟 App 或切飛航模式再打開最快。@@||域名^ 可以換成純域名嗎?@@=放行、||=前綴錨點、^=後綴錨點(確保 weixin.qq.com 不會意外匹配 fakeweixin.qq.com)。寫錯格式不會報錯但不會生效,所以務必照抄。