DUID 주소라는 개념은 네트워크를 조금이라도 깊이 들여다본 사람이라면 한 번쯤은 마주치게 되는, 그러나 막상 설명하려고 하면 말이 꼬이기 쉬운 주제다. IP 주소처럼 직관적인 개념도 아니고, MAC 주소처럼 눈에 잘 띄는 것도 아니다. 그래서인지 설정 화면 한 구석에 조용히 자리 잡고 있으면서도, 네트워크의 정체성과 안정성을 묵묵히 떠받치는 역할을 하고 있다.
DUID는 DHCP Unique Identifier의 약자다. 말 그대로 DHCP 환경에서 장치를 “고유하게 식별하기 위한 식별자”다. 여기서 중요한 포인트는 ‘IP 주소를 대신한다’가 아니라, ‘IP 주소를 받기 위해 자신을 증명하는 신분증’이라는 점이다. IP 주소는 상황에 따라 바뀔 수 있지만, DUID는 한 장치에 대해 장기간 유지되는 정체성에 가깝다.
우리가 흔히 사용하는 IPv4 환경에서는 MAC 주소가 그 역할을 대신해왔다. DHCP 서버는 MAC 주소를 보고 “아, 너구나” 하면서 같은 IP를 다시 주거나, 특정 정책을 적용했다. 하지만 IPv6로 넘어오면서 상황이 달라졌다. IPv6는 주소 공간이 방대하고, 개인 정보 보호 이슈도 커지면서 단순히 MAC 주소를 그대로 쓰는 방식이 부담스러워졌다. 이때 등장한 개념이 바로 DUID다.
DUID는 단순히 하나의 형식이 아니라 여러 타입으로 존재한다. 가장 대표적인 방식은 장치의 MAC 주소를 기반으로 생성하는 방식이고, 또 하나는 장치가 처음 DHCP를 실행할 때 무작위 값과 시간 정보를 조합해 생성하는 방식이다. 어떤 방식이든 공통점은 하나다. “이 장치는 이 네트워크에서 나다”라고 말할 수 있는, 충돌 가능성이 극히 낮은 고유 식별자를 만든다는 점이다.
흥미로운 부분은 DUID가 보통 운영체제 단위로 생성되고, 한 번 만들어지면 웬만해서는 바뀌지 않는다는 점이다. 네트워크 카드를 바꾸지 않는 한 유지되기도 하고, 심지어 네트워크 인터페이스가 여러 개여도 하나의 DUID를 공유하는 경우도 있다. 이 때문에 서버 입장에서는 IP가 바뀌어도 같은 클라이언트로 인식할 수 있고, 클라이언트 입장에서는 매번 새로운 존재로 취급받지 않아도 된다.
실제 현업이나 홈 네트워크 환경에서도 DUID는 은근히 중요한 역할을 한다. IPv6 환경에서 IP 고정이 제대로 안 된다거나, DHCPv6 서버에서 이상한 동작을 보일 때 원인을 파고 들어가다 보면 DUID가 꼬여 있는 경우를 종종 보게 된다. 운영체제를 복제한 가상 머신 여러 대가 동일한 DUID를 가지고 있다면, DHCP 서버 입장에서는 “같은 놈이 여러 번 접속한다”라고 착각할 수밖에 없다. 그 결과 IP 충돌이나 네트워크 불안정이 발생한다.
이런 이유로 가상화 환경이나 클라우드 환경에서는 DUID 관리가 꽤 중요해진다. 필요하다면 의도적으로 DUID를 초기화하거나 재생성해야 하는 상황도 생긴다. 반대로, 장치 식별이 중요한 환경에서는 DUID를 기준으로 접근 제어를 하거나 로그를 추적하기도 한다. 눈에 잘 보이지 않지만, 네트워크의 신뢰 관계를 유지하는 핵심 고리 중 하나인 셈이다.
정리하자면, DUID 주소는 IP 주소의 대체물이 아니라 그 뒤에서 조용히 작동하는 “정체성의 뿌리”다. 사용자는 거의 의식하지 않지만, 네트워크는 이 값을 통해 상대를 기억하고 판단한다. 네트워크가 점점 커지고, 장치 수가 폭발적으로 늘어나는 시대일수록 이런 보이지 않는 식별자의 중요성은 더 커질 수밖에 없다. DUID는 화려하지 않지만, 네트워크 세계에서 꽤 인간적인 역할을 맡고 있다. 이름표를 달고 조용히 자리를 지키는 존재, 딱 그 정도의 느낌이다.