如何修復因 DNS 污染導致無法開啟的網站

某個網站突然怎麼都打不開了。其他網站一切正常,而這個網站昨天還好好的。你也沒有改過任何設定,這是怎麼回事?
在多數情況下,罪魁禍首是 DNS 污染(DNS poisoning / DNS cache poisoning)。本指南會一步一步教你如何確認網站是否因為 DNS 污染而打不開,並提供詳細的解決方案。DNS 投毒很常見,而且幾乎總是暫時性的。
解決方法從用時不到一分鐘的 DNS 切換,到更進階的方案,例如透過一台美國專用伺服器中轉存取,以繞過本地 DNS 問題。DNS 投毒在跨伺服器存取的情況下幾乎無法持續。先從最簡單的方法開始操作,只要網站恢復正常就可以停止。
你不需要任何專業技術。每做完一步,就測試一次網站是否能開啟。絕大多數人都能在幾分鐘內恢復存取。
要點速覽
- DNS 污染的本質是:你的裝置拿到了錯誤的網站位址(IP),導致網站無法載入。
- 快速解決辦法包括重新啟動路由器、切換到公共 DNS 伺服器(如 8.8.8.8)。
- 使用 VPN 或安全 DNS,可以在排查期間暫時繞過問題。
- 清除 DNS 快取、編輯 hosts 檔案可以解決較頑固的情況。
- 如果上述方法都無效,就需要向網路服務供應商(ISP)或網站方回報詳細錯誤資訊。
通俗理解 DNS 投毒
正常的 DNS 查詢是怎麼運作的
每次你輸入一個網址,裝置都會向 DNS 解析器(DNS resolver)請求這個網站對應的數字位址(IP)。這個過程叫做 DNS 解析(DNS resolution)。一次正常的 DNS 查詢速度非常快,在網路狀況良好的情況下,多數請求都會在 20–120 毫秒內完成。當延遲達到 150 毫秒以上時,你就會開始感覺到變慢,而超過 200 毫秒就值得仔細排查了。
| 效能等級 | 典型 DNS 查詢時長 |
|---|---|
| 快速且反應靈敏的連線 | 20–120 ms |
| 開始出現明顯延遲 | 150 ms 以上 |
| 體驗明顯卡頓 | 300 ms 或更多 |
| 值得進一步排查的門檻 | 超過 200 ms |
你的裝置會把近期的 DNS 解析結果快取在 DNS 快取中,以便下次造訪同一網站可以更快。這些快取記錄如果是正確的,就會把瀏覽器指向真正的伺服器;如果有人竄改,把正確記錄換成假的位址,你的瀏覽器就會被指向錯誤的地方,或者「無處可去」,這就是 DNS 投毒破壞信任鏈的方式。單純的查詢變慢會讓你感覺像是網站壞了,但很多時候真正的問題不在速度,而在「答案是不是對的」。
DNS 快取投毒具體做了什麼
DNS 快取投毒(DNS cache poisoning)就是用錯誤答案取代正確答案。攻擊者向 DNS 快取中插入虛假的記錄,而你的裝置會把它當成真的。這種伎倆也被稱為 DNS 快取欺騙(DNS cache spoofing)。結果很直觀:瀏覽器連向錯誤的位置,網站就打不開了。本指南討論的網站存取故障,很大機率就是這種 DNS 快取投毒引起的。
DNS 投毒既可以只針對某一台裝置,也可以影響整個區域網路。這就解釋了為什麼有的網站打不開,而其他網站卻一切正常。一個錯誤的 DNS 快取記錄只會影響到它對應的網域名稱,其他查詢依然可以回傳正確結果。DNS 投毒從來不會讓你「所有網站同時都壞掉」。
DNS 投毒攻擊往往從薄弱的路由器開始。如果你經常遇到類似的 DNS 問題,很可能是網路裡某台裝置沒有打補丁,或者路由器韌體存在漏洞,使得 DNS 投毒可以反覆成功。你通常可以透過這樣的特徵識別 DNS 投毒:只有某一部分網站有問題,其他網站正常;並且換網路(例如用手機行動數據)後就恢復。這說明 DNS 問題被限定在某個網路環境中。好消息是,DNS 快取投毒一般都是暫時性的,多數都能很快清理乾淨。接下來就用下面這些步驟來修復。
確認網站打不開是否真的因為 DNS 污染
先做一些快速排查
先從最簡單的檢查開始。在同一個網路下,用另一台裝置開啟同一個網站;然後再試試不同的瀏覽器,並開一個「無痕 / 隱私模式」視窗。再做一次強制重新整理:Windows 上按 Ctrl+Shift+R,Mac 上按 Command+Shift+R。這些操作能幫你確認問題是只出在某個瀏覽器、某個裝置,還是整個網路。
接著排除干擾因素。暫時關閉 VPN 和防毒軟體,再重新整理網頁。也檢查一下防火牆設定。過於嚴格的防火牆規則也可能封鎖某個網站,看起來就像 DNS 故障。如果關掉 VPN 後網站可以正常開啟,那說明問題來自 VPN,而不是 DNS 投毒。
哪些跡象說明是 DNS 問題
留意是否存在一個清楚的「模式」:只有部分網站打不開,而大部分網站正常。這往往暗示 DNS 解析被竄改,是判斷是否遇到 DNS 投毒的最重要訊號之一。你也可以根據瀏覽器或系統拋出的錯誤提示來判斷,例如「DNS server not responding(DNS 伺服器無回應)」或者「domain could not be found(找不到網域)」之類,都直指 DNS 層面的問題。
還有一些其他訊號可以幫助你識別 DNS 投毒:意外跳轉到陌生網站、憑證警告、首次開啟某網站時異常緩慢等,都可能是線索。最典型的還有:你造訪的 URL 和實際開啟的內容明顯不符。此時可以執行 nslookup 或 dig 指令,查看回傳的 IP 位址是否和預期一致。如果 IP 位址明顯不對,就可以大致確認存在竄改。
你還可以啟用 DNSSEC 來防止解析結果被竄改;在支援的情況下使用 DNS-over-HTTPS(DoH)或 DNS-over-TLS(DoT)對 DNS 查詢進行加密;定期做惡意軟體掃描以防止惡意程式修改 hosts 檔案;同時保持路由器和韌體為最新版本,以降低 DNS 劫持的風險。
表現 可能意味著什麼 意外跳轉 熟悉的 URL 卻開啟了陌生網站,或跳出異常的登入畫面 瀏覽器安全警告 出現「憑證不受信任」等提示,可能是仿冒網站 IP 解析結果異常 nslookup或dig回傳的位址與預期不符DNS 設定被擅自修改 裝置或路由器的 DNS 設定在你不知情的情況下發生改變
以上檢查只需幾分鐘,就能為後續的 DNS 故障排查打下相當紮實的基礎。
快速修復:優先嘗試的 DNS 投毒解決方案
重新啟動裝置並切換 DNS 伺服器
先把基礎操作做一遍。重新啟動路由器和光纖數據機 / 數據機,然後重新啟動你的電腦或手機。這可以清除很多暫時性的故障。接著釋放並重新取得 IP 位址,讓裝置重新向路由器申請網路設定。這些操作幾乎不花成本,卻經常能直接解決問題。
如果網站仍然打不開,就更換 DNS 伺服器。建議先使用 Google 的公共解析服務:主 DNS 設為 8.8.8.8,備用 DNS 設為 8.8.4.4。各平臺的 DNS 設定入口大致如下:
- Windows 11:開啟「設定 > 網路和網際網路 > 進階網路設定」,選擇目前連線,點擊「檢視其他內容(View additional properties)」,在「DNS 伺服器指派(DNS server assignment)」處點選「編輯(Edit)」,把「自動(DHCP)」改成「手動(Manual)」,開啟 IPv4,輸入
8.8.8.8和8.8.4.4,然後儲存。 - Windows 10:開啟「設定 > 網路和網際網路 > 變更介面卡選項(Change adapter options)」,在目前網路連線上按右鍵,選擇「內容」,找到「Internet 通訊協定第 4 版 (TCP/IPv4)」,點選「內容」,勾選「使用下列的 DNS 伺服器位址(Use the following DNS server addresses)」,分別填入
8.8.8.8和8.8.4.4,然後確定。 - Mac:開啟「系統設定 > 網路」,選擇 Wi‑Fi 或有線網路,點選「詳細資訊(Details)」,切換到「DNS」分頁,點擊加號,新增
8.8.8.8,再新增8.8.4.4,最後點選「好 / 確定(OK)」。 - 路由器:登入路由器管理介面,在「網際網路 / WAN / 網路」之類的頁面找到 DNS 設定,把「自動取得 DNS」改為「手動指定」,填入
8.8.8.8和8.8.4.4,儲存並套用。
用 8.8.8.8 測試還有一個好處:可以幫你判斷是不是某個內部 DNS 代理或過濾器導致的故障。如果換成公共 DNS 後網站能開啟,而換回原本的 DNS 就不行,那說明問題出在原有的本地 DNS 或過濾服務上。
為什麼這招通常有效?因為 Google Public DNS 會驗證 DNSSEC 簽章,對簽章不相符的回應直接捨棄,從而阻止注入的虛假位址;對於確實不存在的網域名稱,它會回傳真正的 NXDOMAIN,而不是被電信或中間人「劫持」的錯誤頁面,同時維持一個涵蓋全球的新鮮快取。
Wilmer van der Gaast 回顧 Dan Kaminsky 公布快取投毒漏洞時就指出,僅有 16 位隨機 ID 遠遠不夠,而且那些沒有進行連接埠號隨機化的服務對快取投毒格外敏感。
這段歷史很好地說明了「可信解析器有多重要」:一旦 DNS 伺服器本身被投毒或做了不當過濾,就會源源不絕地提供錯誤答案;而切換到可靠的解析器,則能恢復到真實的解析結果。
使用 VPN 或安全 DNS 作為暫時繞過方案
VPN 或安全 DNS(例如 DNS-over-HTTPS)可以繞開被污染的解析結果。DNS-over-HTTPS 會把查詢封裝進加密的 HTTPS 連線裡,這樣網路路徑上的第三方就無法輕易攔截或竄改,從而有效阻止 DNS 注入和惡意重新導向。可以把它看成「緊急通道」,在你必須立刻存取網站時非常有用。
不同 VPN 的防護能力也不一樣。例如 ExpressVPN、NordVPN、Surfshark、IPVanish 和 ProtonVPN 會透過專門的 DNS 處理方式來抵抗基於 DNS 的會話推斷攻擊;而 PIA、PrivateVPN、CyberGhost、Windscribe 等在部分測試中則顯示出一定的脆弱性。如果你長期依賴 VPN 來保護隱私和存取網站,建議優先選擇 DNS 處理較安全的供應商。
最後,別忘了檢查路由器韌體更新。最新韌體會修補已知漏洞,顯著降低反覆出現 DNS 錯誤的機率。花一分鐘檢查更新,往往能避免日後很多麻煩。
頑固故障的進階修復方法
清除 DNS 快取
如果 DNS 快取裡的錯誤記錄沒有被清掉,即使你已經更換了 DNS 伺服器,系統仍可能繼續使用那條「陳舊又錯誤」的答案。此時就需要手動清除 DNS 快取,強迫系統重新查詢。
在 Windows 上,以系統管理員身分開啟命令提示字元(Command Prompt),執行指令 ipconfig /flushdns。在 Mac 上,具體指令取決於系統版本。
| 平臺 / 版本 | 指令 |
|---|---|
| Windows (10, 8, 7, XP) | ipconfig /flushdns |
| macOS 10.11+(El Capitan ~ Catalina) | sudo killall -HUP mDNSResponder |
| macOS 10.10(Yosemite) | sudo discoveryutil udnsflushcaches |
| macOS 10.6(Snow Leopard) | sudo dscacheutil -flushcache |
| Chrome(瀏覽器本身的 DNS 快取) | 在網址列輸入 chrome://net-internals/#dns,按下 Enter,然後點擊「Clear host cache」 |
Chrome 維護著一套獨立於系統的 DNS 解析快取,因此除了系統層級快取之外,也要在瀏覽器裡清理一次。隨後可以在 Chrome 的「設定 > 重設設定」中重設與網路相關的設定。在 Windows 上,你還可以額外重新啟動 DNS Client 服務:開啟「服務(Services)」,找到「DNS Client」,點選「重新啟動(Restart)」。這樣可以從服務層級清空 DNS 快取,避免 DNS 投毒殘留。
編輯 hosts 檔案並重設網路設定
hosts 檔案的優先順序高於 DNS 解析,它可以在本機直接把網域名稱指向指定 IP 位址。編輯它,就可以暫時把目標網站手動指向正確的伺服器 IP。以系統管理員權限開啟該檔案:Windows 上是 C:\Windows\System32\drivers\etc\hosts,Mac 上是 /etc/hosts。然後新增一行,填入目標 IP 位址、空格、網域名稱。
修改前記得先備份 hosts 檔案;當網站恢復正常之後,記得刪除這條暫時記錄,否則以後有可能引入新的問題。
如果問題仍舊存在,可以嘗試重設整個網路設定。在 Windows 上,開啟「設定 > 網路和網際網路 > 進階網路設定 > 網路重設(Network reset)」;在 Mac 上,可以刪除目前的網路服務(例如 Wi‑Fi 設定),然後重新新增。這些操作會清除殘留的 DNS 與網路設定,重新建立連線。如果做完這些操作後仍然頻繁出現「dns server not responding(DNS 伺服器無回應)」之類的錯誤,就很可能說明問題出在更上游的 DNS 污染。
什麼時候需要聯絡網路服務供應商或網站方
該提供哪些資訊、應該有什麼預期
當你已經把自己能做的步驟都嘗試過一遍,問題依然存在,就應該考慮升級處理。若故障在整個家庭網路中都能重現,那很可能是網路服務供應商(ISP)層面的問題。你可以先在同一個路由器後面的兩台裝置上測試目標網站,再在手機上切換到行動數據進行測試:如果在家庭網路裡都打不開,但用行動數據就能開啟,那問題大多出在 ISP 或你的路由器上;如果無論在哪個網路都打不開,那很可能是網站本身遭遇 DNS 攻擊或當機。
聯絡前先收集好資訊:記下網站的 URL、完整的錯誤訊息、故障發生的大致時間段;列出你測試過的裝置和已經嘗試過的 DNS 設定;提及是否出現「dns server not responding」之類的提示;說明其他網站是否正常、是否只有這一個網站有問題。這些證據能幫助客服或技術支援更快定位 DNS 伺服器是否存在問題。
回應速度因 ISP 而異。有的 ISP 會在數小時內修復 DNS 投毒,有的則可能需要幾天。在等待期間,你可以繼續使用暫時的繞過方案,例如 VPN 或安全 DNS,以確保目標網站仍可存取。如果網站方確認這是針對其網域的攻擊,那後續修復工作主要在他們那一側。
記得把每一次溝通做個簡要紀錄。如果 DNS 污染持續超過對方承諾的時間窗口,就可以拿出這些紀錄來追蹤。有時線路上的 DNS 問題可能需要推送新韌體或更換路由器才能徹底解決,你也可以主動詢問 ISP 是否對 DNS 流量做了特殊過濾。有些 ISP 會部署透明 DNS 代理,即使你手動改了 DNS,他們仍會在中間「改寫」解析結果,這種情況下網站只有在你申請退出該機制後才能真正恢復存取。
如果在你重新啟動裝置之後仍然一次又一次遇到「dns server not responding」錯誤,這會大大強化你向客服說明問題嚴重性的理由。告訴對方你已經清除過 DNS 快取,也已經切換到公共 DNS 伺服器,並說明你具體用了哪些 DNS 位址。這些資訊能讓你的工單繞開「基礎腳本排查」,更快到達真正懂 DNS 的工程師手裡。
你還可以在另一個你信任的網站上重複同樣的檢查。如果多個網站都出現類似故障,就意味著這是更大範圍的 DNS 污染,而不是某一筆記錄出錯。可以直接請對方檢查你線路上所用 DNS 解析器的健康狀況。許多廣泛的 DNS 污染問題最後都會追溯到路由器或 ISP 端的設備設定錯誤。
建議你為對方設定一個合理的首次回應時間,例如一個工作天,並在等待期間繼續確認:只要透過 VPN 能存取目標網站,你就始終有一個可用的備援方案。保持備用 DNS 設定隨時可用,也能幫助你在問題再次出現時快速切換。
按照本文的順序執行排查步驟:先重新啟動路由器和光纖數據機,再切換到 8.8.8.8 之類的公共 DNS;如果還是不行,再試 VPN 或安全 DNS;最後再清除 DNS 快取、編輯 hosts 檔案。絕大多數 DNS 投毒案例都能在這幾步之內解決。
日常防範也很重要:在公共網路上啟用 DNS-over-HTTPS,可以降低 DNS 污染的風險;為自己準備一個可信賴的備用解析器,當主 DNS 出問題時可以迅速切換;定期更新路由器韌體,從源頭上減少 DNS 劫持和投毒的機會。
因 DNS 污染導致網站打不開,並不代表你的裝置壞了。這類問題通常是暫時的,只要按照上面的步驟操作,就可以很快修復 DNS 投毒,重新開啟網站。
常見問題解答(FAQ)
怎麼判斷是 DNS 投毒,而不是網站本身當機?
在同一個路由器下換一台裝置測試,再用手機切到行動數據測試同一個網站。如果只有在你這個網路環境下打不開,而在行動數據等其他網路能開啟,就很可能是 DNS 污染;如果在所有網路上都打不開,那更像是網站本身當機或故障。也可以順便檢查目前裝置正在使用的 DNS 伺服器位址。
切換到 8.8.8.8 一定能修好 DNS 投毒嗎?
不一定。像 8.8.8.8 這樣的公共解析器,可以繞過被竄改或被過濾的本地 DNS 伺服器,因此在大部分 DNS 投毒案例中都很有效。但如果換了之後還是打不開,那說明問題更有可能出在更上游的 DNS 節點,或者你的本機 DNS 快取還在快取錯誤結果。
VPN 能徹底杜絕 DNS 投毒嗎?
不能。VPN 或 DNS-over-HTTPS 在開啟時可以把你的 DNS 查詢從本地網路「隱藏」起來,從而在連線期間規避本地的 DNS 污染。但一旦你關閉 VPN,流量又會回到原本的 DNS 路徑上。如果本地路徑本身存在問題,DNS 投毒還是會回來。所以把 VPN 當作「暫時繞行」的方案,而不是永久治本的手段。
為什麼我已經修好一次,DNS 污染過一陣子又回來?
一般是因為某處依然存在陳舊的 DNS 快取,或者路由器沒有打補丁,持續輸出錯誤解析結果。你需要同時清理本機快取、更新路由器韌體,並確認所使用的 DNS 解析器是可信的。反覆出現的 DNS 投毒問題,通常都能追溯到網路中的某一台「問題裝置」。
DNS 污染會影響整個家庭網路嗎?
會的。如果是路由器或上游解析器被投毒,那麼所有透過它上網的裝置都會受到影響,導致整個家庭都打不開某個網站。排查時,先用手機切到行動數據測試;如果只在家裡網路打不開,那就優先在路由器層面修改 DNS 設定,並在 Windows 上重新啟動 DNS Client 服務,把舊的錯誤解析徹底清乾淨。
