單一網站 ERR_CONNECTION_RESET
只有一個網站出現 ERR_CONNECTION_RESET,其他都正常?逐步檢查:網路、擴充功能、Proxy、DNS、時鐘,以及用 curl 判斷 SNI 過濾。
其他網站都正常,偏偏有一個一直顯示「無法連上這個網站」和 ERR_CONNECTION_RESET。重新整理也沒用。這份指南是一棵決策樹。每一步不是找到原因,就是排除一個原因,順序從最快的檢查到最能說明問題的檢查。
「連線被重設」到底是什麼意思
TCP 連線可以好好地結束,也可以被一個重設封包(RST)立刻拆掉。如果在網頁送達之前收到重設,Chrome 和其他 Chromium 瀏覽器就會顯示 ERR_CONNECTION_RESET。Firefox 則會顯示類似的「連線已被重設」頁面。重設可能來自網站的伺服器、你電腦上的軟體,或網路中間假冒成兩端之一的裝置。
這就是同一個錯誤會有這麼多種原因的理由。關鍵在於找出重設是誰送的、在什麼時候送的。
步驟 1:真的只有一個網站嗎?
打開兩、三個不相關的網站,包括一個你很少去的。如果有好幾個都打不開,問題出在你的連線、路由器或裝置,而不是那一個網站。重新啟動路由器,並檢查同一個網路上的其他裝置是否正常。如果只有一個網站打不開,就繼續往下。
步驟 2:是不是只在一個網路上出問題?
這是資訊量最大的測試,而且免費。改用行動數據而不是 Wi-Fi 開啟這個網站,或讓筆電透過手機的網路共用上網。如果網站在一個網路上打得開,在另一個網路上被重設,就代表失敗的那個網路有關係。常見原因請看為什麼網站用行動數據打得開,用 Wi-Fi 卻不行?如果在哪裡都打不開,比較可能是網站本身或你的裝置的問題。
步驟 3:換個瀏覽器,用無痕視窗,關掉擴充功能
試試私密或無痕視窗,大部分擴充功能在裡面預設是關閉的。接著換另一個瀏覽器試試。廣告封鎖器、隱私擴充功能、「安全瀏覽」外掛和企業瀏覽器政策,都可能關閉連線。如果網站在無痕視窗裡打得開,就逐一重新啟用擴充功能,直到錯誤再次出現。
步驟 4:關閉其他 VPN、Proxy 和 HTTPS 掃描
任何位在你流量路徑上的東西,都可能重設它不喜歡的連線:
- 其他 VPN 或 Proxy App。把它完全關閉,再測試一次。
- 防毒軟體的「HTTPS 掃描」或「網頁防護」。有些資安套件會檢查加密流量,並切斷它們認為有風險的連線。暫時停用這項功能來測試,之後再重新開啟。
- 系統 Proxy。在 Windows 上,查看「設定 → 網路和網際網路 → Proxy」。在 macOS 上,查看「系統設定 → 網路 → 你的連線 → 詳細資訊 → 代理伺服器」。你不認得的 Proxy,或舊 App 留下來的 Proxy,可能會讓個別網站打不開。只移除你確定是自己設定的,如果是受管理的電腦,請詢問 IT 團隊。
步驟 5:清除 DNS 快取,試試加密 DNS
如果網站換了伺服器,你的裝置可能還在用舊位址,這可能造成重設或逾時。清除快取:
# Windows (Command Prompt)
ipconfig /flushdns
# macOS
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
# Chrome's own cache: open chrome://net-internals/#dns and click "Clear host cache"
接著,把你網路的回應和獨立解析器的回應做比較:先執行 nslookup example.com,再執行 nslookup example.com 1.1.1.1。如果結果不同,而且只有獨立解析器的回應能用,那問題就出在你網路的 DNS。加密 DNS 可以解決這類封鎖,請看 DoH 和 DoT。光是位址不同並不能證明什麼,因為大型網站會給不同網路分配不同的伺服器。
步驟 6:檢查日期和時間
時鐘錯誤通常會造成憑證錯誤而不是重設,但檢查一下只要十秒。開啟自動設定日期和時間,然後重新整理。千萬不要為了「越過」打不開的頁面,就點擊略過憑證警告。
步驟 7:網站掛了嗎?
查看網站的狀態頁面或官方社群帳號,或使用公開的「是大家都打不開還是只有我」檢測工具。如果網站掛了,就等一下。請記得,檢測工具是從它自己的伺服器測試的,所以它顯示「正常」並不代表你的網路連得到。
步驟 8:用 curl 看懂重設
如果網站仍然只在一個網路上被重設,就看看交握過程本身。curl 內建於 Windows 10 和 11、macOS 以及大多數 Linux 系統。在終端機中執行它,把 example.com 換成你的網站:
curl -v https://example.com
正常的連線會印出類似下面幾行,接著是網頁的標頭。確切用字取決於你的 curl 版本和 TLS 函式庫:
* Trying 203.0.113.10:443...
* Connected to example.com (203.0.113.10) port 443
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
...
< HTTP/2 200
指向依名稱過濾的模式長這樣:
* Trying 203.0.113.10:443...
* Connected to example.com (203.0.113.10) port 443
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* Recv failure: Connection reset by peer
curl: (35) Recv failure: Connection reset by peer
逐行閱讀。「Connected」代表和伺服器 IP 位址的 TCP 連線成功了,所以位址並沒有被直接封鎖。「Client hello」是第一則 TLS 訊息,它在一個叫 SNI 的欄位中以明文帶著網站名稱。緊接著出現的「Connection reset by peer」代表,名稱一露出來,就有東西在伺服器回應之前切斷了連線。有些網路則會悄悄關閉連線,curl 會把它回報為非預期的檔案結尾或 SSL「syscall」錯誤,Chrome 則可能顯示 ERR_CONNECTION_CLOSED。
和其他結果比較:
| curl 顯示的內容 | 可能的意思 |
|---|---|
| Could not resolve host | DNS 故障或 DNS 封鎖。回到步驟 5 |
| 卡在「Trying」,然後逾時 | IP 位址連不到:IP 封鎖、防火牆或伺服器掛了 |
| 在「Client hello」之後立刻被重設或關閉,而且只發生在一個網路上 | 很可能是該網路的 SNI 過濾 |
| 交握完成,接著出現 HTTP 錯誤碼 | 網站有回應。問題在網站那邊或你的帳號 |
想讓判斷更有把握,就在另一個網路上執行同樣的指令。如果在那裡成功,過濾器就屬於第一個網路。這不是在猜某種罕見狀況。OONI 和網際網路與社會中心(CIS)在 2020 年的一項研究發現,在 Bharti Airtel 上,連到特定網站的 TLS 連線會在 ClientHello 之後立刻被切斷,而在 Reliance Jio 上則是結合目的地位址的 SNI 過濾。CIS 另外也回報了 Jio 使用 SNI 檢測,這份報告在 ntc.party 論壇上也有人討論。更多背景請看:如何檢查網站是否被封鎖。
GreenTunnel 在哪些情況有幫助,哪些沒有
GreenTunnel 是我們做的裝置端本機 VPN,所以閱讀這部分時請記得我們有立場。它針對上面原因中的兩個:
- SNI 過濾。它會改造連線最初的 TLS 封包,例如分割 Client hello 或它的 TLS 記錄,讓尋找網站名稱的過濾器看不到完整的名稱。原理請看 SNI、DPI 與 TLS 記錄分割。
- DNS 封鎖。查詢透過加密 DNS(DoH 或 DoT)送到 Cloudflare、Google 或 Quad9,所以網路無法悄悄回傳假的回應。
它的檢測網址工具會在你目前的網路上,針對一個網站完成步驟 5 和步驟 8 的比較,並告訴你網站是被名稱過濾、收到假的 DNS 回應、被依 IP 位址封鎖,還是一切正常。如果有某種技術有效,你可以按使用此技術。
以下情況它幫不上忙:
- 網站掛了,或重設來自網站自己的伺服器或防護服務,
- 封鎖是依 IP 位址進行,表現為在「Trying」時逾時,
- 公司、學校或其他受管理的網路刻意封鎖該網站。那個網路的規則由它的擁有者決定。請遵守相關政策,如果工作需要存取,請詢問管理員,
- 原因是你自己裝置上的擴充功能、防毒軟體或過期的 DNS。請直接處理這些問題。
坦白說明限制與負責任的使用
GreenTunnel 不會隱藏你的 IP 位址,也不是匿名工具。它無法繞過 IP 封鎖、斷網或白名單,也不保證能開啟任何特定網站。過濾器會隨時間改變,各家 ISP 也不一樣,所以今天的結果到下個月可能就不同了。
常見問題與解答
ERR_CONNECTION_RESET 一定代表網站被封鎖嗎?
不一定。擴充功能、防毒軟體的 HTTPS 掃描、殘留的 Proxy、過期的 DNS 或網站本身都可能造成它。只有當重設只發生在一個網路上、緊接在 Client hello 之後,而且網站在別的地方打得開時,封鎖的可能性才比較高。
為什麼網站用行動數據打得開,用 Wi-Fi 卻被重設?
兩個網路使用不同的供應商、解析器和過濾器。其中一個可能會讀取網站名稱,或以不同方式回應 DNS。在兩個網路上都執行 curl -v,比較各自停在哪裡。
清除 Cookie 能解決連線重設嗎?
很少能。Cookie 是在連線建立之後才送出的,而大多數重設發生在那之前。當網站本身拒絕了有問題的工作階段時,清除網站資料會有幫助,但這種情況通常會顯示 HTTP 錯誤。
GreenTunnel 能解決公司防火牆造成的重設嗎?
它不是為此設計的。受管理的網路會依擁有者的政策封鎖網站。請詢問管理員,而不是試著繞過。
資料來源
- OONI 和網際網路與社會中心,Investigating TLS blocking in India,2020 年 7 月。
- 網際網路與社會中心,Reliance Jio is using SNI inspection to block websites。
- ntc.party 論壇,SNI filtering by Indian ISP Reliance Jio。
- curl 專案,curl 使用手冊(
-v選項)。