DHCP: Registrando Declarações do Host no Arquivo de Log

4

Atualmente estou executando o servidor ISC-DHCP v3 no Ubuntu 8.04. O que eu estou tentando fazer é logar Quem tem o endereço IP quando.

Atualmente, no arquivo de log do DHCP, você pode ver o seguinte:

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

Gostaria de chegar ao ponto em que vejo isso ou algo semelhante:

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

Eu preciso registrar o host que obteve o endereço IP quando (o arquivo de log tem registros de data e hora, mas os removi para esta postagem) para fins históricos.

No meu arquivo dhcpd.conf eu tenho a seguinte declaração de host:

host TestPC001 {
     hardware ethernet d0:50:56:ac:74:71;
     fixed-address 208.x.x.75;
}

Se alguém souber como fazer isso com o DHCP3 que seria ótimo, estou aberto a sugestões sobre aplicativos de terceiros que farão isso. Uma coisa a notar, o arquivo dhcpd.conf é gerado dinamicamente usando um aplicativo de terceiros que faz o RADIUS, então as declarações do host podem e vão mudar, então eu não posso simplesmente olhar para o arquivo se houver um problema com alguém na rede e consiga o nome deles.

    
por jinanwow 08.07.2009 / 04:51

5 respostas

3

Eu descobri isso.

Adicionando o seguinte ao arquivo 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)))); 
}  

resultará em (removi os timestamps para limpeza):

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
    
por 08.07.2009 / 16:48
1

O ISC DHCPD registra o nome do cliente, desde que o cliente inclua seu nome de host na solicitação DHCP.

Você não menciona qual sistema operacional seus clientes estão executando. Clientes Linux geralmente não incluem seu nome de host na solicitação DHCP, então você precisa adicionar

send host-name "hostname";

para o seu /etc/dhcp3/dhclient.conf . (Sua distribuição pode ser configurada de forma diferente.)

Os clientes Windows incluem o nome do computador na solicitação DHCP.

    
por 08.07.2009 / 05:10
1

O debian / etch colou o dhcp3 e ligou-se ao dnssec. Então, dhcp envia o hostname do cliente para bind, que atualiza as dns-zones.

Eu recebo algo assim de um Windows XP

