DHCPv6와 SLAAC의 차이: IPv6 주소 결정 방식·상태 관리·게이트웨이와 DNS·선택 기준 비교
IPv6 호스트가 주소를 자동으로 얻는 방법은 DHCPv6와 SLAAC 두 가지입니다. SLAAC(상태 비저장 주소 자동 설정, RFC 4862)에서는 호스트가 라우터가 보내는 라우터 광고(RA)로 링크의 프리픽스를 알고, 스스로 인터페이스 ID를 만들어 주소를 조립합니다. 어느 호스트가 어느 주소를 쓰는지 서버가 관리하지 않으므로 '상태 비저장(stateless)'이라고 부릅니다. DHCPv6(RFC 8415)에서는 IPv4의 DHCP처럼 서버가 주소를 골라 기한을 정해 임대하고 기록합니다. 어느 쪽이든 기본 게이트웨이는 RA로 알게 됩니다. 주소는 SLAAC로 만들고 DNS 서버 주소 같은 다른 정보만 DHCPv6로 받는 상태 비저장 DHCPv6라는 조합도 있습니다.
| 비교 항목 | DHCPv6 | SLAAC |
|---|---|---|
| 주소를 정하는 주체 | DHCPv6 서버. 관리하는 범위에서 하나를 골라 기한을 정해 임대합니다 | 호스트 자신. RA로 알게 된 프리픽스와 스스로 만든 인터페이스 ID를 조합합니다 |
| 상태 | 상태 저장(stateful): 어느 주소를 어느 호스트에 임대했는지 서버가 기록합니다 | 상태 비저장(stateless): 주소 할당을 기록하는 서버가 없습니다 |
| 필요한 것 | DHCPv6 서버(다른 링크에 있으면 릴레이 에이전트도)와, 호스트에게 DHCPv6를 쓰라고 알리는 RA | 프리픽스를 알리는 RA를 보내는 라우터 |
| 쓰는 메시지 | UDP(클라이언트 546번 포트, 서버와 릴레이 에이전트 547번 포트). 기본 교환은 Solicit, Advertise, Request, Reply | ICMPv6 이웃 탐색(NDP)의 라우터 요청(RS)과 라우터 광고(RA) |
| 기본 게이트웨이 | DHCPv6로는 받지 않습니다. RA를 보낸 라우터의 링크 로컬 주소를 씁니다 | RA를 보낸 라우터의 링크 로컬 주소를 씁니다 |
| DNS 서버 주소 | DHCPv6 옵션으로 받습니다 | RA 옵션(RDNSS)이나 상태 비저장 DHCPv6로 받습니다 |
| 인터페이스 ID(하위 64비트) | 서버가 정합니다 | MAC 주소에서 만드는 EUI-64 형식이나 난수에 기반한 값. 프라이버시를 위해 많은 OS가 난수 기반의 값을 씁니다 |
| 프리픽스 길이와 위임 | 주소를 하나씩 할당하므로 /64 이외의 프리픽스에서도 동작합니다. 라우터에 프리픽스 전체를 위임할 수도 있습니다(DHCPv6-PD) | 일반적으로 /64 프리픽스를 전제로 합니다. 프리픽스는 위임할 수 없습니다 |
| 주소 추적의 쉬움 | 서버의 기록으로 어느 호스트가 어느 주소를 쓰는지 알 수 있습니다. 클라이언트는 DUID라는 식별자로 구별합니다 | 서버의 기록이 없으므로, 호스트의 주소를 알려면 라우터의 이웃 캐시 등을 확인해야 합니다 |
수치는 대략적인 자릿수 기준이며, 공정 세대와 제품에 따라 달라져요.