--- title: 'DHCP Server and Routing' --- [toc] ## Installation `# apt install isc-dhcp-server` ## Configuration Edit `/etc/default/isc-dhcp-server` `INTERFACESv4="(interface 1) (interface 2)"` Edit `/etc/dhcp/dhcpd.conf` to set a subnet ``` subnet (netaddress) netmask (subnetmask) { range (first dhcp) (last dhcp); option subnet-mask (subnetmask); option routers (gateway); option domain-name "(name)"; option domain-name-servers (dns server); } ``` Edit `/etc/network/interfaces` ``` auto (interface) iface (interface) inet static address (address) network (netaddress) netmask (netmask) broadcast (broadcast) ``` Enable the interface `# ifup (interface)` Restart DHCP Server `# systemctl restart isc-dhcp-server.service` ### Enable routing `# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.d/80-forwarding.conf` `# sysctl -p /etc/sysctl.d/80-forwarding.conf` `# iptables -t nat -A POSTROUTING -o (WAN interface) -j MASQUERADE` `# iptables -A FORWARD -i (LAN interface) -j ACCEPT` Make iptables permanent Select `Yes` during the installation to save current rules `# apt install iptables-persistent` ### Enable DHCP-managed fixed IP address ``` host (hostname) { hardware ethernet (mac); fixed-address (ip address); } ``` ### Dynamic DNS *Needs a supported DNS like BIND or PowerDNS* [Configure your DNS server to accept updates](https://wiki.realstickman.net/e/en/linux/services/powerdns) Add the following snippet to your `/etc/dhcp/dhcpd.conf` file How to generate the key is also described in the DNS article ``` ddns-updates on; ddns-update-style interim; update-static-leases on; ddns-domainname "testpdns"; ddns-rev-domainname "in-addr.arpa."; key "(keyname)" { algorithm hmac-md5; secret "(key)"; }; zone testpdns { primary 127.0.0.1; key (keyname); } zone 7.168.192.in-addr.arpa. { primary 127.0.0.1; key (keyname); } ``` ## Client DHCP Request `# dhclient -v` Release IP `# dhclient -v -r`