해결: Cloudflare가 다시 다운되었습니다

발행: (2026년 1월 15일 오후 09:00 GMT+9)
16 min read
원문: Dev.to

Source: Dev.to

TL;DR: Cloudflare가 다운된 것으로 보일 때, 먼저 공식 상태 페이지와 로컬 진단을 통해 장애 원인을 확인하고 패닉에 빠지지 마세요. 해결책은 hosts‑file 수정을 통한 일시적인 우회부터 멀티‑CDN 구현, DNS‑레벨 장애 조치, 분산된 오리진 인프라와 같은 견고한 장기 전략까지 다양하며, 이를 통해 비즈니스 연속성을 보장할 수 있습니다.

🎯 주요 포인트

  • 항상 Cloudflare 장애를 공식 상태 페이지, 제3자 모니터, 로컬 네트워크 진단(ping, traceroute, cURL)을 사용해 확인하여 전 세계적인 문제와 지역적인 문제를 구분합니다.
  • 긴급 접근을 위해 로컬 hosts 파일을 수정해 도메인을 직접 원본 서버 IP로 지정하거나 dnsmasq와 같은 로컬 DNS 리졸버를 설정하여 Cloudflare를 일시적으로 우회합니다.
  • 다른 제공업체와의 DNS 수준 장애 조치, 멀티 CDN 전략, 여러 지역에 분산된 원본 인프라, 또는 중요한 애플리케이션을 위한 객체 스토리지에 호스팅된 정적 사이트 생성 등 강력한 복원력 전략을 구현합니다.

Cloudflare가 또 다운됐나요? 일반적인 증상과 문제 해결, 우회, 그리고 Cloudflare 장애가 인프라에 미치는 영향을 완화하기 위한 실용적인 전략을 확인해 보세요.

Source:

증상: Cloudflare가 정말 다운된 건가요, 아니면 여러분인가요?

장애 상황에서 첫 번째 단계는 원인을 확인하는 것입니다. “Cloudflare가 다운됐다”는 패닉은 전 세계적인 장애보다 지역적인 문제나 설정 오류에서 비롯되는 경우가 많습니다. 다음은 진단 방법입니다:

1. Cloudflare 공식 상태 페이지 확인

항상 권위 있는 출처부터 확인하세요. Cloudflare는 서비스에 대한 실시간 업데이트를 제공하는 공개 상태 페이지를 운영하고 있습니다.

  • 상태 페이지에 문제가 표시되면, 실제 Cloudflare 문제를 목격하고 있는 것입니다.
  • 모든 시스템이 정상이라면, 문제는 여러분 쪽에 있을 가능성이 높습니다.

2. 서드파티 모니터링 서비스 활용

독립적인 모니터링 서비스는 보다 넓은 시각을 제공하여 문제가 광범위한지, 지역적인지 확인할 수 있습니다.

3. 로컬 네트워크 진단 수행

Cloudflare 상태가 정상(Green)이라 하더라도, 여러분의 네트워크 경로가 Edge까지 문제를 겪고 있을 수 있습니다. 일반적인 네트워크 도구를 사용해 보세요:

Ping – 도메인에 대한 기본 연결 상태 확인

ping yourdomain.com

Traceroute / MTR – 네트워크 경로를 지도화하여 지연이나 패킷 손실이 발생하는 지점을 파악

# macOS / Linux
traceroute yourdomain.com

# Windows
tracert yourdomain.com

cURL – HTTP 연결을 테스트하고 응답 헤더 확인

curl -v yourdomain.com

HTTP 5xx 오류, 타임아웃, 예상치 못한 리다이렉션 등을 찾아보세요. 이는 Cloudflare Edge에서 발생했는지, 트래픽이 Cloudflare를 통과한 뒤 Origin 서버에서 발생했는지를 알려줄 수 있습니다.

Source:

Solution 1: Bypassing Cloudflare for Emergency Access

Cloudflare 장애가 발생하면 중요한 시스템이나 서비스에 접근할 수 없게 될 수 있습니다. Cloudflare를 우회하면 원본 서버에 직접 접근하게 되며, 이는 내부 팀이나 긴급 접근을 위한 일시적인 해결책이 될 수 있습니다.

1. Direct IP Access via Hosts File

가장 간단한 방법은 로컬 hosts 파일을 수정하여 도메인이 원본 서버의 IP 주소를 가리키도록 하는 것으로, Cloudflare를 통한 DNS 해석을 우회합니다.

Origin IP 찾기 – 웹 서버 또는 로드 밸런서의 공용 IP 주소이며, 일반적으로 Cloudflare가 프록시합니다. 모르는 경우 Cloudflare DNS 레코드(서버를 가리키는 “A” 레코드)나 호스팅 제공업체의 관리 패널에서 확인하십시오.

hosts 파일 편집

  • Linux/macOS: /etc/hosts
  • Windows: C:\Windows\System32\drivers\etc\hosts

다음과 같이 항목을 추가합니다:

YOUR_ORIGIN_IP  yourdomain.com  www.yourdomain.com

