These instructions will run a DHCP server locally on your computer for testing the DHCP client.
Run qemu with Fuchsia. We'll give Fuchsia two NICs so that we can test the interaction between them and DHCP. Make all the tunnels:
sudo ip tuntap add dev qemu mode tap user $(whoami) sudo ip tuntap add dev qemu-extra mode tap user $(whoami) sudo ip link set qemu up sudo ip link set qemu-extra up
Now build and run Fuchsia with those two ports:
fx build && fx qemu -kN -- -nic tap,ifname=qemu-extra,model=e1000
Now install a DHCP server.
sudo apt-get install isc-dhcp-server ps aux | grep dhcp
If dhcpd was started as part of that, kill it:
sudo systemctl disable isc-dhcp-server.service
Make a file called /tmp/dhcpd.conf with these contents:
default-lease-time 3600; max-lease-time 7200; authoritative; subnet 172.18.0.0 netmask 255.255.0.0 { option routers 172.18.0.1; option subnet-mask 255.255.0.0; option domain-search "testdomain18.lan"; option domain-name-servers 172.18.0.1; range 172.18.0.10 172.18.0.100; } subnet 172.19.0.0 netmask 255.255.0.0 { option routers 172.19.0.1; option subnet-mask 255.255.0.0; option domain-search "testdomain19.lan"; option domain-name-servers 172.19.0.1; range 172.19.0.10 172.19.0.100; }
dhcpd knows which addresses to serve on which nics based on matching the existing IP address on the NIC so you need to set those:
sudo ip addr add dev qemu 172.18.0.1 sudo ip addr add dev qemu-extra 172.19.0.1
Now we'll run dhcpd. You can use the filenames below or modify them.
If the leases file doesn't already exist, dhcpd might complain. Go ahead and create the file first:
sudo touch /tmp/dhcpd.leases
Now run:
sudo dhcpd -4 -f -d -cf /tmp/dhcpd.conf -lf /tmp/dhcpd.leases qemu qemu-extra
Now Fuchsia should get DHCP addresses and you'll see debug output for each step in the dhcpd output.