DHCPv6와 SLAAC의 차이: IPv6 주소 결정 방식·상태 관리·게이트웨이와 DNS·선택 기준 비교

IPv6 호스트가 주소를 자동으로 얻는 방법은 DHCPv6와 SLAAC 두 가지입니다. SLAAC(상태 비저장 주소 자동 설정, RFC 4862)에서는 호스트가 라우터가 보내는 라우터 광고(RA)로 링크의 프리픽스를 알고, 스스로 인터페이스 ID를 만들어 주소를 조립합니다. 어느 호스트가 어느 주소를 쓰는지 서버가 관리하지 않으므로 '상태 비저장(stateless)'이라고 부릅니다. DHCPv6(RFC 8415)에서는 IPv4의 DHCP처럼 서버가 주소를 골라 기한을 정해 임대하고 기록합니다. 어느 쪽이든 기본 게이트웨이는 RA로 알게 됩니다. 주소는 SLAAC로 만들고 DNS 서버 주소 같은 다른 정보만 DHCPv6로 받는 상태 비저장 DHCPv6라는 조합도 있습니다.

비교 항목DHCPv6SLAAC
주소를 정하는 주체DHCPv6 서버. 관리하는 범위에서 하나를 골라 기한을 정해 임대합니다호스트 자신. RA로 알게 된 프리픽스와 스스로 만든 인터페이스 ID를 조합합니다
상태상태 저장(stateful): 어느 주소를 어느 호스트에 임대했는지 서버가 기록합니다상태 비저장(stateless): 주소 할당을 기록하는 서버가 없습니다
필요한 것DHCPv6 서버(다른 링크에 있으면 릴레이 에이전트도)와, 호스트에게 DHCPv6를 쓰라고 알리는 RA프리픽스를 알리는 RA를 보내는 라우터
쓰는 메시지UDP(클라이언트 546번 포트, 서버와 릴레이 에이전트 547번 포트). 기본 교환은 Solicit, Advertise, Request, ReplyICMPv6 이웃 탐색(NDP)의 라우터 요청(RS)과 라우터 광고(RA)
기본 게이트웨이DHCPv6로는 받지 않습니다. RA를 보낸 라우터의 링크 로컬 주소를 씁니다RA를 보낸 라우터의 링크 로컬 주소를 씁니다
DNS 서버 주소DHCPv6 옵션으로 받습니다RA 옵션(RDNSS)이나 상태 비저장 DHCPv6로 받습니다
인터페이스 ID(하위 64비트)서버가 정합니다MAC 주소에서 만드는 EUI-64 형식이나 난수에 기반한 값. 프라이버시를 위해 많은 OS가 난수 기반의 값을 씁니다
프리픽스 길이와 위임주소를 하나씩 할당하므로 /64 이외의 프리픽스에서도 동작합니다. 라우터에 프리픽스 전체를 위임할 수도 있습니다(DHCPv6-PD)일반적으로 /64 프리픽스를 전제로 합니다. 프리픽스는 위임할 수 없습니다
주소 추적의 쉬움서버의 기록으로 어느 호스트가 어느 주소를 쓰는지 알 수 있습니다. 클라이언트는 DUID라는 식별자로 구별합니다서버의 기록이 없으므로, 호스트의 주소를 알려면 라우터의 이웃 캐시 등을 확인해야 합니다

수치는 대략적인 자릿수 기준이며, 공정 세대와 제품에 따라 달라져요.

상황별 선택 기준

DHCPv6
어느 호스트에 어느 주소를 할당했는지 관리하고 기록하고 싶은 기업 네트워크나, 라우터에 프리픽스를 나눠 주는 제공자 회선(DHCPv6-PD). DHCPv6로 주소를 얻지 못하는 호스트 OS도 있으므로 지원 여부를 확인합니다.
SLAAC
가정이나 많은 LAN처럼 서버를 운영하지 않고 간단하게 주소를 나눠 주고 싶을 때. DNS 서버 정보는 RA의 RDNSS 옵션이나 상태 비저장 DHCPv6로 제공합니다.

자주 묻는 질문

DHCPv6를 쓸 때도 라우터 광고(RA)가 필요한가요?

필요합니다. DHCPv6에는 기본 게이트웨이를 알리는 방법이 없어, 호스트는 RA를 보낸 라우터의 링크 로컬 주소를 기본 게이트웨이로 씁니다. 또한 RA는 M 플래그(Managed)로 주소를 DHCPv6에서 받으라고, O 플래그(Other)로 DNS 서버 같은 다른 정보를 DHCPv6에서 받으라고 호스트에 알립니다.

