wiki-grav/pages/02.linux/15.dhcp-server-and-routing/default.en.md
2022-06-30 14:29:03 +02:00

2.0 KiB

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
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