ERR_TUNNEL_CONNECTION_FAILED 오류 원인과 해결 방법

Advertisement
ERR_TUNNEL_CONNECTION_FAILED란?
ERR_TUNNEL_CONNECTION_FAILED는 브라우저가 프록시 서버를 사용할 때만 발생하는 Chrome·Edge 오류입니다. Chromium 소스 코드는 네트워크 오류 -111을 "A tunnel connection through the proxy could not be established.", 즉 프록시를 통한 터널 연결을 수립할 수 없었다고 설명합니다. 이 오류만을 위한 전용 페이지가 없어서 일반 오류 화면이 표시됩니다. '사이트에 연결할 수 없음'과 함께 해당 웹페이지가 일시적으로 다운되었거나 새 웹 주소로 영구 이동했을 수 있다는 문구("This site can't be reached. The webpage at … might be temporarily down or it may have moved permanently to a new web address")가 나오고, 그 아래에 ERR_TUNNEL_CONNECTION_FAILED가 표시됩니다.
이 일반 문구는 오해를 부릅니다. 웹사이트는 대개 정상입니다. 실패는 그보다 한 단계 앞, 즉 브라우저와 트래픽을 전달해야 할 프록시 사이에서 일어났습니다.
이 오류를 보는 사람 중 상당수는 자신이 프록시를 쓰고 있다는 사실조차 모릅니다. VPN 앱, 브라우저 확장 프로그램, 네트워크의 자동 구성 스크립트, 애드웨어가 몰래 프록시를 켤 수 있으므로, Chrome이 실제로 어떤 프록시를 쓰고 있는지 확인하는 것이 첫 단계입니다.
프록시 터널의 작동 방식(과 실패하는 이유)
HTTPS 트래픽은 처음부터 끝까지 암호화되어 있어 일반 웹 프록시는 내용을 읽을 수 없습니다. 그래서 브라우저는 특별한 요청으로 프록시에 원시(raw) 터널을 열어 달라고 요청합니다:
CONNECT example.com:443 HTTP/1.1
Host: example.com:443
HTTP/1.1 200 Connection established <- tunnel open, HTTPS flows through it
HTTP/1.1 403 Forbidden <- or the proxy refuses: ERR_TUNNEL_CONNECTION_FAILED프록시가 성공 이외의 응답을 보내면 Chrome은 연결을 포기하고 ERR_TUNNEL_CONNECTION_FAILED를 표시합니다. 예를 들어 사이트가 차단되어 403을 보내거나, 프록시 자신이 사이트에 도달하지 못해 502를 보내는 경우입니다. 위 예시에서 200 응답은 터널이 열려 HTTPS가 그 안으로 흐른다는 뜻이고, 403 응답은 프록시가 거부했다는 뜻입니다.
Advertisement
ERR_TUNNEL_CONNECTION_FAILED의 원인
| 원인 | 대표적인 단서 |
|---|---|
| Windows 또는 macOS에 남아 있는 오래되거나 잘못된 프록시 설정 | 모든 브라우저에서 모든 HTTPS 사이트가 실패 |
| Chrome의 프록시 또는 VPN 확장 프로그램 | Chrome은 실패하고 Firefox는 정상, 시크릿 창에서는 정상 |
| 죽은 프록시를 가리키는 프록시 자동 구성(PAC/WPAD) | 특정 네트워크, 흔히 회사 네트워크에서만 실패 |
| 사이트를 차단하는 회사 또는 학교 프록시 | 일부 사이트만 실패하고 나머지는 모두 정상 |
| 프록시 서버 다운 또는 과부하 | 네트워크의 모든 사용자가 영향을 받음 |
| 프록시를 설정한 애드웨어 또는 악성코드 | 모르는 프록시가 지워도 계속 다시 생김 |
해결 방법 1: Chrome이 실제로 사용하는 프록시 확인
주소창에 chrome://net-internals/#proxy를 열고 Re-apply settings와 Clear bad proxies를 클릭한 뒤 사이트를 새로고침하세요. 이 페이지는 더 이상 프록시 자체를 보여 주지 않습니다. 자동 구성 스크립트를 포함해 Chrome이 실제로 적용 중인 유효 프록시 설정을 보려면 chrome://net-export에서 로그를 저장한 뒤 NetLog 뷰어(netlog-viewer.appspot.com)에서 열고 Proxy 항목을 확인하세요.
"Use DIRECT connections"라고 나오거나 프록시가 없다고 표시되면 프록시는 원인이 아니며, 대신 내 네트워크가 사이트를 차단하는지 확인해야 합니다. 모르는 프록시나 PAC 스크립트가 보인다면 해결 방법 2와 3으로 넘어가 출처를 찾으세요. 내 IP 확인을 열어 보는 것도 도움이 됩니다. 표시된 위치나 ISP가 내 것이 아니라면 트래픽이 프록시나 VPN을 거치고 있는 것입니다.
Advertisement
해결 방법 2: 시스템 프록시 끄기(프록시를 쓰지 않는 경우)
Chrome과 Edge는 운영체제의 프록시 설정을 사용합니다. 일부러 프록시를 쓰는 것이 아니라면 꺼 주세요:
Windows 11: 설정 → 네트워크 및 인터넷 → 프록시. 수동 프록시 설정에서 프록시 서버 사용을 끄세요. 자동 프록시 설정에서 자동으로 설정 검색은 켜 두되, 조직에서 받은 스크립트가 아니라면 설정 스크립트 사용은 끄세요.
macOS: 시스템 설정 → 네트워크 → 사용 중인 연결 → 세부사항… → 프록시. 꼭 필요한 경우가 아니라면 자동 프록시 구성을 포함해 모든 프록시를 끄세요.
:: Windows에는 시스템 서비스용 프록시(WinHTTP)가 따로 있습니다
netsh winhttp show proxy
netsh winhttp reset proxy해결 방법 3: 확장 프로그램, VPN 앱, Chrome 정책 확인
확장 프로그램:
chrome://settings/system을 여세요. 확장 프로그램이 프록시를 제어하고 있다면 Chrome이 해당 확장 프로그램이 이 설정을 제어하고 있다는 안내와 함께 사용 중지 버튼을 보여 줍니다. 그런 안내가 없다면chrome://extensions에서 프록시·VPN 확장 프로그램을 하나씩 사용 중지해 보세요.VPN 앱: 일부 VPN 앱은 완전한 VPN이 아니라 로컬 프록시 방식으로 작동합니다. 연결만 끊지 말고 앱을 완전히 종료한 뒤 새로고침하세요.
정책:
chrome://policy를 여세요. ProxyMode, ProxyServer, ProxyPacUrl 같은 프록시 정책이 보인다면 조직이나 설치된 소프트웨어가 프록시를 강제하고 있는 것이므로, 그 출처에서 바꾸거나 IT 부서에 문의해야 합니다.
Advertisement
해결 방법 4: 네트워크 설정 초기화 및 DNS 플러시
프록시 설정에는 문제가 없어 보이는데 오류가 계속된다면 네트워크 구성을 초기화하세요. Windows에서는 관리자 권한 명령 프롬프트에서 아래 명령을 실행한 뒤 재시작하고, Mac에서는 네트워크를 삭제했다가 다시 추가한 다음 DNS 캐시를 플러시하세요.
ipconfig /flushdns
netsh winsock reset
netsh int ip reset
netsh winhttp reset proxy해결 방법 5: 회사·학교 네트워크라면 우회하기 전에 먼저 문의하기
회사와 학교 네트워크는 프록시 사용을 필수로 하는 경우가 많고, 상당수가 프록시로 특정 범주의 웹사이트를 차단합니다. 일부 사이트만 ERR_TUNNEL_CONNECTION_FAILED로 실패하고 나머지는 모두 정상이라면, 프록시가 그 사이트들을 의도적으로 차단하고 있을 가능성이 매우 큽니다.
이런 네트워크에서는 직접 연결도 막혀 있기 때문에 프록시를 꺼도 대개 소용이 없습니다. IT 팀에 해당 사이트를 허용할 수 있는지 문의하거나, 다른 네트워크에서 사이트를 이용하세요.
Advertisement
프록시 관리자를 위한 점검 방법
프록시가 CONNECT 요청에 정확히 어떻게 응답하는지 보려면 클라이언트 컴퓨터에서 curl로 재현해 보세요:
curl -v -x http://proxy.example.com:3128 https://example.com/ -o /dev/null
# 성공: "HTTP/1.1 200 Connection established"
# 실패: "CONNECT tunnel failed, response 403"
# (구버전 curl: "Received HTTP code 403 from proxy after CONNECT")403은 접근 규칙, 407은 인증, 502/503은 프록시가 목적지에 도달하지 못한 경우를 가리킵니다(프록시 자체의 DNS와 아웃바운드 방화벽을 확인하세요). Squid 기본 설정에서는 http_access deny CONNECT !SSL_ports 규칙이 SSL_ports 목록(기본값 443)에 없는 포트로의 CONNECT를 거부하므로, 8443 같은 포트를 쓰는 HTTPS 사이트는 목록에 추가하기 전까지 실패합니다. 목적지 포트에 외부에서 아예 도달할 수 있는지는 DNS Robot의 포트 확인 도구로 확인할 수 있습니다.
ERR_TUNNEL_CONNECTION_FAILED와 비슷한 오류 비교
| 오류 | 코드 | 실패한 지점 |
|---|---|---|
| ERR_TUNNEL_CONNECTION_FAILED | -111 | 프록시가 HTTPS 터널을 열지 못했거나 열기를 거부함 |
| ERR_PROXY_CONNECTION_FAILED | -130 | Chrome이 프록시 서버 자체에 연결하지 못함 |
| ERR_CONNECTION_RESET | -101 | 열린 연결이 TCP 리셋으로 끊김 |
| ERR_NAME_NOT_RESOLVED | -105 | DNS가 도메인을 찾지 못함 |
관련 가이드: ERR_CONNECTION_RESET, ERR_NETWORK_CHANGED, ERR_NAME_NOT_RESOLVED.
내 트래픽이 프록시를 거치고 있나요?
DNS Robot의 내 IP 확인 도구는 웹사이트가 보는 공인 IP 주소, ISP, 위치를 보여 줍니다. 내 실제 연결과 일치하지 않는다면 경로 중간에 프록시나 VPN이 있는 것입니다.
사용해보기 내 IP 확인Advertisement
자주 묻는 질문
Chrome이 프록시 서버를 사용하고 있는데, 프록시가 HTTPS 사이트에 필요한 터널을 열지 못했거나 열기를 거부했다는 뜻입니다. Chromium에서는 네트워크 오류 -111입니다. 웹사이트 자체는 대개 정상이며, 문제는 프록시나 프록시 설정에 있습니다.