Typically, IP address assignment based on MAC is achieved via a DHCP server and its configuration file in /etc/dhcp/dhcpd.conf
. The below example reserves a pool of IP addresses for guests, and the rest are assigned based on 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;
}
Alternatively, and if you prefer to use dnsmasq, or are already using it by default, you can specify via MAC in /etc/dnsmasq.conf
via:
doug-xps=00:23:4d:a6:ed:c4,192.168.111.100
Disclaimer: I am actually not familiar with dnsmasq, but the DHCP example is directly from my system.