badguardhome/internal/dhcpd
Ainar Garipov c129361e55 Pull request: 2305 limit message size
Merge in DNS/adguard-home from 2305-limit-message-size to master

Closes #2305.

Squashed commit of the following:

commit 6edd1e0521277a680f0053308efcf3d9cacc8e62
Author: Eugene Burkov <e.burkov@adguard.com>
Date:   Mon Nov 23 14:03:36 2020 +0300

    aghio: fix final inaccuracies

commit 4dd382aaf25132b31eb269749a2cd36daf0cb792
Author: Eugene Burkov <e.burkov@adguard.com>
Date:   Mon Nov 23 13:59:10 2020 +0300

    all: improve code quality

commit 060f923f6023d0e6f26441559b7023d5e5f96843
Author: Eugene Burkov <e.burkov@adguard.com>
Date:   Mon Nov 23 13:10:57 2020 +0300

    aghio: add validation to constructor

commit f57a2f596f5dc578548241c315c68dce7fc93905
Author: Eugene Burkov <e.burkov@adguard.com>
Date:   Fri Nov 20 19:19:26 2020 +0300

    all: fix minor inaccuracies

commit 93462c71725d3d00655a4bd565b77e64451fff60
Author: Eugene Burkov <e.burkov@adguard.com>
Date:   Fri Nov 20 19:13:23 2020 +0300

    home: make test name follow convention

commit 4922986ad84481b054479c43b4133a1b97bee86b
Merge: 1f5472abc 046ec13fd
Author: Eugene Burkov <e.burkov@adguard.com>
Date:   Fri Nov 20 19:09:01 2020 +0300

    Merge branch 'master' into 2305-limit-message-size

commit 1f5472abcfa7427f389825fc59eb4253e1e2bfb7
Author: Eugene Burkov <e.burkov@adguard.com>
Date:   Fri Nov 20 19:08:21 2020 +0300

    aghio: improve readability

commit 60dc706b093fa22bbf62f13b2341934364ddc4df
Author: Eugene Burkov <e.burkov@adguard.com>
Date:   Fri Nov 20 18:44:08 2020 +0300

    home: cover middleware with test

commit bedf436b947ca1fa4493af2fc94f1f40beec7c35
Author: Eugene Burkov <e.burkov@adguard.com>
Date:   Fri Nov 20 17:10:23 2020 +0300

    aghio: improved error informativeness

commit 682c5da9f21fa330fb3536bb1c112129c91b9990
Author: Eugene Burkov <e.burkov@adguard.com>
Date:   Fri Nov 20 13:37:51 2020 +0300

    all: limit readers for ReadAll dealing with miscellanious data.

commit 78c6dd8d90a0a43fe6ee3f9ed4d5fc637b15ba74
Author: Eugene Burkov <e.burkov@adguard.com>
Date:   Thu Nov 19 20:07:43 2020 +0300

    all: handle ReadAll calls dealing with request's bodies.

commit bfe1a6faf6468eb44515e2b0ecffa8c51f90b7e8
Author: Eugene Burkov <e.burkov@adguard.com>
Date:   Thu Nov 19 17:25:34 2020 +0300

    home: add middlewares

commit bbd1d491b318e6ba07f8af23ad546183383783a8
Merge: 7b77c2cad 62a8fe0b7
Author: Eugene Burkov <e.burkov@adguard.com>
Date:   Thu Nov 19 16:44:04 2020 +0300

    Merge branch 'master' into 2305-limit-message-size

commit 7b77c2cad03154177392460982e1d73ee2a30177
Author: Eugene Burkov <e.burkov@adguard.com>
Date:   Tue Nov 17 15:33:33 2020 +0300

    aghio: create package
2020-11-23 14:14:08 +03:00
..
nclient4 Pull request: 2273 clean tests output 2020-11-16 15:52:05 +03:00
check_other_dhcp_windows.go Pull request: * all: move internal Go packages to internal/ 2020-10-30 13:32:02 +03:00
check_other_dhcp.go Pull request: return 501 when we don't support features 2020-11-16 19:01:12 +03:00
db.go Pull request: * all: move internal Go packages to internal/ 2020-10-30 13:32:02 +03:00
dhcpd_test.go Pull request: 2273 clean tests output 2020-11-16 15:52:05 +03:00
dhcpd.go Pull request: return 501 when we don't support features 2020-11-16 19:01:12 +03:00
dhcphttp_test.go Pull request: return 501 when we don't support features 2020-11-16 19:01:12 +03:00
dhcphttp.go Pull request: 2305 limit message size 2020-11-23 14:14:08 +03:00
helpers.go Pull request: * dhcpd: send secondary dns as well 2020-11-09 19:27:04 +03:00
network_utils_test.go Pull request: * all: move internal Go packages to internal/ 2020-10-30 13:32:02 +03:00
network_utils.go Pull request: return 501 when we don't support features 2020-11-16 19:01:12 +03:00
os_windows.go Pull request: * all: move internal Go packages to internal/ 2020-10-30 13:32:02 +03:00
README.md Pull request: * all: move internal Go packages to internal/ 2020-10-30 13:32:02 +03:00
router_adv_test.go Pull request: * all: move internal Go packages to internal/ 2020-10-30 13:32:02 +03:00
router_adv.go Pull request:* all: remove github.com/joomcode/errorx dependency 2020-11-05 15:20:57 +03:00
server.go Pull request: * all: move internal Go packages to internal/ 2020-10-30 13:32:02 +03:00
v4_test.go Pull request: * all: move internal Go packages to internal/ 2020-10-30 13:32:02 +03:00
v4.go Pull request: all: update backend tools and dependencies 2020-11-20 13:44:21 +03:00
v6_test.go Pull request: * all: move internal Go packages to internal/ 2020-10-30 13:32:02 +03:00
v6.go Pull request: * dhcpd: send secondary dns as well 2020-11-09 19:27:04 +03:00
v46_windows.go Pull request: * all: move internal Go packages to internal/ 2020-10-30 13:32:02 +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