요약

  • 일반적인 할당 흐름에서 DHCPACK은 서버 측 바인딩을 확정하며, 클라이언트가 마지막 주소 충돌 검사를 마친 후에야 BOUND 상태로 이동할 수 있게 한다. 이는 소유권이 아니라 기간이 제한된 사용 권한을 부여하는 것이다.
  • 임대(lease) 시계가 권한의 구조를 규정한다. 클라이언트는 먼저 원래 서버에 갱신을 요청하고, 나중에 리바인딩 단계에서는 어떤 서버든 응답할 수 있으며, 만료 시에는 구성 사용을 중단하고 INIT으로 돌아가야 한다.
  • DHCPINFORM에 대한 응답으로 전송되는 DHCPACK은 주소를 전혀 할당하지 않는다. 이는 메시지 이름을 둘러싼 교환과 필드 없이는 해석할 수 없음을 보여준다.

주소가 영구적인 것처럼 보이기 시작하는 순간

한 기기가 사용 가능한 IPv4 구성 없이 네트워크에 참여한다. 기기는 브로드캐스트를 보내고, 오퍼를 받고, 하나의 제안을 요청한 뒤 마침내 DHCPACK을 받는다. 거의 즉시 주소가 인터페이스에 나타나고, 애플리케이션이 연결되며, 로그가 해당 주소에 활동을 기록하기 시작한다. 기기의 관점에서 승인과 점유는 동시에 도래한다.

이 눈에 보이는 순서는 소유권이라는 은유를 유도한다. 그러나 RFC 2131은 재산의 이전이 아니라 통제된 할당을 기술한다. 선택된 서버는 클라이언트와 네트워크 매개변수 사이의 바인딩을 확정한다. 클라이언트는 임대를 기록하고 BOUND 상태에 들어갈 수 있지만, 먼저 제안된 주소가 이미 사용 중이 아닌지 마지막 검사를 수행한다. 이 검사에서 충돌이 발견되면 클라이언트는 DHCPDECLINE을 보내고 처음부터 다시 시작한다. 따라서 서버의 긍정적인 메시지조차 로컬 링크상의 증거를 지워주지는 못한다.

이 구분은 Ralph Droms가 RFC 2131의 저자로서 설계한 구조의 일부다. IETF 프로필에 따르면 그는 1989년 DHCP를 설계한 워킹 그룹을 조직했다. 이 역사는 정확한 귀속을 뒷받침한다. 그는 동적 구성을 명시적인 상태와 시간을 갖춘 표준화된 교환으로 만드는 데 기여했다. 그러나 이것이 이후의 모든 확장, 서버 구현 또는 운영 관습의 단독 저자였다는 뜻은 아니다.

임대는 시계가 달린 권한이다

DHCP는 단순히 주소를 전달하지 않는다. 서버 정책이 기간을 정하는 임대 조건 하에 구성을 제공한다. 클라이언트는 주소나 기간을 요청할 수 있지만, 그 요청은 서버가 반드시 받아들여야 할 청구가 아니다. 반환된 DHCPACK은 서버가 실제로 수용한 내용을 클라이언트에게 알려준다.

그다음 시간이 관계를 인지 가능한 상태들로 나눈다. T1에서, 서버가 달리 정하지 않는 한 보통 임대 기간의 절반 시점에 클라이언트는 RENEWING 상태에 들어가 임대를 부여한 서버를 향해 DHCPREQUEST를 보낸다. 갱신이 실패하면 보통 기간의 8분의 7 시점에 T2가 도래한다. 클라이언트는 REBINDING 상태에 들어가 요청의 범위를 넓혀 다른 가용한 서버도 응답할 수 있게 한다. T1과 T2는 상대 타이머이지 달력상의 약속이 아니며, 서버는 서로 다른 값을 제공할 수 있다.

경직된 경계는 만료다. 임대 기간이 끝나기 전에 DHCPACK으로 임대가 연장되지 않으면, RFC 2131은 클라이언트에게 즉시 해당 주소로의 네트워크 처리를 중단하고 주소를 반납하며 INIT으로 돌아갈 것을 요구한다. 그 주소는 이후 다른 곳에 할당될 수 있다. 프로토콜이 승인된 사용이 끝나는 순간을 의도적으로 기술하기 때문에, 이 규칙은 영구적 소유권과 조화되기 어렵다.

무한 임대조차 소유권 증서는 아니다

