본문 바로가기

IT/IT Tips

크롬에서만 안 열리는 사이트, ERR_ADDRESS_UNREACHABLE 원인과 해결법 (사파리는 멀쩡한데?)

728x90
반응형
728x170

분명 어제까지 잘 들어가던 회사 인트라넷인데, 오늘 갑자기 크롬에서 회색 공룡 같은 화면과 함께 ERR_ADDRESS_UNREACHABLE가 뜬다. 옆자리 동료한테 "나만 그래?" 물어보려다가 혹시나 해서 사파리를 켰더니, 이건 또 너무 잘 열린다. 같은 노트북, 같은 와이파이인데 브라우저만 바꿨다고 되고 안 되고가 갈리니 황당할 수밖에 없다.

 

결론부터 말하면 이건 인터넷이 끊긴 것도, 서버가 죽은 것도 아니다. 십중팔구 크롬이 혼자서 "남들과 다른 길"로 접속을 시도하다가 길을 잃은 상황이다. 오늘은 이 에러가 왜 크롬에서만 나는지, 그리고 5분 안에 해결하는 방법을 정리해 본다.

ERR_ADDRESS_UNREACHABLE가 정확히 무슨 뜻일까

에러를 고치려면 일단 에러가 하는 말을 정확히 알아들어야 한다. 많은 분들이 이 메시지를 "DNS 오류"나 "인터넷 안 됨"으로 뭉뚱그리는데, 사실 굉장히 구체적인 단계를 가리키고 있다.

 

ADDRESS_UNREACHABLE는 말 그대로 "주소까지 도달할 수 없음"이다. 풀어서 설명하면 이렇다.

  • 도메인 이름(aaa.example.co.kr 같은 것)을 IP 주소로 바꾸는 작업은 성공했다.
  • 그런데 그렇게 알아낸 IP로 가는 네트워크 경로가 없거나, 그 IP에 있는 호스트가 응답할 수 없는 상태다.

즉 "주소는 알아냈는데 거기로 가는 길이 막혀 있다"는 뜻이다. 내비게이션에 목적지 주소는 정상적으로 찍혔는데, 막상 출발하니 "해당 경로로 갈 수 없습니다"라고 나오는 상황과 똑같다. 운영체제 레벨에서는 ENETUNREACH(네트워크 도달 불가)나 EHOSTUNREACH(호스트 도달 불가) 같은 소켓 에러가 올라온 경우가 여기에 해당한다.

비슷하게 생긴 에러들과 헷갈리지 말자

크롬 에러는 이름이 다 비슷비슷해서 헷갈리기 쉽다. 아래 표로 한 번에 구분해 두면 원인 찾기가 훨씬 빨라진다.

에러 코드 의미  막힌 단계
ERR_NAME_NOT_RESOLVED 도메인 이름을 IP로 바꾸지 못함 DNS 조회
ERR_ADDRESS_UNREACHABLE IP는 찾았으나 그 주소로 가는 경로가 없음 라우팅
ERR_CONNECTION_REFUSED 서버까지 갔지만 포트가 닫혀 거절당함 연결 수립
ERR_CONNECTION_TIMED_OUT 요청을 보냈지만 응답이 끝내 없음 연결 수립

 

여기서 핵심 포인트. 우리가 만난 건 ERR_NAME_NOT_RESOLVED가 아니라 ERR_ADDRESS_UNREACHABLE다. 다시 말해 DNS 조회 자체는 성공했다는 뜻이다. 이름은 풀렸는데 그 IP로 못 간다는 것. 이 사실 하나가 범인을 좁히는 데 결정적인 단서가 된다.

같은 컴퓨터인데 왜 크롬만 안 될까