# tail -13 /var/lib/dhcp3/dhcpd.leases
lease 10.28.0.155 {
  starts 3 2009/07/08 05:14:45;
  ends 3 2009/07/08 06:14:45;
  cltt 3 2009/07/08 05:14:45;
  binding state active;
  next binding state free;
  hardware ethernet 00:08:54:37:48:a6;
  uid "
Jul  8 07:14:45 ServerName dhcpd: DHCPOFFER on 10.28.0.155 to 00:08:54:37:48:a6 (PC18) via eth1
Jul  8 07:14:45 ServerName named[12354]: client 127.0.0.1#53673: updating zone 'mydomain.lan/IN': adding an RR at 'PC18.mydomain.lan' A
Jul  8 07:14:45 ServerName named[12354]: client 127.0.0.1#53673: updating zone 'mydomain.lan/IN': adding an RR at 'PC18.mydomain.lan' TXT
Jul  8 07:14:45 ServerName dhcpd: Added new forward map from PC18.mydomain.lan to 10.28.0.155
Jul  8 07:14:45 ServerName named[12354]: client 127.0.0.1#53673: updating zone '0.28.10.in-addr.arpa/IN': deleting rrset at '155.0.28.10.in-addr.arpa' PTR
Jul  8 07:14:45 ServerName named[12354]: client 127.0.0.1#53673: updating zone '0.28.10.in-addr.arpa/IN': adding an RR at '155.0.28.10.in-addr.arpa' PTR
Jul  8 07:14:45 ServerName dhcpd: added reverse map from 155.0.28.10.in-addr.arpa. to PC18.mydomain.lan
Jul  8 07:14:45 ServerName dhcpd: Wrote 76 leases to leases file.
Jul  8 07:14:45 ServerName dhcpd: DHCPREQUEST for 10.28.0.155 (10.28.0.1) from 00:08:54:37:48:a6 (PC18) via eth1
Jul  8 07:14:45 ServerName dhcpd: DHCPACK on 10.28.0.155 to 00:08:54:37:48:a6 (PC18) via eth1
Jul  8 07:16:07 ServerName dhcpd: DHCPINFORM from 10.28.0.155 via eth1
Jul  8 07:16:07 ServerName dhcpd: DHCPACK to 10.28.0.155 (00:08:54:37:48:a6) via eth1
1
# tail -13 /var/lib/dhcp3/dhcpd.leases
lease 10.28.0.155 {
  starts 3 2009/07/08 05:14:45;
  ends 3 2009/07/08 06:14:45;
  cltt 3 2009/07/08 05:14:45;
  binding state active;
  next binding state free;
  hardware ethernet 00:08:54:37:48:a6;
  uid "
Jul  8 07:14:45 ServerName dhcpd: DHCPOFFER on 10.28.0.155 to 00:08:54:37:48:a6 (PC18) via eth1
Jul  8 07:14:45 ServerName named[12354]: client 127.0.0.1#53673: updating zone 'mydomain.lan/IN': adding an RR at 'PC18.mydomain.lan' A
Jul  8 07:14:45 ServerName named[12354]: client 127.0.0.1#53673: updating zone 'mydomain.lan/IN': adding an RR at 'PC18.mydomain.lan' TXT
Jul  8 07:14:45 ServerName dhcpd: Added new forward map from PC18.mydomain.lan to 10.28.0.155
Jul  8 07:14:45 ServerName named[12354]: client 127.0.0.1#53673: updating zone '0.28.10.in-addr.arpa/IN': deleting rrset at '155.0.28.10.in-addr.arpa' PTR
Jul  8 07:14:45 ServerName named[12354]: client 127.0.0.1#53673: updating zone '0.28.10.in-addr.arpa/IN': adding an RR at '155.0.28.10.in-addr.arpa' PTR
Jul  8 07:14:45 ServerName dhcpd: added reverse map from 155.0.28.10.in-addr.arpa. to PC18.mydomain.lan
Jul  8 07:14:45 ServerName dhcpd: Wrote 76 leases to leases file.
Jul  8 07:14:45 ServerName dhcpd: DHCPREQUEST for 10.28.0.155 (10.28.0.1) from 00:08:54:37:48:a6 (PC18) via eth1
Jul  8 07:14:45 ServerName dhcpd: DHCPACK on 10.28.0.155 to 00:08:54:37:48:a6 (PC18) via eth1
Jul  8 07:16:07 ServerName dhcpd: DHCPINFORM from 10.28.0.155 via eth1
Jul  8 07:16:07 ServerName dhcpd: DHCPACK to 10.28.0.155 (00:08:54:37:48:a6) via eth1
1%pre%00T7H6"; set ddns-rev-name = "155.0.28.10.in-addr.arpa."; set ddns-txt = "31b6fa94a1ef1702e6eed6bef3a9fd6f31"; set ddns-fwd-name = "PC18.mydomain.lan"; client-hostname "PC18"; }
00T7H6"; set ddns-rev-name = "155.0.28.10.in-addr.arpa."; set ddns-txt = "31b6fa94a1ef1702e6eed6bef3a9fd6f31"; set ddns-fwd-name = "PC18.mydomain.lan"; client-hostname "PC18"; }

E no /var/log/daemon.log

%pre%

Por isso, sugiro que você estabeleça o DNSSEC: google para o DNSSEC Howto

    
por 08.07.2009 / 07:35
1

O ISC DHCP armazena as concessões alocadas em um arquivo (normalmente /var/run/dhcp/dhcpd.leases ou similar).

O conteúdo do arquivo de concessões está documentado:

link

e há um módulo Perl disponível para analisar o conteúdo do arquivo de concessões:

link

Todas as informações que você procura estão no arquivo de concessões, para que você possa facilmente escrever um programa para analisar os dados e armazená-los em algum lugar para o histórico. Se você não estiver querendo fazer isso em tempo real, provavelmente poderá executá-lo com uma frequência mínima de metade do seu tempo de locação (já que os clientes devem renovar o contrato na metade do caminho).

Espero que a análise seja tão leve que você possa executá-la com frequência sem preocupação. Você também pode obter a fantasia executando md5sum no arquivo, armazenando a saída disso em algum lugar, verificando as alterações uma vez por minuto e copiando o arquivo de concessão para um diretório onde um programa possa analisá-lo sempre que for alterado.

    
por 08.07.2009 / 09:24
0

Basta olhar para o arquivo /var/lib/dhcpd/dhcpd.leases. Eu acho que o que você está procurando nos arquivos de log está presente lá.

    
por 08.07.2009 / 15:04