일본 서버는 한국과 가까워 RTT가 20~40ms로 충분히 빠르지만, 글로벌 사용자나 정적 콘텐츠가 많은 사이트라면 Cloudflare를 앞단에 두는 것이 효과적입니다. 캐싱·CDN뿐 아니라 오리진 IP 은폐, L7 DDoS 방어, 무료 SSL 까지 한꺼번에 해결됩니다.

Cloudflare + 일본 서버 트래픽 흐름


왜 일본 서버 + Cloudflare 조합인가

항목 일본 서버 단독 일본 서버 + Cloudflare
한국·일본 응답 속도 빠름 (직접 도쿄 IDC) 더 빠름 (가까운 PoP 캐시)
글로벌 응답 속도 느림 빠름 (전 세계 PoP)
DDoS 방어 L3/L4만 (호스팅사 제공) L7까지 추가
오리진 IP 노출 노출됨 숨겨짐
SSL 인증서 직접 발급·갱신 Cloudflare 자동

특히 오리진 IP 은폐는 보안상 큰 차이를 만듭니다. 공격자가 IP를 특정하지 못하면 직접 공격이 불가능해지기 때문입니다.


1단계 — 도메인을 Cloudflare에 추가

  1. https://dash.cloudflare.com 가입 후 Add a Site 선택
  2. 도메인 입력 → 무료 플랜 선택
  3. Cloudflare가 기존 DNS 레코드를 자동으로 가져옵니다

기존 레코드가 누락되거나 잘못 가져온 경우 직접 추가해야 합니다. 특히 메일 관련 MX, SPF(TXT) 레코드는 누락되기 쉽습니다.


2단계 — 네임서버 변경

도메인 등록업체(가비아, Whois, 일본 Onamae 등)에서 네임서버를 Cloudflare가 안내한 두 개로 변경합니다.

예시:
  ada.ns.cloudflare.com
  ben.ns.cloudflare.com

전파에는 보통 수 분에서 24시간이 걸립니다. Cloudflare 대시보드의 Overview 탭에서 활성화 여부를 확인할 수 있습니다.


3단계 — A 레코드와 프록시 설정

A 레코드는 일본 서버 IP를 가리키게 하되, 주황색 구름(프록시 ON) 으로 설정합니다.

타입: A
이름: @
값: 203.0.113.10  (일본 서버 IP)
프록시 상태: 프록시됨 (Proxied) — 주황 구름
  • 회색 구름(DNS only): 사용자는 서버 IP를 직접 알게 됨 → 공격에 노출
  • 주황 구름(Proxied): 사용자는 Cloudflare IP만 봄 → 오리진 IP 은폐

www 서브도메인도 동일하게 설정하거나 CNAME으로 루트를 가리키게 합니다.


4단계 — SSL/TLS 모드

Cloudflare 대시보드 → SSL/TLS → Overview에서 모드를 선택합니다.

모드 동작 권장도
Off 모두 HTTP ✕ 절대 사용 금지
Flexible 사용자↔CF는 HTTPS, CF↔서버는 HTTP ✕ 보안 취약
Full 양쪽 HTTPS, 인증서 검증 안 함 △ 자체 서명 인증서 가능
Full (strict) 양쪽 HTTPS, 인증서 검증 ✓ 권장

Full (strict) 모드를 사용하려면 오리진 서버에 유효한 인증서가 있어야 합니다. Let’s Encrypt를 그대로 써도 되고, Cloudflare가 무료로 제공하는 Origin Certificate(15년 유효)를 사용하는 것이 편합니다.


5단계 — 오리진 보호 (가장 중요)

Cloudflare 프록시를 설정해도 누군가 과거 IP를 알고 있다면 직접 공격이 가능합니다. 서버 방화벽에서 Cloudflare IP만 허용해야 진정한 보호가 됩니다.

# Cloudflare가 게시하는 IP 목록 (최신본은 cloudflare.com/ips 참조)
CF_IPS=$(curl -s https://www.cloudflare.com/ips-v4)

# 80, 443 포트는 Cloudflare IP만 허용
for ip in $CF_IPS; do
  iptables -A INPUT -p tcp -m multiport --dports 80,443 -s $ip -j ACCEPT
done

# 그 외 직접 접근은 차단
iptables -A INPUT -p tcp -m multiport --dports 80,443 -j DROP

ufw를 사용하는 경우:

for ip in $(curl -s https://www.cloudflare.com/ips-v4); do
  ufw allow from $ip to any port 80,443 proto tcp
done

Nginx에서 실제 클라이언트 IP를 로그에 남기려면 real_ip 모듈을 설정합니다.

# /etc/nginx/conf.d/cloudflare-realip.conf
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
# ... (Cloudflare IP 전체 목록을 추가)
real_ip_header CF-Connecting-IP;

6단계 — 캐시 정책

기본 설정에서도 정적 자산(이미지, CSS, JS)은 캐시되지만, HTML까지 캐시하려면 Page Rules 또는 Cache Rules를 추가합니다.

Cache Rules 예시:
  Hostname equals example.com
  → Cache Level: Cache Everything
  → Edge TTL: 2 hours
  → Browser TTL: 4 hours

WordPress 같은 동적 사이트는 로그인 사용자에게 캐시된 페이지가 보이지 않도록 다음 쿠키를 Bypass Cache 조건으로 추가합니다.

wp-.*
wordpress_logged_in_.*
comment_author_.*

7단계 — WAF / Bot 차단

Security → WAF → Custom Rules에서 패턴 기반 차단 규칙을 만들 수 있습니다.

규칙 예시:
  - User-Agent에 "sqlmap" 또는 "nikto" 포함 → Block
  - Country가 특정 국가가 아니면서 /wp-login.php 접근 → Challenge
  - 분당 100회 이상 동일 IP 요청 → Rate limit

Bot Fight Mode를 켜면 알려진 악성 봇과 데이터센터 IP를 자동으로 차단합니다(무료 플랜에서 사용 가능).


흔히 빠지는 함정

  1. MX 레코드를 프록시하지 않기 — 메일 관련 레코드(MX, mail.도메인)는 회색 구름(DNS only)으로 두어야 합니다. 프록시할 수 없는 프로토콜입니다.
  2. DNS 전파 전 강제 HTTPS 켜기 — Full (strict)로 켜둔 상태에서 오리진에 인증서가 없으면 에러 526이 발생합니다. 먼저 인증서 설치 → 모드 변경 순으로 진행하세요.
  3. 오리진 IP 누출 — Cloudflare 적용 후에도 메일 서버, FTP, cPanel 등이 직접 같은 IP를 사용하면 IP가 알려집니다. 메일 발송은 별도 IP에서 하거나 외부 SMTP를 쓰는 것이 안전합니다.
  4. 개발 모드 켜둔 채 방치 — Cloudflare의 “Development Mode”는 캐시를 끄는 임시 옵션입니다. 3시간 후 자동 해제되지만, 의도치 않게 켜둔 채 광고를 돌리면 캐시 효과가 사라집니다.

마무리

Cloudflare는 일본 서버의 약점인 글로벌 응답 속도를 보완하면서, 동시에 오리진 보호와 L7 방어까지 무료로 제공합니다. 오리진 방화벽 → Cloudflare IP 허용 리스트 설정은 반드시 함께 적용해야 효과를 볼 수 있습니다.

TCP-80.NET의 일본 VPS전용서버는 모두 L3/L4 네트워크 단 DDoS 방어가 기본 포함되므로, Cloudflare와 결합하면 L3~L7 전 계층 방어를 갖출 수 있습니다.