General setup ------------- The idea is to run a virtual machine for the server, and one for the client. We also have to run a relay for DHCPv4, because of limitations explained in the documentation. I used a Fedora Core 15 as the base, just because it happens to be my desktop. I installed "virt-manager" using Fedora's package manager, yum. (I had to reboot and turn on virtual machine hardware extensions in the BIOS, otherwise the virtual machines would have had to been more heavily emulated.) Then I installed CentOS 6.1 on a virtual machine. I picked CentOS because Comcast is using Red Hat Enterprise Linux, and CentOS is a free (as in beer) near version of that, so I thought that would be a good test. The install notes are here: http://bind10.isc.org/wiki/CentOS61 In order to have a virtual network for the traffic, I created a bridge on the host system: brctl addbr dhcpbr0 ifconfig dhcpbr0 up Then for the virtual machine, I added a new virtual network interface using the GUI: "Add Hardware" -> "Network" -> "Specify shared device name" -> dhcpbr0 Now we have eth0 as a NAT to the real world through the host, and eth1 as a private network using the bridge. I then cloned the virtual machine using the GUI, and modified a file to make the new machine use eth0/eth1 as its interface names: /etc/udev/rules.d/70-persistent-net.rules I also needed a relay, so I made another clone for that. On the relay I installed ISC DHCP 4.x, which provides a DHCPv4 relay: yum install dhcp I also installed tcpdump on all host machines to help debugging: yum install man tcpdump DHCPv4 testing -------------- In order to get DHCPv4 working, I had to disable the firewall on the server: yum install system-config-firewall-tui system-config-firewall-tui -> disable firewall Then I had to give the server an IPv4 address: ifconfig eth1 192.0.2.11 Finally I could run the DHCPv4 server: /opt/bind10/libexec/bind10-devel/b10-dhcp4 I also had to disable the firewall on the relay: yum install system-config-firewall-tui system-config-firewall-tui -> disable firewall And enable the DHCPv4 relay: ifconfig eth1 192.0.2.12 dhcrelay -d -i eth1 192.0.2.11 Finally I could run the client: dhclient eth1 And viola! The client was able to get the hard-coded lease from the server. DHCPv6 testing -------------- Before the DHCPv6 work, I stopped the relay machine, and rebooted the client and server. For DHCPv6, the server does not need an address, but it does need to have the interface up: ifconfig eth1 up I could then start the server: /opt/bind10/libexec/bind10-devel/b10-dhcp6 Unlike DHCPv4, I also had to disable the firewall on the client: yum install system-config-firewall-tui system-config-firewall-tui -> disable firewall Finally, I could run the client and it got a lease: dhclient -6 eth1