Uma ferramenta que manipulará a maior parte disso é arpwatch
. Por padrão (no Debian, pelo menos) é que ele grava em /var/lib/arpwatch/arp.dat
. Este arquivo é liberado e atualizado sempre que arpwatch
é interrompido.
O arquivo contém entradas deste formulário:
52:54:00:aa:bb:cc 192.168.1.2 1452252063 somehostname eth0
O arquivo /etc/ethers
requer apenas o endereço MAC e o endereço IP ou o nome de host resolvível:
52:54:00:aa:bb:cc 192.168.1.2
É bastante simples manter /etc/ethers
atualizado e sincronizado com um script pequeno, executado diariamente em crontab
:
#!/bin/bash
# Flush arp.dat
service arpwatch restart
# Save a copy
test -f /etc/ethers || touch /etc/ethers
cp -fp /etc/ethers /etc/ethers.old
# Check to see if anything new has arrived. If so rebuild the file
(
echo '# This file is updated automatically from /var/lib/arpwatch/arp.dat'
echo '# Take care when editing'
echo '#'
(
awk '{print $1,$2}' /var/lib/arpwatch/arp.dat
grep -v '^#' /etc/ethers.old
) |
sort -u
) >/etc/ethers.tmp
# Update ethers with the new file
cmp -s /etc/ethers.tmp /etc/ethers || cat /etc/ethers.tmp >/etc/ethers
rm -f /etc/ethers.tmp
# All done
exit 0