DHCP:在日誌檔案中記錄主機聲明

DHCP:在日誌檔案中記錄主機聲明

我目前在 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 執行此操作,那就太好了,我願意接受有關執行此操作的 3rd 方應用程式的建議。需要注意的一件事是,dhcpd.conf 檔案是使用執行 RADIUS 的第 3 方應用程式動態生成的,因此主機聲明可以並且將會更改,因此如果網路上有人出現問題,我不能簡單地查看該文件並得到他們的名字。

答案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 ,將其輸出儲存在某處,然後每分鐘檢查一次更改,並將租用檔案複製到目錄,程式可以在該目錄發生更改時進行分析。

答案3

只要客戶端在 DHCP 請求中包含其主機名,ISC DHCPD 就會記錄客戶端名稱。

您沒有提及您的客戶端正在運行哪個作業系統。 Linux 用戶端通常不會在 DHCP 請求中包含其主機名,因此您需要新增

send host-name "hostname";

給你的/etc/dhcp3/dhclient.conf. (您的發行版的配置可能有所不同。)

Windows 用戶端在 DHCP 請求中包含其電腦名稱。

答案4

只需查看檔案 /var/lib/dh​​cpd/dhcpd.leases 即可。我認為您在日誌文件中查找的內容就在那裡。

相關內容