
현재 Ubuntu 8.04에서 ISC-DHCP 서버 v3을 실행하고 있습니다. 내가 하려는 것은 누가 언제 어떤 IP 주소를 얻었는지 기록하는 것입니다.
현재 DHCP 로그 파일에서 다음을 볼 수 있습니다.
DHCPDISCOVER from d0:50:56:ac:74:71 via eth0
DHCPOFFER on 208.x.x.75 to d0:50:56:ac:74:71 via eth0
DHCPREQUEST for 208.x.x.75 (172.18.1.2) from d0:50:56:ac:74:71 via eth0
DHCPACK on 208.x.x.75 to d0:50:56:ac:74:71 via eth0
나는 이것이나 비슷한 것을 볼 수 있는 지점에 도달하고 싶습니다.
DHCPDISCOVER from d0:50:56:ac:74:71 via eth0
DHCPOFFER on 208.x.x.75 to d0:50:56:ac:74:71 via eth0
DHCPREQUEST for 208.x.x.75 (172.18.1.2) from d0:50:56:ac:74:71 via eth0
DHCPACK on 208.x.x.75 to d0:50:56:ac:74:71 (TestPC001) via eth0
기록 목적으로(로그 파일에는 타임스탬프가 있지만 이 게시물에서는 이를 제거했습니다) IP 주소를 얻은 호스트를 기록해야 합니다.
내 dhcpd.conf 파일에는 다음 호스트 선언이 있습니다.
host TestPC001 {
hardware ethernet d0:50:56:ac:74:71;
fixed-address 208.x.x.75;
}
DHCP3를 사용하여 이 작업을 수행하는 방법을 아는 사람이 있다면 이 작업을 수행할 수 있는 타사 앱에 대한 제안을 환영합니다. 한 가지 주목할 점은 dhcpd.conf 파일은 RADIUS를 수행하는 타사 앱을 사용하여 동적으로 생성되므로 호스트 선언이 변경될 수 있고 변경되므로 네트워크에 있는 누군가에게 문제가 있는 경우 단순히 파일을 볼 수는 없습니다. 그리고 그들의 이름을 알아내세요.
답변1
나는 그것을 알아 냈습니다.
dhcpd.conf 파일에 다음을 추가합니다.
if known {
log (info, concat ("HOSTNAME: ", host-decl-name, " on ",binary-to-ascii (10, 8, ".", leased-address)," at ", binary-to-ascii (16, 8, ":", substring (hardware, 1, 6))));
}
결과는 다음과 같습니다(정리를 위해 타임스탬프를 제거했습니다).
HOSTNAME: TestPC001 on 208.x.x.75 at d0:50:56:ac:74:71
DHCPDISCOVER from d0:50:56:ac:74:71 via eth0
DHCPOFFER on 208.x.x.75 to d0:50:56:ac:74:71 via eth0
DHCPREQUEST for 208.x.x.75 (172.18.1.2) from d0:50:56:ac:74:71 via eth0
DHCPACK on 208.x.x.75 to d0:50:56:ac:74:71 via eth0
답변2
ISC DHCP는 할당된 임대를 파일(일반적으로 /var/run/dhcp/dhcpd.leases 또는 유사한 파일)에 저장합니다.
임대 파일의 내용은 다음과 같이 문서화됩니다.
http://linux.die.net/man/5/dhcpd.leases
임대 파일의 내용을 구문 분석하는 데 사용할 수 있는 Perl 모듈이 있습니다.
http://search.cpan.org/~cvicente/Text-DHCPLeases-v0.3/lib/Text/DHCPLeases.pm
찾고 있는 모든 정보는 임대 파일에 있으므로 데이터를 구문 분석하고 기록을 위해 어딘가에 저장하는 프로그램을 쉽게 작성할 수 있습니다. 실시간으로 이 작업을 수행하지 않으려는 경우 임대 시간의 절반 이하로 자주 실행할 수 있습니다(클라이언트는 중간 지점에서 임대를 갱신할 것으로 예상되므로).
파싱이 너무 가벼워서 걱정 없이 자주 실행할 수 있을 것으로 기대합니다. 파일에 대해 md5sum을 실행하고 그 출력을 어딘가에 저장한 다음 1분에 한 번씩 변경 사항을 확인하고 프로그램이 변경될 때마다 분석할 수 있는 디렉터리에 임대 파일을 복사하여 멋진 작업을 수행할 수도 있습니다.
답변3
ISC DHCPD는 클라이언트가 DHCP 요청에 호스트 이름을 포함하는 한 클라이언트 이름을 기록합니다.
클라이언트가 어떤 OS를 실행하고 있는지는 언급하지 않았습니다. Linux 클라이언트는 일반적으로 DHCP 요청에 호스트 이름을 포함하지 않으므로 다음을 추가해야 합니다.
send host-name "hostname";
너의 ~에게 /etc/dhcp3/dhclient.conf
. (배포판은 다르게 구성될 수 있습니다.)
Windows 클라이언트는 DHCP 요청에 컴퓨터 이름을 포함합니다.
답변4
/var/lib/dhcpd/dhcpd.leases 파일을 살펴보세요. 내 생각에는 당신이 로그 파일에서 보고 있는 내용이 거기에 있는 것 같습니다.