Normalmente, a atribuição de endereços IP com base no MAC é obtida por meio de um servidor DHCP e seu arquivo de configuração %código%. O exemplo abaixo reserva um conjunto de endereços IP para convidados, e o restante é atribuído com base no MAC:
# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;
# option definitions common to all supported networks...
default-lease-time 86400;
max-lease-time 93000;
option domain-name "xxxxxx.com";
option domain-name-servers 192.168.111.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.111.255;
option routers 192.168.111.1;
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;
# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;
# The Basic DHCP allocated addresses
subnet 192.168.111.0 netmask 255.255.255.0 {
range 192.168.111.3 192.168.111.50;
}
# Some specifically declared static IP addresses
host Wireless-R {
hardware ethernet 00:22:6B:82:01:55;
fixed-address 192.168.111.57;
}
host Doug-XPS {
hardware ethernet 00:23:4d:a6:ed:c4;
fixed-address 192.168.111.100;
}
host Doug-XPS {
hardware ethernet 00:23:4d:a6:ed:c4;
fixed-address 192.168.111.100;
}
host Doug-XPS2 {
hardware ethernet 00:21:9B:F9:21:26;
fixed-address 192.168.111.101;
}
host S10 {
hardware ethernet A0:F3:C1:10:22:EA;
fixed-address 192.168.111.102;
}
Alternativamente, e se você preferir usar o dnsmasq, ou já o estiver usando por padrão, você pode especificar via MAC em /etc/dhcp/dhcpd.conf
via:
doug-xps=00:23:4d:a6:ed:c4,192.168.111.100
Disclaimer: Na verdade, não estou familiarizado com o dnsmasq, mas o exemplo do DHCP é diretamente do meu sistema.