====== DHCP Relay and Server lab ======
This Labs show an example of IPv4 DHCP Relay and server with BSDRP (v1.51)
===== Presentation =====
==== Network diagram ====
Here is the logical and physical view:
{{:documentation:examples:bsdrp-dhcp-relay-server.png|}}
===== Setting-up the lab =====
==== Downloading BSD Router Project images ====
Download a BSDRP serial image (prevent to have to use an X display) on SourceForge.
==== Downloading BSDRP lab scripts and starting the lab =====
More information on these BSDRP lab scripts available on [[documentation:examples:How to build a BSDRP router lab]].
Start a lab with 3 routers full meshed (no common LAN), example with VirtualBox script:
# tools/BSDRP-lab-bhyve.sh -i BSDRP-1.903-full-amd64-serial.img.xz -n 3
BSD Router Project (http://bsdrp.net) - bhyve full-meshed lab script
Setting-up a virtual lab with 3 VM(s):
- Working directory: /tmp/BSDRP
- Each VM have 1 core(s) and 256M RAM
- Emulated NIC: virtio-net
- Switch mode: bridge + tap
- 0 LAN(s) between all VM
- Full mesh Ethernet links between each VM
VM 1 have the following NIC:
- vtnet0 connected to VM 2
- vtnet1 connected to VM 3
VM 2 have the following NIC:
- vtnet0 connected to VM 1
- vtnet1 connected to VM 3
VM 3 have the following NIC:
- vtnet0 connected to VM 1
- vtnet1 connected to VM 2
For connecting to VM'serial console, you can use:
- VM 1 : cu -l /dev/nmdm1B
- VM 2 : cu -l /dev/nmdm2B
- VM 3 : cu -l /dev/nmdm3B
===== Routers configuration =====
==== VM3 (DHCP server) ====
sysrc hostname=VM3
sysrc gateway_enable=NO
sysrc ipv6_gateway_enable=NO
sysrc ifconfig_em1="10.0.23.3/24"
sysrc defaultrouter="10.0.23.2"
sysrc dhcpd_enable=YES
sysrc dhcpd_flags="-q"
sysrc dhcpd_conf="/usr/local/etc/dhcpd.conf"
sysrc dhcpd_ifaces="em1"
sed -i "" 's/em/vtnet/g' /etc/rc.conf
cat > /usr/local/etc/dhcpd.conf <<'EOF'
subnet 10.0.23.0 netmask 255.255.255.0 {
}
subnet 10.0.12.0 netmask 255.255.255.0 {
range 10.0.12.100 10.0.12.200;
option routers 10.0.12.2;
}
'EOF'
hostname VM3
service netif restart
service routing restart
service isc-dhcpd start
config save
==== VM2 (Router and DHCP Relay) ====
sysrc hostname=VM2
sysrc ifconfig_em0="10.0.12.2/24"
sysrc ifconfig_em1="10.0.23.2/24"
sysrc dhcprelya_enable=YES
sysrc dhcprelya_servers="10.0.23.3"
sysrc dhcprelya_ifaces="em0"
sed -i "" 's/em/vtnet/g' /etc/rc.conf
hostname VM2
service netif restart
service routing restart
service dhcprelya start
config save
==== VM1 (DHCP client) ====
sysrc hostname=VM1
sysrc ifconfig_em0="DHCP"
sysrc gateway_enable=NO
sysrc ipv6_gateway_enable=NO
sed -i "" 's/em/vtnet/g' /etc/rc.conf
hostname VM1
service netif restart
service routing restart
config save
===== Final testing =====
Check data received by DHCP client on VM1:
[root@VM1]~# ifconfig vtnet0
vtnet0: flags=8943 metric 0 mtu 1500
options=80028
ether 58:9c:fc:01:02:01
hwaddr 58:9c:fc:01:02:01
inet6 fe80::5a9c:fcff:fe01:201%vtnet0 prefixlen 64 scopeid 0x1
inet 10.0.12.100 netmask 0xffffff00 broadcast 10.0.12.255
nd6 options=21
media: Ethernet 10Gbase-T
status: active
[root@VM1]~# cat /var/db/dhclient.leases.vtnet0
lease {
interface "vtnet0";
fixed-address 10.0.12.100;
option subnet-mask 255.255.255.0;
option routers 10.0.12.2;
option dhcp-lease-time 43200;
option dhcp-message-type 5;
option dhcp-server-identifier 10.0.23.3;
renew 1 2017/7/10 20:14:07;
rebind 2 2017/7/11 00:44:07;
expire 2 2017/7/11 02:14:07;
}