스페인 개발자의 HN 제보, Docker pull TLS 오류를 LaLiga의 Cloudflare IP 차단과 연결

스페인에서 올라온 Hacker News 글 하나가 CI/CD 운영팀이 놓치기 쉬운 edge-network 리스크를 잘 보여줬다. 글 작성자는 로컬 GitLab runner가 pipeline을 만들지 못했고, docker pull 과정에서 Cloudflare R2 호스트에 대해 TLS certificate 검증 오류가 발생했다고 설명했다. 처음에는 GitLab 설정, runner 문제, Tailscale, DNS를 의심했지만, 실제 원인은 예상보다 훨씬 바깥에 있었다.

작성자는 실패한 R2 URL을 브라우저에 직접 열어본 뒤 object storage 응답 대신 스페인어 차단 배너를 봤다고 적었다. 배너는 2024년 12월 18일 바르셀로나 상사법원 판결을 언급했고, LaLiga가 최근 경기일에 Cloudflare와 연관된 불법 행위 대응 차원에서 일부 IP를 차단하고 있다는 안내문으로 이어졌다. 즉, 전혀 다른 용도로 사용되던 Docker image 경로가 anti-piracy 성격의 IP 차단 범위 안에 들어가면서, 정상적인 storage endpoint가 아닌 차단 페이지를 반환한 것으로 보인다는 것이다.

이 사례가 기술적으로 흥미로운 이유는 오류 형태가 아주 전형적인 supply path 장애처럼 보였기 때문이다. Docker는 Cloudflare storage hostname에 맞는 certificate를 기대했지만, 실제로는 다른 콘텐츠가 돌아오면서 SAN 검증이 깨졌고, 결국 TLS name mismatch가 먼저 터졌다. 공유 CDN이나 object storage 위에 올라간 서비스는 IP 단위 차단이 시작되는 순간, 관련 없는 CI/CD, package delivery, artifact fetch까지 함께 흔들릴 수 있다는 점을 이 사례가 잘 보여준다.

물론 지금 단계에서 이것은 한 개발자의 디버깅 기록이지, Cloudflare나 Docker의 공식 incident report는 아니다. 그래도 운영 관점의 교훈은 분명하다. 갑자기 certificate 오류가 발생하면 무조건 retry를 늘리기보다, 실패한 URL을 브라우저나 curl -v로 직접 열어 어떤 배너와 certificate chain이 돌아오는지 확인해야 한다. 정책 차단이 잘못된 endpoint를 반환하는 경우라면 재시도는 문제를 해결하지 못한다. 스페인 사용자나 runner를 서비스하는 팀이라면 다음 match window 전에 mirror, alternate egress, regional failover를 준비할 이유가 충분하다.

출처: Hacker News 글, LaLiga 공지.