AdGuardHome/dhcpd
Simon Zolin 990f531f54 + DHCP: add ra_slaac_only, ra_allow_slaac config settings
Close # 2076

Squashed commit of the following:

commit 7a938fc6ffa0adc1e705f59778d7e7442b83d4b9
Merge: 3db2605e 6222d17d
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Sep 24 16:34:23 2020 +0300

    Merge remote-tracking branch 'origin/master' into 2076-dhcp-ra-slaac

commit 3db2605efda79e8d361fb46c32bb9ec753de0e02
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Sep 24 16:21:36 2020 +0300

    minor

commit de31c6aeebd78dce54ca54fbff010f3dd50ce974
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Sep 24 12:23:09 2020 +0300

    don't initialize DHCPv6 server if we must force the clients to use SLAAC

commit 7c4239899c85880641dc5b4826ae34386bc5ee94
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Sep 22 19:34:27 2020 +0300

    minor

commit 2b57688ce4c31d45d2236bd397e0b3041dac68c1
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Sep 21 19:50:11 2020 +0300

    + DHCP: add ra_slaac_only, ra_allow_slaac config settings
2020-09-24 18:33:11 +03:00
..
nclient4 * makefile: test: use '-race' parameter on UNIX, don't use it on Windows 2020-09-03 10:10:54 +03:00
check_other_dhcp_windows.go * POST /control/dhcp/find_active_dhcp: add dhcpv6 server info 2020-08-20 15:19:58 +03:00
check_other_dhcp.go fix linter issues 2020-08-20 15:41:25 +03:00
db.go + dhcpv6 server; rewrite dhcpv4 server; changed API 2020-08-19 18:32:23 +03:00
dhcp_http.go * POST /control/dhcp/find_active_dhcp: add dhcpv6 server info 2020-08-20 15:19:58 +03:00
dhcpd_test.go + dhcp custom options 2020-08-25 14:07:11 +03:00
dhcpd.go Merge: * DHCP fixes 2020-08-25 17:29:49 +03:00
helpers.go + dhcpv6 server; rewrite dhcpv4 server; changed API 2020-08-19 18:32:23 +03:00
network_utils_test.go + dhcpv6 server; rewrite dhcpv4 server; changed API 2020-08-19 18:32:23 +03:00
network_utils.go *: fix golangci-lint warnings 2020-04-05 18:34:43 +03:00
os_windows.go - dhcp: fix build on macos #704 2019-04-23 15:14:26 +03:00
README.md + DHCP: add ra_slaac_only, ra_allow_slaac config settings 2020-09-24 18:33:11 +03:00
router_adv_test.go + DHCP: add ra_slaac_only, ra_allow_slaac config settings 2020-09-24 18:33:11 +03:00
router_adv.go + DHCP: add ra_slaac_only, ra_allow_slaac config settings 2020-09-24 18:33:11 +03:00
server.go + DHCP: add ra_slaac_only, ra_allow_slaac config settings 2020-09-24 18:33:11 +03:00
v4_test.go + dhcp custom options 2020-08-25 14:07:11 +03:00
v4.go - fix linter 2020-08-25 17:44:30 +03:00
v6_test.go + dhcpv6 server; rewrite dhcpv4 server; changed API 2020-08-19 18:32:23 +03:00
v6.go + DHCP: add ra_slaac_only, ra_allow_slaac config settings 2020-09-24 18:33:11 +03:00
v46_windows.go + dhcpv6 server; rewrite dhcpv4 server; changed API 2020-08-19 18:32:23 +03:00

DHCP server

Contents:

Test setup with Virtual Box

To set up a test environment for DHCP server you need:

  • Linux host machine
  • Virtual Box
  • Virtual machine (guest OS doesn't matter)

Configure client

  1. Install Virtual Box and run the following command to create a Host-Only network:

     $ VBoxManage hostonlyif create
    

    You can check its status by ip a command.

    You can also set up Host-Only network using Virtual Box menu:

     File -> Host Network Manager...
    
  2. Create your virtual machine and set up its network:

     VM Settings -> Network -> Host-only Adapter
    
  3. Start your VM, install an OS. Configure your network interface to use DHCP and the OS should ask for a IP address from our DHCP server.

  4. To see the current IP address on client OS you can use ip a command on Linux or ipconfig on Windows.

  5. To force the client OS to request an IP from DHCP server again, you can use dhclient on Linux or ipconfig /release on Windows.

Configure server

  1. Edit server configuration file 'AdGuardHome.yaml', for example:

     dhcp:
       enabled: true
       interface_name: vboxnet0
       dhcpv4:
         gateway_ip: 192.168.56.1
         subnet_mask: 255.255.255.0
         range_start: 192.168.56.2
         range_end: 192.168.56.2
         lease_duration: 86400
         icmp_timeout_msec: 1000
         options: []
       dhcpv6:
         range_start: 2001::1
         lease_duration: 86400
         ra_slaac_only: false
         ra_allow_slaac: false
    
  2. Start the server

     ./AdGuardHome
    

    There should be a message in log which shows that DHCP server is ready:

     [info] DHCP: listening on 0.0.0.0:67