YOUR_ORIGIN_IP를 서버의 공용 IP로, yourdomain.com을 실제 도메인으로 교체합니다. 저장 후 로컬 DNS 캐시를 비웁니다:

  • macOS: sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
  • Windows: ipconfig /flushdns

이제 해당 머신에서 yourdomain.com에 대한 요청은 원본 서버로 직접 전송됩니다.

2. DNS Override at Resolver Level (Advanced)

팀이나 특정 환경을 위해 로컬 DNS 리졸버(예: dnsmasq, Unbound)에 도메인에 대한 DNS 레코드를 일시적으로 재정의하도록 설정할 수 있습니다.

dnsmasq 사용 예시 (Linux)

/etc/dnsmasq.conf(또는 /etc/dnsmasq.d/ 내 파일)를 편집합니다:

address=/yourdomain.com/YOUR_ORIGIN_IP
address=/www.yourdomain.com/YOUR_ORIGIN_IP

dnsmasq를 재시작합니다:

sudo systemctl restart dnsmasq

클라이언트가 이 dnsmasq 인스턴스를 기본 DNS 서버로 사용하도록 구성하십시오. 이렇게 하면 여러 사용자를 위한 보다 제어된 일시적 우회가 가능합니다.

Solution 2: 멀티‑CDN 또는 페일오버 전략 구현

핵심 애플리케이션의 경우 단일 CDN 공급자에 의존하면 단일 장애 지점이 됩니다. 강력한 솔루션은 콘텐츠 전달 전략을 다변화하는 것입니다.

1. 다른 공급자를 이용한 DNS‑레벨 페일오버

헬스 체크와 자동 페일오버를 지원하는 DNS 공급자(AWS Route 53, NS1, Azure DNS 등)를 사용합니다. 기본 CDN(Cloudflare)에 접근할 수 없을 때 DNS 레코드가 자동으로 보조 CDN이나 직접 오리진을 가리키도록 전환됩니다.

전제 조건

  • 콘텐츠가 설정된 보조 CDN(예: Akamai, Fastly, CloudFront, 혹은 간단한 Nginx 프록시).
  • 트래픽을 직접 또는 보조 CDN을 통해 제공할 수 있는 오리진 서버.

헬스 체크, 가중 라우팅, 페일오버 정책 설정에 대한 자세한 단계는 이 요약의 범위를 벗어나지만, 핵심 아이디어는 Cloudflare가 다운될 경우 DNS가 자동으로 트래픽을 재라우팅하도록 하는 것입니다.

2. 기본 CDN 페일오버

DNS‑기반 페일오버 (예: AWS Route 53)

단계작업
헬스 체크 생성Cloudflare‑프록시 엔드포인트(또는 Cloudflare를 통과하는 특정 경로)에 대한 Route 53 헬스 체크를 설정합니다.
기본 레코드 세트 구성Cloudflare CNAME 또는 IP를 가리키는 가중치 기반 또는 지연 시간 기반 DNS 레코드를 만들고, 위에서 만든 헬스 체크와 연결합니다.
보조 레코드 세트 구성낮은 가중치(또는 “Secondary” 페일오버 유형)를 가진 또 다른 가중치 또는 페일오버 레코드를 만들고, 보조 CDN의 CNAME 또는 직접 오리진 IP를 가리키게 합니다. 이 레코드에는 기본 헬스 체크를 연결하지 마세요.

기본(Cloudflare) 헬스 체크가 실패하면 Route 53이 자동으로 보조 레코드 세트를 제공하여 문제 있는 Cloudflare 엣지를 우회합니다.

멀티‑CDN 접근법

멀티‑CDN 전략은 두 개 이상의 CDN 공급자를 동시에 사용하며, 일반적으로 CDN 오케스트레이터나 DNS‑레벨 트래픽 분배를 통해 구현됩니다. 가장 높은 복원력을 제공하지만 복잡성이 증가합니다.

특징단일 CDN멀티‑CDN
복원력단일 장애 지점높음 – 위험이 여러 공급자에 분산
비용낮음 (단일 벤더 가격)높음 (다중 계약, 오케스트레이터 비용 가능)
성능단일 네트워크에 최적화잠재적으로 더 좋음 – 실시간으로 가장 성능이 좋은 CDN으로 라우팅 가능
복잡성낮음 – 단일 구성높음 – 다중 구성, DNS 라우팅 또는 오케스트레이터 관리 필요
관리간단한 관리복잡함 – 전문 도구 또는 전문 지식 필요
사용 사례중소 규모 사이트, 중요도가 낮은 앱대기업, 24/7 가동 시간이 필요한 핵심 애플리케이션

구현 팁: DNS 레벨에서 글로벌 로드밸런싱 레이어를 배포합니다(예: Akamai Edge DNS, NS1, UltraDNS). 이를 통해 실시간 헬스 체크와 성능 지표에 기반해 사용자 요청을 가장 성능이 좋거나 사용 가능한 CDN으로 지능적으로 라우팅할 수 있습니다.

