Cloudflare DNS 레코드 설정 방법 (티스토리, Vercel 등 오류 해결)
얼마 전 도메인 네임 서버(DNS)를 AWS Route 53에서 Cloudflare로 옮겼다. Route 53은 호스팅 영역당 매월 $0.5 비용이 발생하고(추가 호스팅 영역은 $0.1) 100만 쿼리당 $0.4 누진 과금이 적용된다.
반면, Cloudflare는 이러한 비용 없이 무료로 사용할 수 있다. 또한 Cloudflare 프록싱을 활성화하면 별도 설정 없이 CDN을 사용할 수 있고 웹 애플리케이션 방화벽(WAF), DDoS 보호 등 다양한 보안 기능도 무료로 제공한다. 규모가 크지 않은 웹사이트라면 비용/기능 면에서 Cloudflare가 더 적합하다고 판단했다.
오늘은 티스토리, Vercel 등의 DNS 레코드를 설정할 때 발생했던 문제와 해결 방법에 대해 정리해 봤다.
티스토리
레코드 설정
유형 | 이름 | 콘텐츠 | 프록싱 | TTL |
CNAME |
@ |
host.tistory.io |
DNS 전용 |
자동 |
CNAME |
www |
host.tistory.io |
DNS 전용 |
자동 |
① 프록싱 기능을 활성화하면 티스토리에서 도메인 설정 정보를 인식하지 못한다. 티스토리는 도메인 소유권 확인을 위해 DNS 레코드를 실시간으로 검증한다. 프록싱이 켜져 있으면 Cloudflare 서버가 중간에서 트래픽을 가로채기 때문에 티스토리 시스템이 실제 DNS 설정을 정확히 인식하지 못하는 것.
② 루트 도메인(네이키드 도메인, Cloudflare에선 이름에 @
입력 시 루트 도메인을 가리킴)은 원래 CNAME 레코드를 사용할 수 없지만 Cloudflare는 CNAME 플래트닝 기능을 통해 이를 지원한다. 참고로 Route 53에선 루트 도메인에 CNAME 레코드를 등록할 수 없기 때문에 A 레코드로 IP 주소를 등록해야 한다. 이 경우 티스토리 IP 주소가 바뀔 때마다 Route 53에서 변경해야 하는 번거로움이 있다.
리다이렉트 설정
Cloudflare에서 제공하는 리디렉션 규칙을 통해 https://www.domain.com
→ http://domain.com
주소로 연결되도록 설정할 수 있다. 아래 규칙은 "WWW에서 루트로 리디렉션" 템플릿을 그대로 사용했다(필자는 티스토리에 루트 도메인을 등록했다).
Vercel
① Cloudflare의 무료 SSL 인증서(Universal SSL)는 기본적으로 sub1.domain.com
형태의 1단계 서브도메인까지만 커버한다. sub2.sub1.domain.com
같은 다중 서브도메인은 Cloudflare 무료 인증서로 커버할 수 없다. 2단계 이상의 서브도메인을 커버하려면 Total TLS 유료 기능이 필요하다. 무료 SSL 인증서를 사용해야 한다면 프록싱을 해제해서 Cloudflare를 거치지 않고 원본 서버의 SSL을 사용하도록 만들면 된다.
② Vercel 공식 문서에선 Cloudflare와 함께 사용할 경우 DNS 전용 모드를 권장하고 있다. Cloudflare 프록싱을 사용하면 트래픽 가시성이 차단되어 Vercel 자체 보안 시스템이 제대로 작동하지 않고, 이중 캐시 관리로 인해 배포 무결성이 손상될 수 있다고 한다.
③ SSL/TLS 암호화 모드를 가변 Flexible 으로 설정하면 무한 리디렉션이 발생하기 때문에 전체 Full 혹은 전체 Full(엄격 Strict)으로 설정해야 한다. 자동 모드를 선택하면 전체 암호화 모드가 기본적으로 선택된다.
가변 암호화 모드에선 <사용자 ⇆ Cloudflare> 간 연결은 HTTPS로 유지하지만 <Cloudflare ⇆ 오리진(Vercel)>간 연결은 HTTP로 전송된다. Vercel은 기본적으로 HTTP 요청을 HTTPS로 자동 리다이렉트(308) 하기 때문에 <https → cloudflare → http → vercel → https> 형태의 무한 루프가 생성된다.
암호화 모드를 전체 혹은 전체(엄격)으로 설정하면 <Cloudflare ⇆ 오리진> 연결도 HTTPS를 유지해서 이 문제가 해결된다. 전체(엄격) 모드는 오리진 서버의 SSL 인증서의 유효성도 추가로 검증한다.
Tailscale
Tailscale로 연결되는 레코드에 프록싱을 활성화하면 접속 시 Error 1002: DNS Points to Local or Disallowed IP 에러가 발생한다. Cloudflare는 DNS 레코드가 사설 IP(192.168.x.x., 10.x.x.x 등) 또는 정책상 허용하지 않는 IP를 가리켰을 때 이러한 에러가 발생한다고 한다. 프록싱을 해제하면 문제없이 잘 연결된다.
ACM 인증서 검증
AWS CloudFront를 사용하거나 API Gateway에 사용자 지정 도메인을 지정하려면 ACM 인증서가 필요하며(타사 인증서 불가), ACM 인증서는 도메인 소유권 검증을 위한 DNS 레코드 등록이 필요하다. 이때 프록싱은 DNS 전용으로 설정해야 한다.
Cloud Connector
Cloudflare의 Cloud Connector 기능을 이용하면 특정 도메인으로 접속했을 때 AWS S3, Google Cloud Storage, Azure Blob Storage 등으로 트래픽을 전달할 수 있다. 예를 들어 AWS S3 Website 엔드포인트는 HTTP만 지원하지만 Cloudflare의 프록싱을 활성화하면 HTTPS 연결이 가능해진다. Cloudflare가 SSL 인증서를 통해 HTTPS 요청을 수신한 뒤, 이를 HTTP로 변환하여 S3로 전달하는 방식.
'⌚️ Productivity' 카테고리의 다른 글
[Nas] 시놀로지 나스에서 Cloudflare DDNS 사용하기 (도커 방식) (0) | 2025.02.10 |
---|---|
[크롬 확장] 페이지 목차를 팝업으로 표시해주는 - Smart TOC (0) | 2025.02.03 |
[macOS] 맥에서 잘라내기 단축키 사용하기 - Command X (0) | 2025.01.31 |
[시놀로지 Nas] 나스 메인 하드디스크 교체하기 (9) | 2024.11.13 |
[시놀로지 Nas] 포트 개방 없이 원격에서 나스 SMB 접속하기 - Tailscale (0) | 2024.06.10 |
댓글
이 글 공유하기
다른 글
-
[Nas] 시놀로지 나스에서 Cloudflare DDNS 사용하기 (도커 방식)
[Nas] 시놀로지 나스에서 Cloudflare DDNS 사용하기 (도커 방식)
2025.02.10 -
[크롬 확장] 페이지 목차를 팝업으로 표시해주는 - Smart TOC
[크롬 확장] 페이지 목차를 팝업으로 표시해주는 - Smart TOC
2025.02.03 -
[macOS] 맥에서 잘라내기 단축키 사용하기 - Command X
[macOS] 맥에서 잘라내기 단축키 사용하기 - Command X
2025.01.31 -
[시놀로지 Nas] 나스 메인 하드디스크 교체하기
[시놀로지 Nas] 나스 메인 하드디스크 교체하기
2024.11.13