많은 사용자들에게 1.1.1.1 리졸버(DNS)가 작동하지 않을 때, 거의 모든 인터넷 서비스에 접속할 수 없게 됨을 의미함. 그런데 보통 모든 기기에는 두 개의 DNS 서버를 설정하지 않음? 두 번째도 다운된 것인지, 그렇지 않으면 왜 해당 서버로 넘어가지 않았는지 궁금함
Cloudflare는 1.1.1.1과 1.0.0.1 두 개 모두를 DNS 서버로 설정할 것을 권장함. 그러나 이번 장애를 일으켰던 설정 실수 때문에 1.1.1.0/24와 1.0.0.0/24 프리픽스 모두에 대한 Cloudflare의 BGP 광고가 중단됐음
Android에서는 설정-네트워크 및 인터넷-Private DNS에서 "Private DNS provider hostname" 하나만 입력할 수 있음(내가 아는 바로는). 그리고 왜 IP(1.1.1.1)를 받지 않고 반드시 주소(one.one.one.one)를 요구하는지 이해가 가지 않음. DNS 서버를 지정할 때 IP로 설정하는 게 훨씬 합리적인 생각임
두 개를 나열하는 게 없는 것보단 낫지만 완벽하지 않음. 한 쪽이 다운되면, 어떤 게 정상 동작하는지 추적하지 않기 때문에 대체로 긴 대기시간과 간헐적 이슈를 겪게 됨. 둘 이상의 업스트림을 가진 로컬 캐싱 DNS 프록시 같은 고급 설정을 쓰지 않는 한 마찬가지임
DNS에 대해 이야기할 수 있다고 생각한다면 스스로 서비스를 운영해야 한다고 조언함. 루트 도메인 "."는 수십 년 동안 잘 동작해왔는데, 1.1.1.1에서 문제가 생기는 주된 이유는 DNS 자체가 아니라 애니캐스트에 있음. Cloudflare(및 Google 등)는 "vanity" IP 주소를 고집함—이런 IP 사용을 가능하게 하려면 애니캐스트를 써야 하고, 진짜 문제는 DNS가 아니라 애니캐스트임. 한 명 이상의 공급자를 선택해 설정하길 추천함
Cloudflare가 권장하는 구성은 백업 서버인 1.0.0.1을 보조 DNS로 함께 두는 것이지만, 이번 사고 때는 그 서버도 영향을 받았음
대략 20분 정도의 장애에서 1.1.1.1의 트래픽이 약 20% 줄어든 것이 흥미로움. Cloudflare가 이런 단순하고 오래된 문제로 계속하게 된다는 게 신기함(이번이 첫 번째도 아니고, 마지막도 아닐 것 같음). Google의 8.8.8.8 및 8.8.4.4는 거의 10년 가까이 전세계적으로 (1) 1초의 다운타임도 없었음. (1: 일부 지역적 문제는 있었지만, 그건 인터넷 탓이고 Google의 다양한 서비스가 심각한 장애를 겪을 때도 DNS 자체는 계속 정상 작동했음.)
단순히 가용성만이 아니라, DNS에는 속도와 프라이버시도 중요함. 유럽 사용자라면, 유럽 대안 DNS 목록에서 미국 기업(CLOUD act 적용) 대신 사용할 수도 있음
Cloudflare처럼 규모와 복잡성이 엄청난 네트워크 환경에서 벌어지는 엔지니어링 문제를 어떻게 쉽게 해결 못하겠냐는 의견에, 현실적으로 업계 0.001%만 경험하는 문제임을 설명함
Cloudflare는 사고 대응 문화는 합리적이나, 사전 예방적 조치를 적극 장려하는 인센티브가 부족한 점이 있음
언급한 20% 수치는, 일부 클라이언트/리졸버가 여러 번 응답 실패시 임시로 DNS 서버를 중단 처리해서 사용자 입장에서 매 요청마다 타임아웃을 500번씩 기다릴 필요 없게 함을 뜻함. 장기적으로는 트래픽 그래프상 볼륨이 정상으로 돌아옴
Google DNS를 쓰고 싶지 않은 사람이 많음에 동의함
영향 감지에 5분 이상(메인 프로토콜 트래픽이 10%로 떨어지고 유지됨에도)이 걸렸다는 사실이 놀라움. 그렇게 대규모 시스템을 운영해 본 적은 없지만, 이 정도면 즉각 경고가 발생할 거라 기대했음. 전문가들도 이게 합리적인지 궁금함
감지 속도와 오탐률 사이에는 지속된 긴장감이 있음. Nagios, Icinga 같은 모니터링 시스템은 보통 3회 연속 실패해야 이벤트를 발생시키는데, 일시적 오류가 흔하기 때문임. 알람이 너무 잦으면 담당자들이 무감각해지고 "잠깐 기다려 보자"라는 반응이 늘어남. Cloudflare처럼 글로벌 서비스를 직접 운용해보진 않았지만, 8분 만에 신뢰성 있는 감지가 된 건 놀랍지 않음
예전 NOC(네트워크 운영센터)처럼, 이런 그래프가 벽에 걸려 있다면 누군가 한 번 쳐다보고 "이상하다"며 바로 달려들었을 것임
영향이 시작됐을 때 서비스가 완전히 다운 상태가 아니었을 것이라고 생각함(특히 글로벌 롤아웃 시작점이라면 더욱 그렇고), 영향이 측정 가능해지는 데 시간이 걸렸을 것임
1분 내 알람을 울리게 하면 오히려 알람 인프라 성능 테스트만 될 뿐임. 실제로 1분마다 데이터 수집·계산이 안정적으로 가능한가, 그게 문제임
메트릭 집계 서비스가 크래시날 때, 시스템이 다시 배포될 때까지 지표가 지연돼 100% 드롭처럼 보일 수 있음. 1분 만에 알림을 보내면 불필요하게 밤 2시에 많은 사람이 깨게 되고, 반복되면 결국 알람이 점점 느슨해짐—그래서 5분 정도에 맞춰지는 현상이 일어남
좋은 요약글임. DoH(HTTPS 기반 DNS)는 대부분 cloudflare-dns.com 도메인을 통해 접근하지만(수동 설정 또는 브라우저), IP 주소가 아니기 때문에 상대적으로 장애 영향이 적었다는 부분이 흥미로움. 나는 어제 영향받았는데, 라우터에 DoH를 활성화했음에도 아무 것도 조회되지 않아서 8.8.8.8로 바꾸니 문제 해결됨
DoH는 어떻게 동작하는지 궁금함. cloudflare-dns.com의 IP를 알아야 하는데, 라우터가 1.1.1.1을 썼을 수도 있음
오늘 새 도메인을 설정하는데, 약 20분 동안 한 노트북의 Firefox에서만 접근이 됐음. Google DNS 툴은 도메인이 활성 상태라고 나왔고, AWS 서버에서는 SSH도 됐지만 내 로컬 네트워크에서는 DNS 조회가 안 됐음. 캐시 플러시도 했고 별짓 다 했지만, 그 Firefox 브라우저만 Cloudflare DoH를 쓰도록 따로 설정되어 있었음
나는 동의하지 않음. 실제 근본 원인은 현학적인 용어로 애매하게 감춰져 있어서, 경험 많은 관리자들도 혼란스럽게 만듦. "legacy"란 용어는 명확하지 않고 오히려 추상적이고 불투명하게 느껴짐. "Legacy 컴포넌트는 점진적 배포 방식을 활용하지 않으며, Cloudflare는 점진적 배포와 롤백이 가능한 현대적 방식을 도입하겠다"라는 문장을 보면 무슨 뜻인지는 알겠지만, 굳이 이렇게 알아듣기 어렵게 쓸 필요는 없음
내 Unifi 라우터는 자동 DoH로, Cloudflare와 Google을 동시에 쓰는 것으로 보임. 영향은 못 느꼈으니, Cloudflare DoH가 계속 동작했거나 Google로 바로 넘어간 듯함
전체적으로 잘된 요약이지만, 글 맨 앞부분에 나온 타임라인 내용은 사실과 다름
dnsmasq를 사용하면 여러 DNS 서버를 동시에 설정하고, 가장 빨리 응답하는 서버를 사용하는 방식이 가능함. 한 서비스가 다운돼도 문제를 거의 못 느낌
strict-order 설정 없이 all-servers를 쓸 때 dnsmasq는 자동으로 모든 서버에 재시도 요청을 보냄. 하지만 systemd-resolved를 쓴다면 순서대로만 재시도하기 때문에, 다양한 공급자 서버를 번갈아 넣는 게 중요함. 예시에서처럼 IPv4와 IPv6까지 함께 조합하면 failover가 더 빨라짐. Quad9의 해당 IP 주소는 기본 필터링이 활성화돼있고, 나머지 두 개는 아니라서 서로 해석 결과가 다를 수 있음. 개인적으로 DNSSEC(도메인 보안 확장) 유효성검사를 중시한다면, 검증하는 리졸버와 안 하는 리졸버를 혼합하면 안됨(예시 내 DNS들은 모두 DNSSEC 지원함)
빅테크 업체들(Cloudflare, Google 등)에게 내 DNS 기록이 모두 노출되는 게 싫고, DoH도 원하지 않을 때 더 사적인 설정이 가능한지 질문함. dnsmasq에 신뢰할만한 소규모 DNS 목록을 쓰면 좋을 것 같지만, 여러 DNS 제공자에 매번 요청을 보내는 게 비매너인지는 고민됨. 안정적인 프라이버시 지향 DNS 목록을 어디서 찾을지 모르겠음
여러 DNS 공급자는 정책이나 중요도가 달라서, 나는 둘을 대체물로 생각하지 않음. 오히려 하나만 정하고 ISP(통신사)의 DNS를 백업으로 쓰겠음
systemd-resolved를 사용하면 기본적으로 DoT와 DNSSEC를 지원하니 비슷한 동작을할 수 있음. 중앙 집중식 DNS를 완전히 피하려면 Tor 데몬을 돌려서 네트워크에 DNS 리졸버를 노출할 수 있음. 여러 리졸버도 가능함
"all-servers" 설정 없이도 dnsmasq는 주기적으로 각 서버에 요청을 레이스(경쟁)함(기본 20초마다 재시도). 갑작스러운 장애라 해도 몇 초 이상 영향받지 않을 것임
약 1시간짜리 장애라 해도 한 달 기준 0.13%, 1년 기준 0.0114%임. Cloudflare가 이 서비스에 적용하는 SLO(서비스 수준 목표)가 궁금함. 링크를 찾긴 했지만 유료 서비스 전용임. 이번 장애로 7월 가용성이 "< 99.9% but >= 99.0%" 구간에 들어가며, 이 경우 이용료의 10%를 환불받게 됨
브랜드 평판을 유지하려면 연간 99.9%나 그 이상일 것이라 생각함
사고 이후에도 트래픽이 완전히 정상으로 돌아오지 않은 점이 흥미로움. 최근 OpenWrt의 "luci-app-https-dns-proxy"를 써서 Cloudflare와 Google DNS에 동시에 요청하는데, DoH 영향이 거의 없었어서 장애를 못 느꼈음(DoH까지 망가졌다면 Google로 자동 전환됐을 것)
사고 직후에도 즉시 트래픽이 복구되지 않은 이유를 본문 뒷부분에서 더 다룸. 일부 서버는 직접적인 개입이 필요했기 때문인 듯 함
장애가 일어나면 인터넷이 안 돼서 아예 잠시 다른 행동을 하는 경우가 많음. 실제로 그 시간 동안 DNS 공급자를 바꾸는 사람은 거의 없을 것이라 추측함
클라이언트들이 DNS 조회 결과를 일시적으로 캐시하기 때문에, 장애 이후 한동안은 과거 값을 쓰는 경우도 있음
1.1.1.1과 1.0.0.1 모두가 같은 변경에 의해 영향을 받았다는 점이 놀라움. 이제 DNS 백업에는 완전히 다른 제공자를 써야 할 듯함(예: 8.8.8.8, 9.9.9.9)
두 주소 모두 사실 같은 서비스에서 제공됨. 상호 독립적인 백업처럼 광고된 적이 없었음
원래 DNS의 설계 목적은 가장 가까운 리졸버를 쓰는 것임. 여러 공급자, 백본, 지역을 다양하게(그리고 가능하면 Anycast 주소가 아닌 곳으로) 적절히 분산해 쓰는 게 좋음. 하지만 이 경우 DNS의 동작 특성 때문에 뜻밖의 문제도 만날 수 있음
어차피 항상 그런 상황이었음
난 이미 OpenDNS, Quad9, Cloudflare를 섞어 Pi-hole 두 대에 설정해서 사용 중임. 대부분의 내 기기들은 두 Pi-hole을 각각 DNS로 쓰고 있음
사실 "DNS 백업"이란 개념 자체가 의미 없음. 대부분의 클라이언트는 단순히 한 주소를 임의로 선택해 사용하고, 한 쪽이 다운돼도 나머지에 자동으로 넘어가는 게 아님. 동작 방식을 기대대로 사용할 수 없는 상황임
Cloudflare의 내부 토폴로지는 "legacy"와 "strategic" 시스템이 동기화되는 형태로 발전되어감. 기술자와 비전문가 모두 이해할 수 있도록 현황을 명확하게 설명한 글임. 마이그레이션 과정을 오히려 흥미롭게 느껴지게 잘 써낸 것 같음. 사고로 인한 불편에 대해 사과하고, 앞으로 개선 및 재발 방지에 힘쓰겠다는 메시지가 인상적임. 이런 기업의 태도를 높게 평가함
"legacy"는 기술자들이 주로 쓰는 용어고, "strategic"은 마케팅이나 비기술 리더들이 주로 쓰는 용어라서 둘을 섞어 쓰면 오히려 양쪽 모두 혼란스럽고 짜증날 수 있음
여러 엔지니어가 리브랜칭을 검토했다는데도 1.1.1.0/24가 리라우팅 목록에 추가된 실수를 아무도 못 봤다는 게 놀라움. 어떤 휴먼 에러, 혹은 악의로 이런 일이 벌어졌을지 궁금함. DLS(Domain List Service)에 1.1.1.1/32, 1.0.0.1/32에 대해 단일 위치로 지정하는 걸 막는 하드코딩 예외 처리가 필요해 보임
아마도 "Jerry가 했으니 문제 없겠지"라는 신뢰가 원인일 수 있음
나는 대체로 "사람 탓보다 도구 탓"하는 편임. 시스템 구조나 설정 파일 생성 방식에 따라, 이런 실수가 쉽게 넘어갈 수 있음(특히 diff가 자동생성이면 더욱 그렇고). 결국은 코드리뷰도 사람이 하니 이런 실패 유형은 절차상의 문제임. 현실적으로, 정말 큰 서비스 오프라인을 막으려면 여러 단계로 복수의 안전장치를 두는 방어 전략이 필요함
Hacker News 의견
많은 사용자들에게 1.1.1.1 리졸버(DNS)가 작동하지 않을 때, 거의 모든 인터넷 서비스에 접속할 수 없게 됨을 의미함. 그런데 보통 모든 기기에는 두 개의 DNS 서버를 설정하지 않음? 두 번째도 다운된 것인지, 그렇지 않으면 왜 해당 서버로 넘어가지 않았는지 궁금함
대략 20분 정도의 장애에서 1.1.1.1의 트래픽이 약 20% 줄어든 것이 흥미로움. Cloudflare가 이런 단순하고 오래된 문제로 계속하게 된다는 게 신기함(이번이 첫 번째도 아니고, 마지막도 아닐 것 같음). Google의 8.8.8.8 및 8.8.4.4는 거의 10년 가까이 전세계적으로 (1) 1초의 다운타임도 없었음. (1: 일부 지역적 문제는 있었지만, 그건 인터넷 탓이고 Google의 다양한 서비스가 심각한 장애를 겪을 때도 DNS 자체는 계속 정상 작동했음.)
영향 감지에 5분 이상(메인 프로토콜 트래픽이 10%로 떨어지고 유지됨에도)이 걸렸다는 사실이 놀라움. 그렇게 대규모 시스템을 운영해 본 적은 없지만, 이 정도면 즉각 경고가 발생할 거라 기대했음. 전문가들도 이게 합리적인지 궁금함
좋은 요약글임. DoH(HTTPS 기반 DNS)는 대부분 cloudflare-dns.com 도메인을 통해 접근하지만(수동 설정 또는 브라우저), IP 주소가 아니기 때문에 상대적으로 장애 영향이 적었다는 부분이 흥미로움. 나는 어제 영향받았는데, 라우터에 DoH를 활성화했음에도 아무 것도 조회되지 않아서 8.8.8.8로 바꾸니 문제 해결됨
dnsmasq를 사용하면 여러 DNS 서버를 동시에 설정하고, 가장 빨리 응답하는 서버를 사용하는 방식이 가능함. 한 서비스가 다운돼도 문제를 거의 못 느낌
약 1시간짜리 장애라 해도 한 달 기준 0.13%, 1년 기준 0.0114%임. Cloudflare가 이 서비스에 적용하는 SLO(서비스 수준 목표)가 궁금함. 링크를 찾긴 했지만 유료 서비스 전용임. 이번 장애로 7월 가용성이 "< 99.9% but >= 99.0%" 구간에 들어가며, 이 경우 이용료의 10%를 환불받게 됨
사고 이후에도 트래픽이 완전히 정상으로 돌아오지 않은 점이 흥미로움. 최근 OpenWrt의 "luci-app-https-dns-proxy"를 써서 Cloudflare와 Google DNS에 동시에 요청하는데, DoH 영향이 거의 없었어서 장애를 못 느꼈음(DoH까지 망가졌다면 Google로 자동 전환됐을 것)
1.1.1.1과 1.0.0.1 모두가 같은 변경에 의해 영향을 받았다는 점이 놀라움. 이제 DNS 백업에는 완전히 다른 제공자를 써야 할 듯함(예: 8.8.8.8, 9.9.9.9)
Cloudflare의 내부 토폴로지는 "legacy"와 "strategic" 시스템이 동기화되는 형태로 발전되어감. 기술자와 비전문가 모두 이해할 수 있도록 현황을 명확하게 설명한 글임. 마이그레이션 과정을 오히려 흥미롭게 느껴지게 잘 써낸 것 같음. 사고로 인한 불편에 대해 사과하고, 앞으로 개선 및 재발 방지에 힘쓰겠다는 메시지가 인상적임. 이런 기업의 태도를 높게 평가함
여러 엔지니어가 리브랜칭을 검토했다는데도 1.1.1.0/24가 리라우팅 목록에 추가된 실수를 아무도 못 봤다는 게 놀라움. 어떤 휴먼 에러, 혹은 악의로 이런 일이 벌어졌을지 궁금함. DLS(Domain List Service)에 1.1.1.1/32, 1.0.0.1/32에 대해 단일 위치로 지정하는 걸 막는 하드코딩 예외 처리가 필요해 보임