ping6.net
기초

DHCPv6 vs SLAAC: 장치가 IPv6 주소를 얻는 방법

장치가 IPv6 주소를 얻는 두 가지 방법을 이해하세요: SLAAC는 라우터 알림을 사용하고, DHCPv6는 서버를 사용합니다. 각각을 언제 사용해야 하는지 알아보세요.

ping6.net2024년 12월 14일6 min read
IPv6DHCPv6SLAAC자동 구성라우터 알림

장치가 IPv6 네트워크에 가입하면 주소가 필요합니다. DHCP가 표준 접근 방식인 IPv4와 달리 IPv6는 SLAAC(Stateless Address Autoconfiguration)와 DHCPv6의 두 가지 메커니즘을 제공합니다. 각각을 언제 사용해야 하는지 이해하는 것은 네트워크 엔지니어에게 필수적입니다.

TL;DR - 빠른 요약

핵심 포인트:

  • SLAAC는 라우터 알림을 통해 무상태이고 자동입니다—서버 불필요
  • DHCPv6는 DHCPv4처럼 중앙 집중식 제어 및 주소 추적을 제공합니다
  • 라우터 알림의 M 및 O 플래그가 사용할 방법을 제어합니다

바로가기: 자동 구성은 SLAAC, 중앙 집중식 관리는 DHCPv6, 배포 지침은 언제 사용할지를 참조하세요.

SLAAC: Stateless Address Autoconfiguration#

SLAAC를 사용하면 장치가 네트워크에서 상태를 유지하지 않고 스스로 구성할 수 있습니다. 라우터는 네트워크 접두사를 포함하는 RA(Router Advertisement) 메시지를 주기적으로 보내고 장치는 자체 주소를 생성합니다.

라우터 알림 작동 방식#

라우터는 기본적으로 200초마다 RA 메시지를 ff02::1(all-nodes 멀티캐스트)로 멀티캐스트합니다. 장치는 RS(Router Solicitation)를 ff02::2(all-routers 멀티캐스트)로 보내 즉시 RA를 요청할 수도 있습니다.

RA에는 다음이 포함됩니다:

  • 네트워크 접두사(예: 2001:db8::/64)
  • 기본 게이트웨이 주소
  • 접두사 수명(유효 및 선호)
  • M 및 O 플래그(아래 설명)

장치는 알린 접두사를 자체 생성된 64비트 인터페이스 ID와 결합하여 주소를 만듭니다.

인터페이스 ID 생성#

두 가지 일반적인 방법이 있습니다:

EUI-64(Modified Extended Unique Identifier) MAC 주소에서 인터페이스 ID를 파생합니다. MAC 00:11:22:33:44:55의 경우:

  1. 중간에 ff:fe 삽입: 00:11:22:ff:fe:33:44:55
  2. 7번째 비트 반전: 02:11:22:ff:fe:33:44:55
  3. 결과: 2001:db8::211:22ff:fe33:4455

이것은 결정적이지만 하드웨어 ID를 노출하여 개인 정보 보호 문제를 야기합니다.

개인 정보 보호 확장(RFC 4941) 무작위 인터페이스 ID를 생성합니다. 최신 운영 체제는 주기적으로 변경되는 임시 주소를 만듭니다(대부분의 시스템에서 매일). 장치는 안정적인 주소(들어오는 연결용)와 임시 주소(나가는 연결용)를 모두 유지합니다.

# Linux: 주소 유형 보기
ip -6 addr show eth0
 
# 안정적인 주소의 경우 scope global을 볼 수 있습니다
# 개인 정보 보호 주소의 경우 scope global temporary를 볼 수 있습니다

SLAAC가 제공하는 것#

SLAAC 처리:

  • IPv6 주소 할당
  • 기본 게이트웨이
  • 접두사 길이

기본적으로 제공하지 않는 것:

  • DNS 서버
  • 도메인 검색 목록
  • NTP 서버

RDNSS(Recursive DNS Server) 옵션 RFC 8106은 라우터가 RA 메시지에서 DNS 서버를 알릴 수 있도록 허용합니다. 대부분의 최신 시스템이 이를 지원하여 간단한 네트워크에서 DHCPv6의 필요성을 제거합니다.


DHCPv6: 관리되는 구성#

DHCPv6는 DHCPv4와 유사하게 작동합니다. 클라이언트가 서버에서 구성을 요청합니다. 두 가지 모드로 작동합니다.

상태 저장 DHCPv6#

서버는 주소를 할당하고 어느 클라이언트가 어느 주소를 가지고 있는지 추적합니다. 클라이언트는 4개 메시지 교환을 수행합니다:

  1. Solicit: 클라이언트가 구성 요청
  2. Advertise: 서버가 주소 제공
  3. Request: 클라이언트가 제안 수락
  4. Reply: 서버가 할당 확인

주소는 선호 및 유효 수명으로 임대되며 갱신이 필요합니다.

상태 비저장 DHCPv6#

장치는 주소에 SLAAC를 사용하지만 DNS 서버, 도메인 이름 또는 NTP 서버와 같은 추가 옵션에 대해 DHCPv6를 쿼리합니다. 서버가 주소를 추적하지 않으므로 "상태 비저장"입니다.

M 및 O 플래그#

라우터 알림에는 두 가지 중요한 플래그가 있습니다:

M 플래그(Managed Address Configuration) 1로 설정되면 장치는 DHCPv6를 사용하여 주소를 얻어야 합니다. 접두사 정보의 A 플래그에 따라 SLAAC 주소가 여전히 생성될 수 있습니다.

O 플래그(Other Configuration) 1로 설정되면 장치는 추가 옵션(DNS, NTP 등)을 얻기 위해 DHCPv6를 사용해야 하지만 주소는 아닙니다.