가장 이상한 부분이 바로 이거다. 사파리는 되는데 크롬만 안 된다면, 두 브라우저가 서로 다른 IP로 접속하고 있거나, 서로 다른 방식으로 길을 찾고 있다는 뜻이다. 사내 주소(http://로 시작하는 평문 사내 호스트)에서 이 증상이 나타나는 전형적인 원인을 가능성 높은 순서대로 살펴보자.

범인 1: 크롬의 보안 DNS(DoH)와 사내 스플릿 호라이즌 DNS

가장 흔하고 가장 유력한 범인이다. 조금 길지만 이 구조를 이해하면 거의 다 풀린다.

회사 인트라넷 주소는 보통 "스플릿 호라이즌(split-horizon) DNS"로 운영된다. 같은 도메인이라도 사내망 안에서 물어보면 내부 IP(예: 10.x.x.x, 172.16~31.x.x, 192.168.x.x)를 알려주고, 외부에서 물어보면 다른 공인 IP를 주거나 아예 안 알려주는 방식이다. 그래서 외부 IP는 사내망에서 라우팅이 안 되거나, 반대로 내부 IP는 외부에서 의미가 없다.

 

문제는 크롬의 "보안 DNS"(DNS over HTTPS, 줄여서 DoH) 기능이다. 이게 켜져 있으면 크롬은 회사가 지정한 시스템 DNS를 거치지 않고, 구글이나 클라우드플레어 같은 외부 DoH 서버에 직접 도메인을 물어본다. 그 결과 사내 DNS가 알려줬어야 할 내부 IP 대신, 외부용 공인 IP를 받아오게 된다. 그런데 그 공인 IP는 사내망 안에서는 갈 수 있는 경로가 없으니 결국 ERR_ADDRESS_UNREACHABLE로 떨어진다.

 

반면 사파리는 보통 운영체제의 시스템 DNS 설정을 그대로 따른다. 즉 회사 내부 DNS에 물어보고 내부 IP를 정확히 받아와 정상적으로 접속한다. 바로 이 "DNS를 누구한테 물어보느냐"의 차이가 두 브라우저의 운명을 갈라놓은 것이다.

범인 2: IPv6 경로 문제

두 번째 후보는 IPv4와 IPv6의 차이다. DNS가 IPv4 주소(A 레코드)와 IPv6 주소(AAAA 레코드)를 둘 다 돌려주는데, 정작 사내망에는 IPv6 라우팅이 제대로 깔려 있지 않은 경우가 있다. 이때 브라우저가 IPv6 주소로 먼저 붙으려다 도달 실패가 나면 ERR_ADDRESS_UNREACHABLE가 뜰 수 있다.

 

요즘 브라우저들은 IPv6와 IPv4를 거의 동시에 시도해 더 빨리 붙는 쪽을 쓰는 "Happy Eyeballs" 방식을 쓰기 때문에 이 경우는 1번보다 드물다. 하지만 앞서 본 DoH가 IPv6 주소만 잘못 물어왔거나 특정 환경이 겹치면 충분히 발생할 수 있어 후보에서 빼지는 않는다.

범인 3: 크롬 확장 프로그램과 프록시

마지막은 크롬에만 붙어 있는 확장 프로그램이다. 일부 VPN이나 보안, 광고 차단 계열 확장은 크롬의 네트워크 요청을 가로채거나 자체 프록시로 우회시킨다. 그 프록시가 사내 IP에 도달하지 못하면 크롬에서만 접속이 막힌다. 사파리는 그 확장의 영향을 받지 않으니 멀쩡한 것이다. 이건 시크릿 창으로 1초 만에 가려낼 수 있는데, 뒤에서 다룬다.

진단: 5분이면 원인을 특정할 수 있다

추측만 하지 말고 실제로 어디서 막히는지 확인해 보자. 터미널(맥) 또는 명령 프롬프트(윈도우)를 열고 아래 명령을 차례로 입력한다.

# 도메인이 어떤 IP로 풀리는지 확인
nslookup aaa.example.co.kr

# 그 IP까지 실제로 도달 가능한지 확인 (ping이 해석한 IP가 화면에 함께 표시됨)
ping aaa.example.co.kr

결과를 다음 기준으로 해석하면 된다.

  • ping이 잘 되고 표시되는 IP가 사내 대역(10/172/192.168)이면: 시스템 DNS와 경로는 정상이다. 그렇다면 크롬만 다른 IP로 새고 있다는 뜻이니 범인 1(보안 DNS)이 거의 확실하다.
  • nslookup이 낯선 공인 IP를 뱉으면: 크롬이 DoH로 받아오는 그 외부 IP가 사내망에서 라우팅 안 되는 것이다. 역시 범인 1이다.
  • 표시되는 IP가 콜론(:)이 잔뜩 들어간 IPv6 주소인데 응답이 없으면: 범인 2(IPv6 경로)를 의심한다.

크롬 내부 상태도 직접 확인할 수 있다. 주소창에 아래를 입력해 들어가면 크롬이 보안 DNS를 쓰는 중인지, 어떤 IP를 캐싱하고 있는지 볼 수 있다.

chrome://net-internals/#dns

여기서 "Clear host cache" 버튼을 누르면 예전에 잘못 캐싱된 IP가 원인일 가능성도 깔끔하게 정리된다.

해결 방법: 가장 효과적인 순서대로

진단이 끝났다면 이제 고칠 차례다. 1번부터 순서대로 시도하면 대부분 첫 단계에서 해결된다.

1단계: 크롬 보안 DNS(DoH) 끄기

가장 효과 좋은 1순위 처방이다.

  1. 크롬 우측 상단 점 세 개 메뉴 > 설정으로 이동한다.
  2. 왼쪽에서 개인 정보 보호 및 보안 > 보안을 차례로 클릭한다.
  3. 아래로 내려 "보안 DNS 사용" 항목을 찾아 토글을 끈다.
  4. 크롬을 완전히 종료했다가 다시 켜고 접속해 본다.

이렇게 하면 크롬도 사파리처럼 시스템 DNS(회사 내부 DNS)를 쓰게 되어 내부 IP를 정확히 받아온다.

2단계: DNS 캐시 비우기

설정을 바꿨는데도 안 되면 옛날 IP가 캐시에 남아 있을 수 있다. 운영체제 캐시까지 한 번 비워 주자.

# macOS
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
:: Windows (명령 프롬프트 또는 PowerShell)
ipconfig /flushdns

크롬 자체 캐시는 앞서 말한 chrome://net-internals/#dns에서 "Clear host cache"로 비운다.

3단계: 확장 프로그램 점검 (시크릿 창 테스트)

Ctrl+Shift+N(맥은 Cmd+Shift+N)으로 시크릿 창을 열어 접속해 본다. 시크릿 창에서는 확장이 기본적으로 꺼지기 때문에, 여기서 정상적으로 열리면 범인은 확장 프로그램이다. 이 경우 VPN, 보안, 광고 차단 계열 확장을 하나씩 꺼 가며 원인을 찾으면 된다.

4단계: IPv6 확인

위 단계로도 해결되지 않고 ping에서 IPv6 주소가 잡혔다면, 잠깐 해당 네트워크 어댑터의 IPv6를 비활성화하고 테스트해 본다. 다만 IPv6 끄기는 다른 서비스에 영향을 줄 수 있으니, 어디까지나 원인 확인용으로만 잠깐 사용하고 근본 해결은 IT 담당자와 함께 진행하는 편이 안전하다.

회사 IT 담당자라면: 근본적인 처방

위 방법들은 개별 사용자의 임시 처방에 가깝다. 사내 전체에서 같은 증상이 반복된다면 관리 정책 차원의 해결이 필요하다.

  • 그룹 정책(GPO)이나 MDM으로 사내 PC의 크롬 보안 DNS를 일괄 비활성화하거나, 회사가 운영하는 신뢰 가능한 DoH 리졸버로 지정한다.
  • 사내 DNS가 외부로 새지 않도록 방화벽에서 외부 DoH 트래픽 정책을 점검한다.
  • 사내 서비스에 HTTPS와 사설 인증서를 적용해, 장기적으로 평문 HTTP 접속에서 발생하는 부수적 문제들도 함께 줄인다.

마무리

ERR_ADDRESS_UNREACHABLE는 "인터넷이 끊겼다"가 아니라 "주소는 알았는데 거기로 가는 길이 없다"는 아주 구체적인 신호다. 사파리는 되는데 크롬만 안 된다면 거의 대부분 크롬의 보안 DNS가 사내 DNS를 건너뛰고 엉뚱한 IP를 물어온 탓이다. 보안 DNS를 끄고, 캐시를 비우고, 확장을 점검하는 이 세 가지만 순서대로 시도해도 십중팔구는 해결된다.

 

다음에 또 회색 공룡 화면을 마주치더라도 당황하지 말자. 에러 메시지가 이미 범인의 이름을 알려주고 있으니, 우리는 그 말을 알아듣고 차근차근 짚어 주기만 하면 된다.


참고 자료

728x90
반응형
그리드형