單一網站 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 hostDNS 故障或 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 能解決公司防火牆造成的重設嗎?

它不是為此設計的。受管理的網路會依擁有者的政策封鎖網站。請詢問管理員,而不是試著繞過。

資料來源

← 所有文章