wiki-grav/pages/02.linux/dhcp-server-and-routing/default.en.md
2023-02-19 15:21:41 +01:00

2.0 KiB

title visible
DHCP Server and Routing true

[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