Ubuntu – Internet sharing with static mac-addr to IP mapping

internetip addressnetworking

I can create a network between my ubuntu 14.04 and another machine by connecting ethernet cable between my ubuntu machine and second machine, and then setting "IPv4" to "share to other computers". The network created has IP that's something like 10.42.0.x. I'm doing this not to share internet, but to create a network between two machines, and this works very well.

For the two machines to address each other using hostname, I'd edit their /etc/hosts with respective IPs. I'd like this to be simpler, using MAC to IP mapping that's found in modern routers. What would be the easiest way to accomplish this?

Best Answer

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.