사이트를 열 때마다 기기는 리졸버에게 도메인 이름을 IP 주소로 바꿔 달라고 묻습니다. 그 질문은 지금 어디로 가려는지를 평문으로 남기는 기록이고, 기본값으로는 네트워크가 건네준 리졸버 — 보통은 인터넷 사업자의 리졸버 — 로 갑니다.

DNS 유출은 그 질의가 의도하지 않은 곳으로 나가는 상황입니다. 흔한 경우는 개인 리졸버나 암호화 리졸버를 쓰도록 설정해 두었는데도 몇 가지 구조적 이유 때문에 일부 또는 전부의 조회가 여전히 통신사로 나가는 것입니다. 겉으로 고장 나는 것이 없기 때문에, 유출은 몇 년씩 눈에 띄지 않은 채로 이어집니다.

DNS는 실제로 무엇을 드러내는가?

도메인, 시각, 그리고 출처입니다 — 브라우징 세션을 재구성하기에 충분한 정보입니다.

전통적인 DNS는 53번 포트에서 암호화 없이 동작합니다. 나와 리졸버 사이에 자리 잡은 누구든 질의를 읽을 수 있고, 리졸버 자신은 그 질의 하나하나를 내 회선에 귀속시켜 봅니다. 구체적인 페이지까지 보이지는 않지만, 민감한 부분은 보통 도메인 쪽입니다.

암호화는 이 기록이 존재하는지 여부가 아니라 누가 그 기록을 갖는지를 바꿉니다.

전송 방식 암호화 여부 질의를 볼 수 있는 쪽
평문 DNS(53번 포트) 아니오 내 네트워크, 통신사, 리졸버
DNS over TLS(DoT, 853번 포트) 내가 고른 리졸버
DNS over HTTPS(DoH, 443번 포트) 내가 고른 리졸버. 네트워크 입장에서 웹 트래픽과 구분하기가 더 어렵다
DNSSEC 아니오 — 인증을 한다 평문 DNS와 같다. 응답이 진짜임을 증명할 뿐, 감추지는 않는다

DNSSEC이 가장 자주 오해받는 항목입니다. 응답에 서명을 해서 위조할 수 없게 만듭니다. 기밀성은 전혀 제공하지 않습니다.

유출은 실제로 어떻게 일어나는가?

여섯 가지 구조적 원인이 거의 전부를 설명합니다.

원인 작동 방식
분할 라우팅 일부 트래픽만 터널을 쓰고, DNS는 기본 인터페이스로 나감
IPv6 미지원 터널이 IPv4만 처리해서 IPv6 조회가 통신사 경로로 감
OS의 병렬 해석 윈도우는 모든 인터페이스에 동시에 질의하고 먼저 온 답을 씀
브라우저 단 DoH 브라우저가 시스템 설정과 무관하게 해석함, 양방향 모두 발생
공유기 강제 지정 공유기가 DHCP로 자기 리졸버를 강제하거나 53번 포트를 가로챔
캡티브 포털 호텔이나 공항 네트워크가 로그인 페이지로 보내려고 DNS를 가로챔

브라우저 경우는 짚어둘 만한데, 양쪽으로 다 작동하기 때문입니다. 자체 DoH 설정이 있는 브라우저는 공들여 맞춰둔 시스템 리졸버를 우회할 수 있고, 반대로 제대로 설정된 브라우저는 그 브라우저 바깥의 모든 것이 여전히 새고 있다는 사실을 가려버릴 수 있습니다. 한쪽만 확인하고 다른 쪽도 그럴 것이라고 넘겨짚는 것이 가장 흔한 점검 실수입니다.

어떻게 확인하는가?

각 층을 따로 검사해야 합니다. 서로 다른 답이 나올 수 있기 때문입니다.

운영체제 — 어떤 리졸버가 설정되어 있는가:

시스템 명령어
macOS scutil --dns | grep nameserver
Windows Get-DnsClientServerAddress
Linux(systemd-resolved) resolvectl status
Linux(일반) cat /etc/resolv.conf

실제로 응답한 리졸버는 무엇인가 — 설정과 실제 동작은 다릅니다.

dig +short whoami.akamai.net은 나를 대신해 조회를 수행한 리졸버의 IP 주소를 돌려줍니다. 그 값을 내가 기대하던 리졸버와 비교하십시오.

브라우저 단: 브라우저의 보안 DNS 설정을 열어 켜져 있는지, 어느 제공자가 선택되어 있는지 확인합니다. 그런 다음 그 브라우저에서 DNS 유출 테스트 페이지를 엽니다. 그 페이지가 명령줄 검사와 다른 리졸버를 보고한다면, 브라우저가 따로 해석하고 있는 것입니다.

IPv6: IPv6 전용 질의로 같은 검사를 반복합니다. IPv4만 실어 나르는 터널은 부분 유출의 가장 흔한 단일 원인입니다.

결과는 어떻게 읽는가?

"좋은" 주소 목록과 대조하지 말고, 리졸버의 소유자를 내가 기대한 바와 대조하십시오.

관찰된 결과 해석
다른 리졸버를 설정해 뒀는데 통신사 리졸버가 나옴 유출
리졸버가 여러 개인데 그중 하나가 통신사 것 부분 유출 — 질의가 갈리고 있음
IPv4는 기대한 리졸버, IPv6은 통신사 IPv6 유출
브라우저와 시스템이 서로 다른 리졸버를 보고함 반드시 유출은 아님. 다만 확인해야 할 독립 경로가 두 개라는 뜻
리졸버가 예상 밖의 나라에 있음 대체로 정상 — 애니캐스트 리졸버는 가장 가까운 거점에서 응답함
리졸버가 공유기의 사설 주소로 나옴 판단 불가. 공유기는 상위로 전달하므로 공유기 자체 설정을 확인할 것

마지막 줄이 가정용 네트워크에서 사람들을 헷갈리게 합니다. 192.168.1.1이라는 결과는 공유기가 응답했다는 사실만 알려줍니다. 공유기가 어디로 전달하는지는 별개의 질문이고, 그 답은 공유기의 WAN 또는 DNS 설정에 있습니다.

이걸 고치는 데는 어떤 한계가 있는가?

DNS 유출을 고치면 내가 어떤 도메인을 조회했는지 누가 알게 되는지가 달라집니다. 그 방문이 비공개가 되는 것은 아니며, 이 점을 과장하는 것이 이 주제가 잘못 소개되는 주된 방식입니다.

이름이 해석되고 나면 기기는 그 IP 주소로 연결을 엽니다. 경로상의 관찰자는 목적지 주소를 볼 수 있고, 대부분의 TLS 연결에서는 양쪽 모두가 Encrypted Client Hello를 쓰지 않는 한 서버 이름이 핸드셰이크에서 암호화되지 않은 채 전송됩니다. 두 신호 모두 DNS와 무관하게 사이트를 특정합니다.

그러니 정직한 요약은 좁지만 실질적입니다. 내가 고른 리졸버로 향하는 암호화 DNS는, 내가 방문하는 모든 도메인의 평문 목록을 내 지역 네트워크와 통신사 로그에서 없애고, 그 목록을 대신 리졸버 운영자에게 넘깁니다. 신뢰를 없애는 것이 아니라 옮기는 것이며 — 그래서 그 리졸버를 누가 운영하고 무엇을 기록하는지가 실제로 중요한 질문이 됩니다.

관련 질문