요약
ISP가 평문 DNS 응답을 바꿔치기하는 것을 발견한 개발자가 흔한 오해와 대책을 정리했습니다.
개발자 카르티 헤그데는 홈랩(집에 꾸린 개인 서버 환경)의 컨테이너가 외부 사이트에 접속하지 못하자 원인을 찾고 있었습니다. 여러 공용 DNS에 같은 도메인을 물어보니 암호화된 DoH(HTTPS로 감싼 DNS) 조회만 진짜 주소를 돌려줬고, 나머지는 ISP 소유의 IP를 가리켰습니다.
왜 중요한가
- 구글이나 클라우드플레어의 공용 DNS로 바꿔도 평문 질의라면 ISP가 중간에서 답을 바꿀 수 있습니다.
- 직접 운영하는 리졸버나 DNSSEC만으로 안전하다는 흔한 믿음이 틀렸다는 점을 짚습니다.
핵심 내용
- Unbound 같은 재귀 리졸버도 평문으로 질의하므로, DoT(TLS로 감싼 DNS) 리졸버로 넘기게 해야 합니다.
- DNSSEC는 암호화가 아니라 서명 검증이며, 2026년 10월 조사에서 검증이 온전한 도메인은 7.03%뿐이었습니다.
- DoH와 DoT는 ISP의 엿보기와 변조를 막지만, 리졸버 운영자는 여전히 믿어야 합니다.
- TLS를 써도 SNI(접속할 호스트 이름을 알리는 평문 필드)로 방문 사이트가 드러나서, 저자는 Tailscale 출구 노드로 Mullvad VPN을 씁니다.
- 저자는 AdGuard를 로컬 DNS로 두고 dnscrypt-proxy로 바깥 질의를 암호화하며, 일부 컨테이너는 클라우드플레어 DNS를 예비로 둡니다.
HN 반응
- 영국 ISP 운영자라는 이용자는 연령 확인이나 검열 같은 법적 의무 때문에 어쩔 수 없이 가로채는 경우가 많다고 짚었습니다.
- 반면 여러 이용자는 버진 미디어와 AT&T가 없는 도메인 조회를 광고 페이지로 돌린 사례를 들며 광고 목적의 가로채기도 오래됐다고 반박했습니다.
이 글은 ISP가 왜 이런 짓을 하는지, 혹은 (적어도 법의 눈으로 보면) 정당할 수 있는 이유가 무엇인지는 전혀 다루지 않는다는 점을 짚어 둡니다.
여러 나라의 많은 ISP가 연령 확인, 검열, 감시 같은 명목으로 각 국가가 부과하는 집행 조치 때문에 어쩔 수 없이 이렇게 합니다. 나라마다 다릅니다.
분명히 해 두자면 이 관행을 옹호하려는 게 아니고, 이런 걸 하고 싶어 하는 ISP는 없다고 확신합니다.
저는 영국 ISP의 소유주로서 말씀드리는 겁니다(저희는 현재 이렇게 하지 않습니다).
영국 ISP 소유주시라면 RIPE NCC 회원일 가능성이 거의 확실합니다. 영국이 RIPE NCC의 관할 지역에 들어 있으니까요. 그러니 메일링 리스트나 회의에서 다른 RIPE NCC 회원들과 이야기를 나눠 보신 적이 한 번쯤은 있을 겁니다. 저도 RIPE NCC 회원인 사업자를 대표하는 입장에서, 말씀하신 것과 같은 이념을 모두가 공유하는 건 아니라고 반박할 수 있습니다. 이런 과잉 규제와 검열에 실제로 찬성하는 사업자도 있습니다. RIPE 토론 리스트는 누구나 읽고 참여할 수 있으니 직접 보시면, 이런 조치에 찬성하는 ISP들의 답변에 놀라실 겁니다.
그래도 좋은 소식은 적어도 (아직은) 다수가 반대한다는 점입니다.
저도 다른 RIPE NCC 회원을 대표해서 말씀드리는데, 그런 이념은 아주 작은 소수에 한정됩니다.
이념과 상관없이, 순전히 사업적인 감각만으로도 ISP는 검열 같은 일에 엮이고 싶어 하지 않습니다. 그걸 하려면 일이 늘고, 그만큼 돈이 드니까요. 물론 이념과 시민적 의무감 때문에 저항하는 ISP도 있습니다.
저는 ISP가 이념과 이른바 시민적 의무감을 이유로 자발적으로 사이트를 차단하는 나라에서 살아 본 적이 있습니다.
ISP가 DNS를 가로채고 싶어 한다는 건 꽤 확신해요. 고객에게 광고를 밀어 넣으려고 수십 년째 해 왔잖아요.
저는 집 LAN에서 DNS를 가로채고 유명한 DoH 서버는 차단해서, 기기들이 어쩔 수 없이 제 DNS로 돌아오게 만들어 놨어요. DNS 단계 광고 차단을 우회하려고 DoH를 쓰는 스마트 TV나 서비스의 광고를 막기에 좋은 방법이에요.
차단할 IP 주소는 동적 목록으로 관리하시나요?
...
예를 들면요?
2000년대에 영국에서 콘텐츠에 광고를 끼워 넣는 방법을 시험해 본 ISP가 분명 여럿 있었고, 여러 포럼에서 꽤 시끄러웠습니다. 다만 그건 대개 투명 프록시로 전송 중인 HTML을 고치는 방식이었지 DNS 오염은 아니었습니다. 그래도 그런 의도가 존재했고(지금도 존재하고) 있다는 건 보여 줍니다. 전반적인 감청을 걱정하지 않는 사람이라 해도 HTTPS를 어디에나 적용하는 게 좋은 이유 중 하나입니다.
제가 기억하는 사례는 Virgin Media가 NXDOMAIN을 돌려주는 모든 DNS 질의를 광고 범벅인 자체 "검색 페이지"로 바꿔치기했던 일입니다.
https://shkspr.mobi/blog/2021/03/advanced-network-error-search-how-to-turn-off-virgins-least-helpful-service/
아, 맞네요. NXDOMAIN 하이재킹을 깜빡했습니다.
저는 기존 사이트에 간섭하는 경우만 생각하고 있었습니다.
AT&T도 14년쯤 전에 분명히 이렇게 했습니다.
Verisign도 이 수법을 시도했습니다.
https://dn.org/the-sitefinder-debacle-that-shook-the-internets-foundation/
일부 이동통신사는 휴대폰 번호 같은 개인식별정보를 광고 네트워크로 가는 HTTP 요청 헤더에 끼워 넣었습니다. 지금도 그러고 있을 텐데, 대신 사이트가 별도 요청을 하나 더 보내게 하는 방식일 겁니다.
어떤 통신사는 이 헤더 정보를 통신사에 청구 요청을 보내는 데도 썼습니다. 사용자의 동의가 거의 없는데도(있기나 했다면요) 유료 서비스에 가입되는 식이었죠.
저도 몇 년 전에 당했습니다. 휴대폰으로 어느 뉴스 사이트를 보는데 휴대폰 벨소리 광고가 떴고, 클릭하지 않고 그냥 스크롤해서 넘겼습니다. 그런데 곧바로 문자가 왔습니다. 월 25달러짜리(기억이 맞다면) 벨소리 요금제에 가입됐고 휴대폰 요금에 청구될 거라고요. 통신사에 한 시간 동안 전화해서야 청구를 막고 환불받았습니다. 벨소리 업체는 그 뒤로도 1년 동안 문자를 보내며 연락해서 문제를 "해결"하라고 했습니다.
예전엔 사람들이 우스꽝스러운 작은 MIDI 파일 하나에 지금 넷플릭스 구독료보다 더 많은 돈을 냈다니 미친 일이죠.
벨소리 구독에 뭐가 들어 있었는지는 모르겠네요. 제가 벨소리 회사에서 일했는데, 벨소리 하나에 1~3달러였어요(단음은 1달러, 화음은 2달러, wav/mp3 같은 건 3달러였죠. 그래요, iTunes의 고화질 다운로드보다 비싸긴 했어요). 그래도 월 25달러는 엄청난 돈이에요.
무료 벨소리가 있어도 새 폰을 사면 저는 세 개쯤 제게 보내 놓곤 했어요. 요즘은 벨소리를 켤 일이 생길 때를 대비해서 노키아 덥스텝 벨소리를 하나 가지고 있긴 한데, 그럴 일은 없어요.
저는 한동안 HTTP를 "EDI" 데이터의 백엔드 전송 수단으로 쓰고 있었습니다(그때 그 업계에서는 대개 FTP를 썼으니 더 나쁠 건 없었고, 적어도 HTTP는 PASV로도 해결 안 되던 NAT 문제를 피해 갔거든요). 그러던 2000년대 중반 어느 날 커피숍에서, 제가 내용을 알고 있던 아무 웹 페이지에 ISP가 HTML과 JS를 추가로 끼워 넣은 걸 발견하고는 말문이 막힐 만큼 어이없고 분통이 터졌습니다(커피숍이 아니라 ISP가요).
"대체 어떤 놈이 내 TCP 세션의 데이터를 고칠 권리를 줬는데!!!!"
엿보는 거야 그럴 거라고 짐작했지만, 한 바이트라도 건드리다니요? 그런 상황을 예상하지 않고 만든 EDI라면 완전히 망가졌을 겁니다.
그 시점이면 이미 15년이나 그렇게 순진하게 굴었으니 어리석긴 했죠. 권리 같은 건 없고 오직 할 수 있느냐만 있습니다.
할 수 있는 사람은 합니다. 평판이나 옳고 그름 같은 건 실제로는 존재하지도, 중요하지도 않습니다.
그게 DNS 기반 방식이었는지는 추적해 보지 않았습니다. 그럴 수도 있었겠지만 꼭 그래야 할 이유는 모르겠습니다. 그리고 저는 당시 그 기기에서 기본값이 아닌 DNS를 쓰려던 것도 아니었고요. 어차피 암호화되지 않은 데이터를 실어 나르는 이상, 자기들 손에 있으니 언제든 그냥 고칠 수 있는 겁니다.
DNS는 데이터를 작업용 전용 서버로 돌려 보내기에 편한, 손쉬운 방법 중 하나일 뿐입니다. 특별하지도 필수도 아닙니다. DNS를 하이재킹하지 않고 같은 일을 하고 싶다면, 전체 수고는 거의 차이 없이 그렇게 할 수 있습니다.
지금 대부분의 곳에서 HTTPS를 쓰게 된 이유 중 하나죠.
2010년대에 Comcast나 Verizon이 그랬고, 계정 대시보드에 옵트아웃 설정이 있었습니다.
좀 터무니없는 질문이에요. ISP가 이런 짓을 너무 흔하게 하니까 DoH와 DoT가 나온 건데요.
제가 마지막으로 확인했을 땐 Verizon FIOS에 아직 옵트아웃이 있었어요. 계정 설정에 들어가서 직접 꺼야 해요. 감시가 기본값으로 켜져 있으니까요.
로그인해서 한번 살펴보라고 알려 주시는 거네요. 설정 이름을 바꾸고 기본값을 초기화해 놨을 수도 있잖아요. 그 정도는 하고도 남을 회사예요.
추가: 알고 보니 Verizon은 제가 FIOS 계정에 몇 년째 써 온 사용자 이름(비밀번호 관리자에도 저장돼 있어요)을 아예 모르네요. 계정 재설정도 오류로 실패하고요. 정말 엉망진창인 회사예요.
네, 저도 한동안 Verizon 온라인 계정 지옥에 빠져 있어요. 어머니 계정과 제 계정을 합쳐 버렸는데, 요금 납부조차 온라인 계정 접근을 재설정하거나 복구할 방법이 전혀 없어요. 결제는 은행 자동이체 서비스로 보내는 수밖에 없고요. 그 전화번호는 정말 VoIP로 옮겨야 하는데, 저는 제1형 당뇨 환자라서 2003년과 2012년 뉴욕시 정전 때 내내 살아 있었던 점이 좋아서 전통 POTS 회선을 유지해 왔거든요. 그런데 지금은 광케이블만 들어오는 건물에 살아서 그 이중화는 대부분 의미가 없어졌어요.
알려 주셔서 고맙습니다. 방금 옵트아웃했어요. 그 페이지를 일부러 최대한 찾기 어렵게 만들어 놨더군요. 라우터의 DNS 서버를 바꾸는 방법을 알아내는 것도 쓸데없이 복잡하게 해 놨고요.
나가는 53번 포트는 NAT로 로컬 리졸버에 돌리고, 그 리졸버가 DoH/DoT로 업스트림하게 해야 합니다. 그런 옵트아웃에 기대는 건 꽤 낙관적이에요.
저는 그쪽 리졸버를 아예 안 씁니다. 그 옵트아웃은 DNS만이 아니라 "긁어 올 수 있는 데이터는 뭐든 가져가겠다"는 쪽에 더 가까웠어요.
AT&T가 이런 짓을 한다는 건 잘 알려져 있습니다. 망 중립성을 극렬히 반대하고, 모든 걸 자기들이 승인한 유료 제휴사만 쓰도록 강제하고 싶어 하니까요. 자사의 모든 인터넷 서비스에서 그렇게 합니다.
망 중립성 문제에서 넷플릭스는 늘 AT&T를 최악의 위반 사업자 1순위로 꼽아 왔습니다.
그래서 저는 항상 믿을 수 있는 VPN을 씁니다.
맞는 말이에요. 네덜란드에서도 대부분의 DNS가 심하게 감시되고 가로채져서, 명령이 떨어지면 차단을 합니다. 우회하고 싶으면 TLS DNS 같은 걸 다른 곳으로 터널링하면 되고, 그러면 사실상 가로챌 수 없어요. 그래도 그게 풀어 주는 IP를 막을 수는 있으니, 상대편 구현에 따라 될 때도 있고 안 될 때도 있죠.
보통은 불순한 의도가 아니에요. 그건 가장 단순한 설명이고, 대개 (항상은 아니지만) 틀린 설명이죠.
이게 정상이 아니라고 생각하는 사람들은 구글도 없고 감시도 없던 시절의 인터넷에서 어떤 쓰레기를 볼 수 있었는지 겪어 보지 못했을 거예요. 애들이 절대 발견하길 바라지 않을 것들이 분명히 있었어요. 이해가 안 된다면 애가 없거나 아주 이상한 취향이 있는 거겠죠...
저희 직장도 DNS를 건드리고 있습니다. 아마 특정 웹사이트를 걸러내려는 거겠죠. 제 사용 맥락에서는 그게 지극히 타당해서 신경 쓰지 않습니다.
하지만 그쪽 DNS 응답이 몇 분에 한 번씩 1~2초씩 튀어서 미칠 지경이었습니다. Firefox에서 DNS over HTTPS를 켰더니 이제 모든 게 아주 매끄럽습니다.
동료들은 어떻게 그렇게 둔감한지 모르겠습니다.
ISO-27001을 받은 회사에서는 웹 필터링이 최근에 도입된 통제 항목입니다. 보호형 DNS(Protective DNS)는 몇 가지 항목을 채워 주고, 네트워크를 조금 더 안전하게(그리고 광고 없이) 지켜 주기도 합니다.
직원 입장에서는 반대하겠지만, 회사 기기이니 어쩌겠습니까. 보안과 ISO 심사를 관리하는 입장에서는 감사 측면에서도, "요즘 내 컴퓨터가 왜 이상하죠?" 같은 문의 측면에서도 일이 훨씬 편해졌습니다. 제 계정이 광고 기반 차단에 걸린 기록과 회사 전체의 악성코드 차단율을 보여 주는 것만으로도, 소규모 회사로서 적절한 통제를 갖췄다고 심사원을 납득시키고 다음 항목으로 넘어가기에 충분했습니다.
모든 직원이 맡은 일을 알아서 한다고 믿는 입장을 취해서, 광고·불법 복제·악성코드 목록만 차단하고, 감사용으로 차단이 일어났을 때 말고는 로그를 보관하지 않는다면, 합리적인 절충점이라고 생각합니다.
철저히 통제된 직장 네트워크에서 DoH를 켜는 건 해고당하는 지름길 같은데요.
하지만 그걸 허용해 주는 곳이라면 아마 적발할 만한 능력도 없겠죠.