MAC 주소에 기반하여 IP 주소를 할당하는 DHCP Server Callout DLL


작년 10월에 본사의 DHCP 팀블로그를 통해 릴리즈된 기능입니다. 블로그를 통해서 릴리즈한 기능으로 해당 DLL을 사용하시다가 문제가 발생하셨을 경우에는 공식적인 기술 지원을 받으실 수는 없습니다. 제가 이리저리 테스트를 해보고, 사용해본 결과 현업 환경에서 응용하실 수 있는 측면이 있다고 판단하여 포스팅합니다.

DHCP 서버를 사용하시면서, MAC 주소에 기반하여 IP 주소를 할당 또는 거부하시고 싶으신 경우가 있었을거라 생각합니다. 제가 엔지니어였을 때도, 회사내에 아무나 찾아와서 라인을 꽂는다고 IP 주소를 할당해주는 것은 보안에 조금은 문제가 있지 않을까라는 생각을 가진 적이 있었으니까요.

Callout DLL을 사용하시면, DHCP 서버 서비스가 시작될때, 해당 DLL을 로딩하고 이를 이용하여 IP 주소 할당을 하게 됩니다.

1. 먼저 Callout DLL을 다운로드하셔서 설치합니다.
    해당 버전은 Windows Server 2003, Windows Server 2008을 지원하며, x86, x64 모두 사용이 가능합니다.
2. 설치 후, \Windows\System32 폴더(x86), \Windows\Syswow64 폴더(x64)로 가시면 MacFilterCallout.dll이 있습니다. 이를 특정 폴더로 복사합니다. 이 포스팅에서는 C:\Callout 폴더로 하겠습니다.

image

3. 레지스트리 편집기를 열어서, HKLM\System\CurrentControlSet\Services\DHCPServer\Parameters로 갑니다. 아래 그림을 참조하여, Callout으로 시작하는 레지스트리 키를 생성합니다.

CalloutDlls : Reg_Multi_SZ - MacFilterCallout.dll 파일의 위치 정보
CalloutEnabled : Reg_DWORD - 해당 Callout DLL의 사용 여부, 0 - 사용 안함, 1 - 사용함
CalloutErrorLogFile : Reg_Multi_SZ - 해당 Callout DLL 사용시 에러에 대한 로깅 위치 및 파일 정보
CalloutInfoLogFile : Reg_Multi_SZ - 해당 Callout DLL 사용시 정보에 대한 로깅 위치 및 파일 정보
CalloutMACAddressListFile : Reg_Multi_SZ - MAC 주소 정보 기록 파일의 위치 및 파일 정보

image

4. CallOutMACAddressListFile 레지스트리 키에서 지정한 폴더 위치에서 지정된 파일 이름으로 텍스트 파일을 생성합니다. 파일의 정보 구조는 아래와 같습니다.

image

MAC_ACTION 칼럼이 중요합니다. DENY로 해놓았을 경우에는 아래의 MAC 주소를 거부하겠다는 의미입니다. 나머지는 모두 허용하겠다는 것이죠. 반대로 ALLOW로 해놓았을 경우에는 아래의 MAC 주소만 허용하겠다는 것이고, 나머지는 모두 거부하겠다는 의미입니다.

image

해당 목록은 DHCP 서버 서비스가 시작될 때에 로딩되며, 운영 중에는 변경할 수 없습니다. 또한 00155d*와 같은 와일드카드를 사용하실 수 없습니다.

5. DHCP 서버 서비스를 재시작 시키면 이벤트 로그에 이벤트 ID 1033 로그가 기록됩니다.

image

image

6. 설정 상태에 따라 CalloutInfoLogFile 레지스트리 키 값 위치와 파일에 로그가 남게 됩니다.

image

Callout DLL의 도움말 문서가 \Windows\System32에 같이 설치됩니다. 제가 한글로 설명해놓았지만, 참고하실 분은 해당 폴더내 SetupDHCPMacFilter.rtf를 참고하세요.

image

나름대로 DHCP 서버를 운영하시는 분들께는 필요한 유틸리티이지 않나 싶습니다. 해당 Callout DLL을 이용하여, 좀더 보안이 강화되고, 유연한 IT 인프라를 만드는데 도움이 되시길 바라겠습니다.

Comments (3)
  1. Maystyle says:

    안정화만 된다면… 정말 좋은 솔루션이네요…^^

  2. 문의 says:

    MACLIST.TXT를 생성하여  Allow 와 Deny를 구분지어야 하는지요 ?

    아니면 Allow만 만들어야 하는지요 ?

    예를들어 MACLIST.TXT 파일의 내용을 아래와 같이 둘다 생성해도 되는지 궁금합니다.

    MAC_ACTION = {ALOW}

    00266609184a

    .

    .

    .

    .

    MAC_ACTION = {DENY}

    00266609184b

    .

    .

    .

  3. 애니컴 says:

    이거 너무 좋네요…. 제 블로그에 퍼 가겠습니다.

Comments are closed.

Skip to main content