WireGuard · 2026-04-03

WireGuard에서 IPv6 프라이버시 주소 및 정책 적용

WireGuard 환경에서 IPv6 프라이버시 주소 생성, 우선순위와 라우팅, 방화벽 정책 설정 및 운영 시 고려사항을 정리한 설명 모음

작성일 : 2026-04-03 ㆍ 작성자 : 관리자
post
목차

개요

IPv6는 장치 식별을 위해 고정된 인터페이스 식별자(IID)를 사용할 수 있다. 이로 인해 프라이버시 문제가 발생할 수 있다. WireGuard를 사용하는 환경에서는 VPN 인터페이스에도 IPv6 주소 정책을 잘 적용해야 한다. 본문은 초보자도 이해하기 쉬운 단계로 IPv6 프라이버시 주소와 정책 적용 방법을 설명한다.

프라이버시 주소란 무엇인가

프라이버시 주소는 SLAAC로 생성되는 임시 IPv6 주소다. 기본 인터페이스 식별자 대신 임의의 IID를 사용해서 추적을 어렵게 만든다. Linux는 해당 동작을 제어하는 sysctl 옵션을 제공한다. WireGuard에 적용하면 서버나 클라이언트의 원치 않는 추적을 줄일 수 있다.

적용 전 고려사항

  • 네트워크 설계: 프라이버시 주소는 임시적이므로 고정 주소가 필요한 서비스에선 별도 주소를 사용한다.
  • 라우팅 정책: 소스 기반 라우팅이나 방화벽 규칙이 주소 변경에 영향을 받는지 확인한다.
  • 로그 및 인증: 로그에 임시 주소가 기록되면 추적이 어려워질 수 있다. 인증 체계와 연동 검토 필요.

Linux에서 IPv6 프라이버시 주소 활성화

Linux 커널은 net.ipv6.conf.*에 여러 매개변수를 제공한다. 핵심은 use_tempaddr 설정이다. 값의 의미는 보통 다음과 같다: 0(비활성), 1(임시 주소 사용), 2(임시 주소 우선 사용).

전역 및 인터페이스별 설정 예

sysctl -w net.ipv6.conf.all.use_tempaddr=2
sysctl -w net.ipv6.conf.default.use_tempaddr=2
# WireGuard 인터페이스에 적용
sysctl -w net.ipv6.conf.wg0.use_tempaddr=2

영구 적용은 /etc/sysctl.d/99-local.conf 같은 파일에 아래와 같이 추가한다.

net.ipv6.conf.all.use_tempaddr=2
net.ipv6.conf.default.use_tempaddr=2
net.ipv6.conf.wg0.use_tempaddr=2

WireGuard 구성에서의 권장 패턴

WireGuard 인터페이스는 wg-quick를 통해 쉽게 생성된다. IPv6 주소를 지정할 때 프라이버시 주소와 고정 ULA/프라이빗 주소를 함께 사용하면 편리하다. 고정 주소는 서비스 식별용, 임시 주소는 일반 트래픽용으로 구분한다.

wg-quick 예시

[Interface]
Address = fd86:ea04:1111::1/64, fd86:ea04:1111:1::100/128
PrivateKey = 
ListenPort = 51820

[Peer]
PublicKey = 
AllowedIPs = ::/0, 0.0.0.0/0
Endpoint = vpn.example.net:51820

위 구성에서 /64 네트워크는 ULA(고정) 주소를 제공하고, 임시 주소는 SLAAC로 생성되도록 한다. AllowedIPs에 ::/0을 포함하면 IPv6 전 트래픽을 터널로 보낼 수 있다.

소스 주소 선택과 정책 라우팅

임시 주소를 우선하도록 설정했더라도, 소스 주소 선택 규칙 때문에 기대한 주소가 선택되지 않을 수 있다. 이때는 ip rule과 ip -6 route를 사용해 소스 기반 정책을 만든다.

예시: 특정 소스가 특정 테이블 사용

# 임시 주소에서 나가는 트래픽을 별도 테이블로 라우팅
ip -6 rule add from fd86:ea04:1111:1::100/128 table 200
ip -6 route add default via fe80::1 dev wg0 table 200

이렇게 하면 특정 소스 주소에서 나가는 패킷이 별도 라우팅 테이블을 사용하도록 강제할 수 있다. 여기서 게이트웨이는 WireGuard 피어의 링크-로컬 주소나 원격 게이트웨이로 지정한다.

방화벽과 정책 적용

프라이버시 주소는 자주 바뀌므로 방화벽 규칙을 주소 대신 인터페이스나 포트, 프로토콜 기반으로 구성하는 편이 관리에 유리하다. nftables를 예로 든 기본 패턴은 다음과 같다.

nftables 예시

table inet filter {
    chain input {
        type filter hook input priority 0;
        iifname "wg0" accept
        # 기타 규칙
    }
    chain forward {
        type filter hook forward priority 0;
        iifname "wg0" oifname "eth0" accept
    }
}

인터페이스 기반 규칙을 쓰면 임시 주소 교체에도 규칙이 안정적으로 동작한다. 필요 시 src ip address나 owner 모듈을 조합해 추가 제어를 할 수 있다.

운영 중 점검 항목

  • 주소 변경 로그: 주소 갱신 시 인증·로그 체계 영향 확인
  • 연결 유지: 임시 주소 변경으로 기존 연결이 끊기는지 확인
  • 라우팅 일관성: 소스 기반 정책이 예상대로 동작하는지 주기 점검
  • 성능: ip rule이나 복잡한 테이블로 인한 성능 저하 여부 확인

문제 해결 팁

  • ip -6 addr show dev wg0 으로 현재 주소 확인
  • ip -6 rule show, ip -6 route show table 로 정책 확인
  • tcpdump -i wg0 ip6로 패킷 흐름 점검

결론

WireGuard에 IPv6 프라이버시 주소를 적용하면 장치 추적을 줄일 수 있다. 핵심은 use_tempaddr 같은 커널 설정과 인터페이스·라우팅·방화벽 정책을 조화시키는 일이다. 고정 주소와 임시 주소를 목적에 따라 나누고, 소스 기반 라우팅과 인터페이스 기반 방화벽 규칙을 적절히 사용하면 안정적이고 안전한 IPv6 환경을 만들 수 있다.

WireGuard IPv6 프라이버시 설정 IPv6 주소 정책 WireGuard WireGuard IPv6 보안 IPv6 프라이버시 WireGuard 설정 IPv6 라우팅 정책 프라이버시 주소 VPN 보안