플래그 조합:

  • M=0, O=0: SLAAC만(DNS용 RDNSS 사용)
  • M=0, O=1: SLAAC + 상태 비저장 DHCPv6
  • M=1, O=0: 주소용 DHCPv6(드문 구성)
  • M=1, O=1: 주소 및 옵션용 DHCPv6

SLAAC vs DHCPv6 비교#

기능SLAACDHCPv6
주소 할당자동(접두사 + 인터페이스 ID)서버 할당
서버의 상태없음상태 저장 추적 바인딩
DNS 구성RA의 RDNSS(RFC 8106)옵션 23(DNS 서버)
주소 추적불가능완전한 가시성
클라이언트 복잡성최소DHCPv6 클라이언트 필요
실패 모드계속 작동단일 실패 지점
접두사 위임지원되지 않음지원됨(DHCPv6-PD)

일반적인 구성#

SLAAC만(RDNSS 포함)#

주소 추적이 필요하지 않은 간단한 네트워크에 가장 적합합니다. Linux의 예시 radvd.conf:

interface eth0 {
    AdvSendAdvert on;
    prefix 2001:db8:1::/64 {
        AdvOnLink on;
        AdvAutonomous on;
    };
    RDNSS 2001:4860:4860::8888 2001:4860:4860::8844 {
        AdvRDNSSLifetime 300;
    };
};

이 구성은 DHCPv6 없이 대부분의 클라이언트가 필요로 하는 모든 것을 제공합니다.

SLAAC + 상태 비저장 DHCPv6#

RDNSS가 지원되지 않거나 추가 옵션이 필요한 경우 사용합니다. radvd에서 O 플래그 설정:

interface eth0 {
    AdvSendAdvert on;
    AdvOtherConfigFlag on;  # O=1
    prefix 2001:db8:1::/64 {
        AdvOnLink on;
        AdvAutonomous on;
    };
};

DHCPv6 서버는 DNS 및 기타 옵션을 제공하지만 주소는 할당하지 않습니다.

DHCPv6만(관리됨)#

기업은 책임성과 액세스 제어를 위해 종종 이것을 선호합니다. M 플래그 설정:

interface eth0 {
    AdvSendAdvert on;
    AdvManagedFlag on;  # M=1
    AdvOtherConfigFlag on;  # O=1
    prefix 2001:db8:1::/64 {
        AdvOnLink on;
        AdvAutonomous off;  # SLAAC 사용하지 않음
    };
};

참고: 일부 클라이언트는 여전히 링크 로컬 주소를 생성하고 AdvAutonomous off에도 불구하고 SLAAC 주소를 만들 수 있습니다. 네트워크 보안 정책은 SLAAC 비활성화에만 의존해서는 안 됩니다.


언제 무엇을 사용할까#

SLAAC를 사용하는 경우:

  • 중소 규모 네트워크
  • 장치를 신뢰할 수 있음
  • 주소 추적이 필요하지 않음
  • 단순성이 우선시됨
  • 모든 클라이언트가 RDNSS 지원

DHCPv6를 사용하는 경우:

  • 중앙 집중식 주소 관리 필요
  • 규정 준수에 주소 로깅 필요
  • 접두사 위임 필요(ISP에서 고객 라우터로)
  • DNS 이외의 복잡한 옵션 제공 필요
  • Windows 네트워크(역사적으로 더 나은 DHCPv6 지원)

하이브리드 접근 방식(SLAAC + 상태 비저장 DHCPv6):

  • 많은 네트워크에 좋은 절충안
  • 탄력적(DHCPv6가 실패하면 SLAAC 작동)
  • 추가 옵션에 대한 유연성 제공

주소 할당 문제 해결#

장치에 링크 로컬만 있음(fe80::/10) 라우터 알림이 수신되지 않았습니다. 확인:

# Linux: RA 캡처
tcpdump -i eth0 'icmp6 && ip6[40] == 134'
 
# 라우터가 RA를 보내는지 확인
radvdump

장치에 SLAAC 주소가 있지만 DNS가 없음 라우터가 RDNSS를 보내지 않거나 클라이언트가 지원하지 않습니다. RA 내용 확인:

radvdump | grep RDNSS

누락된 경우 라우터 구성에 RDNSS를 추가하거나 상태 비저장 DHCPv6를 활성화하세요.

DHCPv6가 작동하지 않음 RA에서 M 또는 O 플래그가 설정되어 있는지 확인:

radvdump | grep -E "M flag|O flag"

DHCPv6 서버가 실행 중이고 UDP 포트 547에서 연결 가능한지 확인:

# 서버 측
ss -ulnp | grep 547
 
# 클라이언트 측
tcpdump -i eth0 port 547

인터페이스에 여러 주소 이것은 정상입니다. 다음을 볼 수 있습니다:

  • 링크 로컬 주소(항상 존재)
  • SLAAC 안정 주소(EUI-64)
  • SLAAC 임시 주소(개인 정보 보호 확장)
  • DHCPv6 주소(상태 저장 DHCPv6 사용 시)

모두 유효합니다. OS는 RFC 6724에 따라 적절한 소스 주소를 선택합니다.


관련 기사#

대부분의 최신 네트워크는 단순성을 위해 SLAAC + RDNSS로 잘 작동하거나 더 넓은 호환성을 위해 SLAAC + 상태 비저장 DHCPv6로 작동합니다. 특정 규정 준수 또는 로깅 요구 사항이 있는 환경을 위해 완전히 관리되는 DHCPv6를 예약하세요. 무엇을 선택하든 결정을 문서화하고 네트워크 전체에서 일관되게 구성하세요.