====== (true) failover with isc-dhcpd ====== ==== true failover ==== Example === primary === ddns-update-style none; option domain-name "example.net"; option domain-name-servers ns1.example.net, ns2.example.net; default-lease-time 600; max-lease-time 7200; authoritative; log-facility local7; failover peer "dhcp-failover" { primary; address 10.131.188.150; port 647; peer address 10.135.68.18; peer port 647; max-response-delay 30; max-unacked-updates 10; load balance max seconds 3; mclt 1800; split 128; } subnet 10.131.171.0 netmask 255.255.255.0 { } subnet 10.131.188.128 netmask 255.255.255.128 { } subnet 10.135.30.192 netmask 255.255.255.240 { option subnet-mask 255.255.255.240; option broadcast-address 10.135.30.207; option routers 10.135.30.193; pool { failover peer "dhcp-failover"; max-lease-time 1800; # 30 minutes range 10.135.30.196 10.135.30.199; deny dynamic bootp clients; } } === secondary === ddns-update-style none; option domain-name "example.net"; option domain-name-servers ns1.example.net, ns2.example.net; default-lease-time 600; max-lease-time 7200; authoritative; log-facility local7; failover peer "dhcp-failover" { secondary; address 10.135.68.18; port 647; peer address 10.131.188.150; peer port 647; max-response-delay 30; max-unacked-updates 10; load balance max seconds 3; } subnet 10.135.72.0 netmask 255.255.254.0 { } subnet 10.135.68.0 netmask 255.255.255.0 { } subnet 10.135.30.192 netmask 255.255.255.240 { option subnet-mask 255.255.255.240; option broadcast-address 10.135.30.207; option routers 10.135.30.193; pool { failover peer "dhcp-failover"; max-lease-time 1800; # 30 minutes range 10.135.30.196 10.135.30.199; deny dynamic bootp clients; } } ==== disjunct ranges ==== Works but possible race condition and unbalnced leases ==== overlapping ranges ==== Works if clients answers ping requests, because a dhcpd pings a IP bevor it offers this IP to be sure it is not occupied.