One of my computers running OpenBSD 3.7 that was a DNS, DHCP, NTP and proxy server recently crashed (HDD failure). I have another DNS server running on a different machine and I didn’t much care about NTP and proxy. But, DHCP server was playing an important role. I lost connection on all of my computers because the wireless router was using pass-through DHCP from the OpenBSD machine. I configured the laptops to use static IPs for a day until I bought a new HDD and reinstalled OpenBSD 4.2
First, I edited /etc/rc.conf and replaced dhcpd_flags=”NO” with dhcpd_flags=””. Then, I used ifconfig to check the name of the ethernet adapter. In my case it is xl0.
NOTE: Highlighted numbers are what you type. The rest is the response from the computer.
ifconfig lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33208 groups: lo inet 127.0.0.1 netmask 0xff000000 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3 xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr 00:08:74:22:25:3c groups: egress media: Ethernet autoselect (100baseTX full-duplex) status: active inet 192.168.1.7 netmask 0xffffff00 broadcast 192.168.1.255 inet6 fe80::208:74ff:fe22:253c%xl0 prefixlen 64 scopeid 0x1 enc0: flags=0<> mtu 1536
I edited /etc/dhcpd.interfaces and added xl0 at the very end, so it looked like this.
# $OpenBSD: dhcpd.interfaces,v 1.1 1998/08/19 04:25:45 form Exp $ # # List of network interfaces served by dhcpd(8). # # ep0 # ed0 le0 # de1 xl0
xl0 is the listener interface. You can have multiple interfaces. Since I have only one network card, xl0 is the only option.
DHCP server stores its leases in a file /var/db/dhcpd.leases. This file is not there, so we have to create it first.
touch /var/db/dhcpd.leases
The last part involves you to modify the configuration file, where you can specify the scope and other parameters of the DHCP server. I made a copy of the original file, in case something goes wrong.
cp /etc/dhcpd.conf /etc/dhcpd.conf.orig
Then I edited /etc/dhcpd.conf to suit my needs. This is the simplest working configuration.
shared-network LOCAL-NET { option domain-name "your-domain-here"; option domain-name-servers 192.168.1.2, 192.168.1.8; subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.1; range 192.168.1.50 192.168.1.254; } }
- option domain-name “your-domain-here” means I have used your-domain-here as DNS name. So, your DHCP client host will have this value as suffix.
- Next parameter, option domain-name-servers 192.168.1.2, 192.168.1.8; is the address or addresses of your DNS servers that will be assigned to the computer that will lease an IP.
- The line after that tells the DHCP server what’s the network class and subnet. My network is 192.168.1.0/24, /24 is 255.255.255.0, /16 is 255.255.0.0 etc….
- The gateway assigned (option routers) in my case is 192.168.1.1.
- And I also choose the scope of my DHCP to be from 192.168.1.50 to 192.168.1.254.
Now, I can start the server by using:
dhcpd
If everything is OK, you’ll get the prompt back. Let’s verify that DHCP server is working.
ps -waux | grep dhcpd _dhcp 8667 0.0 0.1 672 768 ?? Is 3:54AM 0:00.00 dhcpd</pre>
I went back to my Windows laptop and verified that everything is OK.
C:\Documents and Settings\klimenta\ipconfig /all Ethernet adapter Local Area Connection: Connection-specific DNS Suffix . : your-domain-here Description . . . . . . . . . . . : Intel(R) PRO/100 VM Network Connection Physical Address. . . . . . . . . : 00-08-02-E4-34-0D Dhcp Enabled. . . . . . . . . . . : Yes Autoconfiguration Enabled . . . . : Yes IP Address. . . . . . . . . . . . : 192.168.1.50 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 192.168.1.1 DHCP Server . . . . . . . . . . . : 192.168.1.7 DNS Servers . . . . . . . . . . . : 192.168.1.2 192.168.1.8 Lease Obtained. . . . . . . . . . : Thursday, December 01, 2011 8:36:04 AM Lease Expires . . . . . . . . . . : Thursday, December 01, 2011 8:36:04 PM
And I can verify on the DHCP server that it leased an IP.
tail /var/db/dhcpd.leases # All times in this file are in UTC (GMT), not your local timezone. # The format of this file is documented in the dhcpd.leases(5) manual page. lease 192.168.1.50 { starts 6 2011/12/01 08:36:04; ends 6 2011/12/01 20:36:04; hardware ethernet 00:08:02:e4:34:0d; uid 01:00:08:02:e4:34:0d; client-hostname "bigbeat"; }