RFC 2132는 IP 주소 임대 시간 옵션을 정의하고, 모든 비트가 1인 값을 무한 임대로 허용한다. 길거나 무한한 임대는 운영적으로 중요하다. 기기의 구성을 놀랍도록 오래 지속되게 하고 잦은 갱신으로 인한 혼란을 줄일 수 있다. 게다가 유효한 임대 기간 동안 승인은 장식이 아니다. 그것은 해당 행정 도메인 내 구성 서비스로부터의 실질적인 권한 부여다.

그러나 기간과 법적 의미는 서로 다른 차원이다. 무한 값에는 예정된 타이머 만료가 없을 뿐, 클라이언트를 조작하는 사람을 인증하거나, 다른 네트워크에 대한 권리를 확립하거나, 레지스트리에 구속력을 부여하거나, 관리자가 주변 시스템을 변경하는 것을 막지도 못한다. 이를 "소유권"이라고 부르는 것은 옵션이 결코 담지 않은 주장을 끌어들이는 일이다.

RFC 5227은 별개의 제약을 계속 보이게 한다. IPv4 주소 충돌 감지는 호스트에게 사용 전 탐색을 요구하고, 충돌이 발생하면 주소를 방어하거나 포기하도록 한다. 이 메커니즘은 DHCP 서버를 무효화하지 않지만, 서버의 데이터베이스 상태가 링크에 대한 완전한 지식으로 취급되는 것을 막는다. 한 제어 평면으로부터의 허가와 매체에서 관측된 가용성은 상호 보완적인 증거다.

모든 DHCPACK에 할당이 담겨 있는 것도 아니다

메시지 이름만으로 판단하는 것의 위험을 가장 깔끔하게 보여주는 사례는 DHCPINFORM이다. 이미 외부적으로 구성된 주소를 가진 클라이언트는 DHCPINFORM을 사용해 다른 로컬 매개변수를 요청할 수 있다. 응답하는 서버는 DHCPACK을 보낼 수 있지만, RFC 2131에 따르면 이 교환은 새 주소를 할당하지 않고, 바인딩을 확인하지 않으며, yiaddr 필드를 비워 두고, 임대 시간 옵션을 포함하지도 않는다.

따라서 동일한 메시지 유형이 실질적으로 서로 다른 두 행위에 참여한다. 할당 상태 머신에서 DHCPACK은 바인딩을 확정할 수 있다. INFORM 교환에서는 바인딩을 만들지 않고 구성만 반환한다. 관측된 모든 DHCPACK을 "이 서버가 이 주소를 이 클라이언트에 할당했다"는 증명으로 취급하는 자산 관리 시스템은 허위 출처 정보를 만들어 낸다.

RFC 6842는 또 하나의 좁은 개선을 보여준다. 이 RFC는 정의된 상황에서 서버가 DHCPACK과 DHCPOFFER에 클라이언트 식별자를 되돌려 보내도록 요구하여, 클라이언트가 응답을 자신의 교환과 짝지을 수 있게 돕는다. 더 나은 메시지 짝짓기는 유용한 증거지만, 클라이언트 식별자는 자연인의 신원 증명이 아니며 소유권 자격 증명도 아니다.

서버가 아는 것은 바인딩이지 전체 진실이 아니다

RFC 4388의 Leasequery 작업은 서버의 관점을 특히 명확한 방식으로 드러낸다. 서버는 주소를 ACTIVE, UNASSIGNED 또는 UNKNOWN으로 보고할 수 있고, 활성 임대의 남은 기간을 반환할 수 있다. 이 질의는 상태를 조회할 뿐 바인딩을 변경하지 않는다. 그 답은 서버의 임대 데이터베이스에 대해서는 권위적이지만, 세그먼트의 모든 패킷·기기·충돌 관측에 대한 완전한 기술이라고 할 수는 없다.

따라서 조사자에게 주소 귀속과 주소 할당은 별개의 명제로 남아야 한다. 임대 기록은 DHCP 서비스가 일정 기간 동안 클라이언트 식별자에 주소 사용을 승인했다는 주장을 뒷받침할 수 있다. 그러나 그것만으로 어떤 사람이 기기를 소유했는지, 해당 주소의 모든 트래픽이 그 기기에서 나왔는지, 기록된 기간 밖에서도 동일한 귀속이 유효한지를 증명할 수는 없다.

이것이 DHCP 증거를 약하게 만드는 것은 아니다. 증거를 판독 가능하게 만드는 것이다. 서버 로그, 보존된 임대 이력, 클라이언트 식별자, 릴레이 정보, 링크 계층 관측, 충돌 감지 결과, 동기화된 시각을 결합하면 더 강한 기술이 만들어진다. 오류는 DHCPACK에 의존하는 것이 아니라, 승인 메시지에게 설계된 범위 밖의 질문에 답하게 하는 데 있다.

출처