Source:

Solution 3: Origin 중복성 활용 및 정적 사이트 생성

1. 분산된 Origin 인프라

Origin 서버가 단일 지역에만 존재한다면 단일 장애 지점이 됩니다. 여러 지리적 지역에 Origin을 분산시켜 복원력을 향상시키세요.

예시: AWS 다중 지역 설정

  1. 다중 지역 – 애플리케이션 스택(EC2, ECS, EKS와 ALB/NLB) 을 최소 두 개의 서로 다른 AWS 지역(예: us-east-1eu-west-1)에 배포합니다.
  2. 글로벌 로드 밸런싱 (Route 53) – 지연 시간 기반 또는 장애 조치 라우팅 정책과 함께 Route 53 헬스 체크를 사용합니다.
# Primary region record (weighted or latency‑based)
resource "aws_route53_record" "primary_domain" {
  zone_id = aws_route53_zone.main.zone_id
  name    = "yourdomain.com"
  type    = "A"

  alias {
    name                   = aws_elb_target_group_attachment.primary_region_alb.dns_name
    zone_id                = aws_elb_target_group_attachment.primary_region_alb.zone_id
    evaluate_target_health = true
  }

  set_identifier   = "primary-region-alb"
  health_check_id  = aws_route53_health_check.primary_alb.id
  weight            = 100   # Adjust for weighted routing; omit for latency‑based
}

# Secondary region record (lower weight or failover)
resource "aws_route53_record" "secondary_domain" {
  zone_id = aws_route53_zone.main.zone_id
  name    = "yourdomain.com"
  type    = "A"

  alias {
    name                   = aws_elb_target_group_attachment.secondary_region_alb.dns_name
    zone_id                = aws_elb_target_group_attachment.secondary_region_alb.zone_id
    evaluate_target_health = true
  }

  set_identifier   = "secondary-region-alb"
  health_check_id  = aws_route53_health_check.secondary_alb.id
  weight            = 50    # Lower weight, or change type to "failover"
}

이 구성을 사용하면 Cloudflare가 다운되고 이를 우회하더라도 Origin은 여러 지점에 걸쳐 고가용성을 유지합니다.

2. 정적 사이트 생성 및 객체 스토리지 호스팅

대부분이 정적이거나 사전 렌더링이 가능한 사이트의 경우, 객체 스토리지(AWS S3, Google Cloud Storage, Azure Blob Storage 등)에 직접 호스팅하고 앞에 CDN을 두면 뛰어난 복원력을 제공합니다. CDN이 실패하면 사용자를 스토리지 엔드포인트로 직접 라우팅할 수 있습니다.

단계

  1. 정적 사이트 생성 – Hugo, Jekyll, Next.js, Gatsby 등 정적 사이트 생성기를 사용합니다.
  2. 객체 스토리지에 호스팅 – 생성된 파일을 정적 웹 사이트 호스팅이 구성된 S3 버킷(또는 동등한 서비스)에 업로드합니다.
# 1️⃣ Create a bucket named exactly like your domain
aws s3api create-bucket --bucket yourdomain.com --region us-east-1

# 2️⃣ Enable static website hosting
aws s3 website s3://yourdomain.com/ --index-document index.html --error-document error.html

버킷 정책 (공개 읽기):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicReadGetObject",
      "Effect": "Allow",
      "Principal": "*",
      "Action": ["s3:GetObject"],
      "Resource": ["arn:aws:s3:::yourdomain.com/*"]
    }
  ]
}
  1. DNS를 버킷에 연결 – Route 53(또는 사용 중인 DNS 제공업체)에서 yourdomain.com을 S3 웹사이트 엔드포인트로 가리키는 별칭 레코드를 생성합니다.

일반적으로 성능 및 보안을 위해 Cloudflare(또는 다른 CDN)를 S3 앞에 두지만, 객체 스토리지에 정적 사이트를 배치하는 패턴은 CDN이 이용 불가능해도 스토리지 서비스에서 직접 사이트에 접근할 수 있게 해줍니다.

Cloudflare의 역할을 이해하고 잠재적인 장애에 대비하며 중복 시스템을 구현함으로써 DevOps 팀은 외부 서비스 중단의 영향을 크게 최소화하고 비즈니스 연속성을 보장하며 사용자 신뢰를 유지할 수 있습니다.

Darian Vance

height=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnwjgilechjb8hqoqlrg1.png)

👉 원본 기사를 TechResolve.blog에서 읽기

Back to Blog

관련 글

더 보기 »

기술은 구원자가 아니라 촉진자다

왜 사고의 명확성이 사용하는 도구보다 더 중요한가? Technology는 종종 마법 스위치처럼 취급된다—켜기만 하면 모든 것이 개선된다. 새로운 software, ...

에이전틱 코딩에 입문하기

Copilot Agent와의 경험 나는 주로 GitHub Copilot을 사용해 인라인 편집과 PR 리뷰를 수행했으며, 대부분의 사고는 내 머리로 했습니다. 최근 나는 t...