Existe um comando que eu possa usar para perguntar ao servidor dhcpd quais endereços foram atribuídos?
21
Não, você só pode obter esse lado do servidor de informações do servidor DHCP. Esta informação está contida no arquivo .lease do servidor DHCP:, /var/lib/dhcpd/dhcpd.leases
se você estiver usando o servidor DHCP do ISC.
$ more /var/lib/dhcpd/dhcpd.leases
# All times in this file are in UTC (GMT), not your local timezone. This is
# not a bug, so please don't ask about it. There is no portable way to
# store leases in the local timezone, so please don't request this as a
# feature. If this is inconvenient or confusing to you, we sincerely
# apologize. Seriously, though - don't ask.
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-V3.0.5-RedHat
lease 192.168.1.100 {
starts 4 2011/09/22 20:27:28;
ends 1 2011/09/26 20:27:28;
tstp 1 2011/09/26 20:27:28;
binding state free;
hardware ethernet 00:1b:77:93:a1:69;
uid "\001\000\033w\223\241i";
}
...
...
/var/lib/dhcp/dhcpd.leases
(ou seja, nãod
no final do primeirodhcp
...)isc-dhcpd
A versão do pacote4.3.1
possui este comando para listar concessões:Este é um script de script perl simples que também suporta versões mais antigas do DHCP. Você pode ver uma cópia no código fonte da Debian ou na distribuição oficial do DHCP (in
contrib/
) também.A saída é bonita:
É mais bonito se você baixar o
oui.txt
arquivo conforme sugerido, mas a saída pode ficar distorcida, a menos que você aplique o seguinte patch:Este patch foi enviado como ISC-Bugs # 41288 e aguarda revisão.
fonte
O comando egrep pode ser usado para obter uma saída:
Saída:
fonte
A maioria das respostas acima é parcial. E para ser sincero, não existe uma solução simples. 1) Você pode analisar o arquivo de banco de dados dhcpd.leases e obter informações sobre concessões ativas, mas não obterá informações sobre nenhum endereço FIXO (atribuído por uma linha como:
E isso também não fornece informações sobre quando foi a última vez que um dhcp ack foi enviado para a máquina.
2) por outro lado, você pode analisar o arquivo dhcpd.log para procurar linhas de confirmação (elas se parecem com isso):
Mas o que você realmente deve fazer é fazer AMBOS. Primeiro analise o arquivo de log e, em seguida, atualize o arquivo com as informações obtidas do arquivo dhcpd.leases com o banco de dados para obter informações ausentes, como início e fim da concessão etc.
Agora: joguei por cerca de 2 dias úteis completos até ter criado uma solução que cria uma tabela HTML com TODAS as concessões ativas, FIXAS e dinâmicas. Aqui está o código que você pode colocar na sua pasta cgi-bin ou em qualquer outro lugar.
Observe que: 1) o script acima precisa de pequenas modificações antes de executar no SEU ambiente, você precisa modificar os locais dos arquivos e uma regex, dependendo do formato do arquivo de log. Veja o comentário no script. 2) o script acima não está verificando se o IP não se repete na tabela ACK, se duas máquinas diferentes obtiveram o mesmo endereço nos últimos dias. Isso ocorre por design (o que eu pessoalmente precisava para ver cada endereço MAC que estava presente na minha rede nos últimos dias) - você pode modificá-lo facilmente, há uma seção pronta para isso no código, basta adicionar uma condição.
Espero que você goste.
fonte
O formato dos arquivos de concessão foi alterado ou, pelo menos, é diferente ao usar
dhcpcd5
. Para visualizar o contrato de arrendamento que tem nowlan0
para a rede Wi-FiMyNetwork
, você tem que olhar para esta imagem (ou algo parecido):/var/lib/dhcpcd5/dhcpcd-wlan0-MyNetwork.lease
.Esse arquivo é um arquivo binário. (Por quê? Eu não sei. Talvez para salvar alguns preciosos ciclos da CPU ao analisá-lo? Blech.) Para visualizá-lo, use o
dhcpcd --dumplease
, que analisa o binário do STDIN e gera uma versão legível por humanos:Por outro lado, se você quiser apenas ver qual é o contrato atual atribuído
wlan0
, você pode simplesmente fazer:fonte
Na verdade, eu escrevi algo no bash para tentar conseguir isso. Ele grava todos os endereços IP no mesmo arquivo de nome; portanto, se outro aparecer novamente, substituirá o arquivo anterior; portanto, não haverá duplicatas. Ele também usará o oui.txt para encontrar o fabricante do endereço MAC em questão.
Veja se você pode usá-lo.
fonte