일본은 IPv6 보급이 빠른 국가 중 하나입니다. 2026년 기준 NTT, KDDI, SoftBank 등 주요 ISP의 가정·모바일 회선 상당수가 기본 IPv6입니다. 즉, 일본 사용자 일부는 이미 IPv6로 들어옵니다. AAAA 레코드를 설정해두지 않으면 IPv4로 우회 접속이 일어나며, 일부 환경에서는 응답 지연으로 이어질 수 있습니다.


IPv6를 도입해야 할 때

다음 중 하나라도 해당된다면 도입을 고려해야 합니다.

  • 일본 모바일·가정 사용자 비중이 큰 서비스
  • 신규 도메인 등록 시 가능한 표준을 모두 갖추고 싶을 때
  • IPv4 주소 추가 발급이 어렵거나 비싼 환경
  • 메일 서버 운영 — 일부 메일 서비스(Gmail 등)는 IPv6 발신자에 더 엄격해서 정확한 PTR/SPF 정렬이 필수
  • 향후 CDN·외부 SaaS 연동에서 IPv6-only 엔드포인트를 만나는 경우

반대로 IPv4만으로 충분한 사내 서비스, 단순 백엔드라면 굳이 도입할 필요가 없습니다.


1단계 — 서버에 IPv6가 할당되어 있는지 확인

ip -6 addr show
# 또는
ifconfig | grep inet6

IPv6 주소가 보이지 않거나 link-local(fe80::)만 보인다면 호스팅사에 글로벌 IPv6 주소를 요청해야 합니다. TCP-80.NET 서버를 사용 중이라면 텔레그램 @tcp80net으로 IPv6 할당을 요청하면 됩니다.

라우팅 확인:

ip -6 route show
ping6 -c 3 ipv6.google.com

ipv6.google.com 응답이 정상이면 외부 IPv6 통신이 동작하는 상태입니다.


2단계 — 듀얼 스택 구성

대부분의 환경은 IPv4와 IPv6를 동시에 운영하는 듀얼 스택(Dual Stack) 입니다. 서비스별로 어떤 스택을 사용할지 결정합니다.

서비스 권장 스택 비고
웹(80/443) IPv4 + IPv6 AAAA 등록
SSH IPv4만 (또는 둘 다 + 방화벽) 공격 노출 면
메일 IPv4 + IPv6 PTR 필수
DB(외부 노출 안 함) 내부 인터페이스만 localhost 또는 사설망

3단계 — DNS AAAA 레코드 등록

서버의 글로벌 IPv6 주소를 도메인의 AAAA 레코드로 등록합니다.

타입: AAAA
이름: @
값: 2001:db8:1234:5678::10
TTL: 300

www, API 서브도메인 등 외부 노출이 필요한 모든 호스트에 동일하게 등록합니다.

전파 후 외부에서 검증:

dig AAAA example.com +short
# → 2001:db8:1234:5678::10

4단계 — Nginx 듀얼 스택 바인딩

기본 설정은 IPv4만 듣는 경우가 많습니다. 다음 두 줄을 함께 적어 IPv6도 듣게 합니다.

server {
    listen 80;
    listen [::]:80;

    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name example.com www.example.com;
    # ...
}

[::]는 모든 IPv6 인터페이스에서 듣는다는 의미입니다. Apache, Caddy, Traefik도 동일한 개념의 듀얼 바인딩 설정을 지원합니다.

설정 적용 후 확인:

ss -tlnp | grep -E ':(80|443)'
# tcp LISTEN ... 0.0.0.0:80
# tcp LISTEN ... [::]:80

5단계 — 방화벽 규칙

IPv4와 별도로 IPv6 규칙을 설정해야 합니다. iptables는 ip6tables, ufw는 자동으로 양쪽 규칙을 만들어 줍니다.

ufw 사용 시

# /etc/default/ufw 에서 IPV6=yes 인지 확인
sudo grep IPV6 /etc/default/ufw

# 규칙 추가 (ufw가 ip4·ip6 양쪽에 자동 적용)
sudo ufw allow 22/tcp
sudo ufw allow 80,443/tcp
sudo ufw enable
sudo ufw status verbose

iptables 직접 사용 시

# IPv4
iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT

# IPv6 — 별도로 설정해야 함
ip6tables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT

# 영구 저장 (Debian/Ubuntu)
apt install iptables-persistent
netfilter-persistent save

nftables 사용 시 (최신 권장)

table inet filter {
    chain input {
        type filter hook input priority 0;
        ct state established,related accept
        iif lo accept
        tcp dport { 22, 80, 443 } accept
        # IPv6 ND/RA는 반드시 허용해야 IPv6 자체가 동작
        icmpv6 type { nd-neighbor-solicit, nd-neighbor-advert, nd-router-advert, echo-request } accept
        drop
    }
}

중요: IPv6는 ICMPv6 메시지에 의존합니다. NDP(Neighbor Discovery), RA(Router Advertisement) 를 차단하면 IPv6 자체가 동작하지 않습니다. 무작정 ICMP 전체를 막으면 안 됩니다.


6단계 — 메일 서버라면 PTR과 SPF

IPv6로 메일을 발송하면 수신 측은 IPv6 PTR(역방향 DNS) 을 매우 엄격히 봅니다. PTR이 없거나 일치하지 않으면 Gmail은 거의 무조건 차단합니다.

# 발신 서버 IPv6의 PTR 확인
dig -x 2001:db8:1234:5678::10

PTR이 비어 있다면 호스팅사에 등록을 요청해야 합니다(개별 사용자가 직접 설정 불가). SPF 레코드도 IPv6를 포함해야 합니다.

v=spf1 ip4:203.0.113.10 ip6:2001:db8:1234:5678::10 ~all

7단계 — 검증

브라우저로 https://test-ipv6.com 접속해 자신의 환경이 IPv6로 외부에 잘 닿는지 확인합니다. 서버 측 검증은 다음 도구를 사용합니다.

# 외부에서 서버에 IPv6로 접속되는지
curl -6 https://example.com -I

# IPv4와 IPv6 동시에 시도
curl -v https://example.com 2>&1 | grep -E "Trying|Connected"

자주 발생하는 문제

브라우저는 한국이고 사이트 응답이 매우 느려졌다

  • 한국 가정 ISP는 IPv6 보급률이 일본보다 낮습니다. AAAA 레코드를 등록했는데 IPv6 경로가 비정상이면 브라우저가 타임아웃 후 IPv4로 폴백하느라 첫 응답이 느려집니다.
  • 해결: 서버 측 IPv6가 정상인지 다시 확인하고, 비정상이면 일단 AAAA 레코드를 제거.

일부 사용자만 접속이 안 된다

  • 사용자의 IPv6 경로 문제일 가능성이 큽니다. 동일 ISP의 다른 사용자는 정상이라면 사용자 측 라우터 설정 문제로 추정됩니다.

SSH 접속에서 IPv6 주소가 자꾸 사용된다

  • ~/.ssh/configAddressFamily inet을 명시하거나 ssh -4로 명시 호출하면 IPv4를 강제할 수 있습니다.

마무리

IPv6는 거창한 기술이 아니라 “한 줄짜리 추가 설정의 모음”입니다. AAAA 레코드 한 줄, listen [::]: 한 줄, ip6tables 규칙 몇 줄로 시작할 수 있습니다.

TCP-80.NET의 일본 전용서버VPS는 요청 시 IPv6 주소를 발급해 드립니다. PTR 등록도 함께 지원하니 메일 서버 운영 계획이 있다면 @tcp80net으로 미리 알려주세요.