상태 비저장 DHCPv6란 무엇인가요?

호스트가 SLAAC로 스스로 주소를 만들고, DNS 서버 주소처럼 주소 이외의 정보만 DHCPv6 서버에서 받는 구성입니다. 서버는 어느 주소가 어느 호스트의 것인지 기록하지 않으므로 '상태 비저장'이라고 합니다. M 플래그를 0, O 플래그를 1로 한 RA로 호스트에 사용을 알립니다.

SLAAC는 주소 중복을 어떻게 피하나요?

호스트는 만든 주소를 쓰기 전에, 같은 주소를 쓰는 다른 기기가 없는지 이웃 탐색으로 확인합니다. 이를 중복 주소 검출(DAD)이라고 합니다. 중복으로 확인된 주소는 쓰지 않습니다. DHCPv6로 얻은 주소도 같은 방식으로 확인합니다.

SLAAC 주소로 호스트를 추적할 수 있나요?

MAC 주소에서 만든 EUI-64 인터페이스 ID라면 하위 64비트가 어느 네트워크에서나 같아 호스트를 추적하기 쉬워집니다. 그래서 무작위로 보이고 네트워크마다 다른 인터페이스 ID(RFC 7217)나, 시간에 따라 바뀌는 임시 주소(RFC 8981)를 씁니다.

이해도 확인

IPv6에서 같은 링크 안에서만 쓰이며, IPv6를 쓰는 인터페이스에는 반드시 자동으로 설정되는 링크 로컬 주소의 범위는?

  1. A2001:db8::/32
  2. Bff00::/8
  3. Cfe80::/10
정답과 해설 보기

정답: C. fe80::/10

링크 로컬 주소는 fe80::/10 범위이며, 라우터를 넘어 전달되지 않고 같은 링크 안의 통신에만 쓰입니다. 이웃 탐색(NDP)이나 라우터 광고를 주고받는 데 등에 쓰이며, 단말의 기본 게이트웨이도 보통 라우터의 링크 로컬 주소가 됩니다. 2001:db8::/32는 설명이나 자료의 예에 쓰기 위해 예약된 범위(문서용 주소)입니다. ff00::/8은 멀티캐스트 주소이며, IPv6에서는 브로드캐스트 대신 멀티캐스트가 쓰입니다.

IPv6의 SLAAC(상태 비저장 주소 자동 설정)에서 단말이 글로벌 유니캐스트 주소를 만드는 방법으로 올바른 것은?

  1. ADHCPv6 서버에 질의하여, 서버가 관리하는 128비트 주소를 기한부로 빌린다
  2. B라우터가 보내는 라우터 광고(RA)에 포함된 /64 프리픽스에 스스로 만든 인터페이스 ID(하위 64비트)를 조합하고, 같은 주소가 달리 없는지 확인한 뒤 사용한다
  3. C자신의 IPv4 주소를 그대로 하위 32비트에 넣고, 상위를 fe80으로 시작하는 값으로 채운다
정답과 해설 보기

정답: B. 라우터가 보내는 라우터 광고(RA)에 포함된 /64 프리픽스에 스스로 만든 인터페이스 ID(하위 64비트)를 조합하고, 같은 주소가 달리 없는지 확인한 뒤 사용한다

SLAAC에서 단말은 라우터가 정기적으로 또는 요청에 따라 보내는 라우터 광고(RA)로부터 그 링크의 프리픽스(보통 /64)를 알아냅니다. 여기에 MAC 주소로 만드는 EUI-64 형식이나 난수를 바탕으로 한 값의 인터페이스 ID를 조합하여 주소를 만듭니다. 쓰기 전에는 이웃 탐색 구조로 같은 주소를 쓰는 기기가 없는지 확인합니다(중복 주소 검출, DAD). RA를 보낸 라우터의 링크 로컬 주소가 기본 게이트웨이가 되며, 서버가 주소 할당을 관리하지 않으므로 '상태 비저장(stateless)'이라고 불립니다. DNS 서버의 주소는 RA의 옵션이나 상태 비저장 DHCPv6로 알립니다.

MAC 주소가 00-1A-2B-3C-4D-5E인 인터페이스가 프리픽스 2001:db8:1:1::/64와 EUI-64 형식의 인터페이스 ID로 SLAAC에 의해 주소를 만든다. 만들어지는 주소는?

  1. A2001:db8:1:1:21a:2bff:fe3c:4d5e
  2. B2001:db8:1:1:1a:2bff:fe3c:4d5e
  3. C2001:db8:1:1:21a:2bfe:ff3c:4d5e
정답과 해설 보기

정답: A. 2001:db8:1:1:21a:2bff:fe3c:4d5e

EUI-64 형식에서는 48비트 MAC 주소를 상위 24비트와 하위 24비트로 나누고, 사이에 FF-FE를 넣어 64비트로 만듭니다. 00-1A-2B와 3C-4D-5E 사이에 넣으면 00-1A-2B-FF-FE-3C-4D-5E입니다. 또한 첫 바이트의 하위에서 두 번째 비트(U/L 비트)를 반전시키므로 00은 02가 되어 02-1A-2B-FF-FE-3C-4D-5E가 됩니다. 16비트씩 구분하여 각 구분의 앞쪽 0을 생략하면 21a:2bff:fe3c:4d5e이고, 프리픽스와 합치면 2001:db8:1:1:21a:2bff:fe3c:4d5e입니다. MAC 주소가 주소에 드러나면 단말이 추적되기 쉬우므로, 요즘 많은 OS는 난수를 바탕으로 한 인터페이스 ID를 사용합니다.

  1. VLAN 20(192.168.20.0/24)의 단말에 다른 네트워크에 있는 DHCP 서버 10.0.0.5로부터 주소를 할당한다. 이를 위해 VLAN 20의 기본 게이트웨이인 L3 스위치의 인터페이스(192.168.20.1)에 DHCP 릴레이 에이전트를 설정했다. 릴레이 에이전트의 동작으로 올바른 것은?
  2. DHCP로 단말이 IP 주소를 얻을 때의 메시지 순서로 올바른 것은?

네트워크 설계와 운용 문제 풀기

주요 용어 설명

SLAAC(상태 비저장 주소 자동 설정)
Stateless Address Autoconfiguration의 약자. IPv6에서 단말이 라우터가 보내는 라우터 광고(RA)로부터 네트워크의 프리픽스(보통 /64)를 알아내고, 스스로 만든 인터페이스 ID와 조합하여 자동으로 주소를 설정하는 구조. 인터페이스 ID에는 MAC 주소로 만드는 EUI-64 형식이나, 추적을 막기 위한 난수를 바탕으로 한 값을 쓴다. 쓰기 전에 중복 주소 검출(DAD)로 같은 주소가 없음을 확인한다.
DHCP
Dynamic Host Configuration Protocol의 약자. 네트워크에 연결한 단말에 IP 주소, 서브넷 마스크, 기본 게이트웨이, DNS 서버 등의 설정을 기한을 두고 자동으로 할당하는 프로토콜.
IPv6
IP의 버전 6. 주소를 128비트로 넓히고, 2001:db8::1처럼 16비트씩 8개로 구분한 16진수로 쓴다. 헤더는 40바이트의 고정 길이로 단순해졌으며, 도중의 라우터는 패킷을 분할하지 않는다. IPv4와는 호환성이 없으므로, 둘을 동시에 동작시키는 듀얼 스택이나 변환 방식으로 이행을 진행한다.
기본 게이트웨이(Default Gateway)
단말이 자신과 다른 네트워크에 있는 목적지로 가는 패킷을 넘기는 라우터. 단말은 서브넷 마스크로 목적지가 같은 네트워크인지 판단하고, 밖이라면 이 라우터로 보낸다.
DNS(도메인 네임 시스템)
Domain Name System의 약자. www.example.com 같은 도메인 이름과 통신에 사용하는 IP 주소를 대응시키는, 전 세계의 서버에서 분산 관리되는 구조.
MAC 주소(MAC Address)
이더넷이나 무선 LAN에서 같은 네트워크 안의 기기를 지정하는 데 사용하는 48비트 주소. 상위 24비트가 제조사를 나타내며, 제조 시에 인터페이스마다 할당된다.
ICMP
Internet Control Message Protocol의 약자. IP 통신에서 일어난 오류나 상태를 알리기 위한 프로토콜. 목적지에 전달할 수 없다(Destination Unreachable), TTL이 0이 되었다(Time Exceeded)는 것 등을 출발지에 통지한다. ping은 에코 요청과 에코 응답으로 상대에게 도달하는지와 RTT를 조사하고, traceroute는 Time Exceeded 통지를 이용해 경로를 조사한다. IPv6에서는 ICMPv6가 이웃 탐색 등도 담당한다.

관련 비교