An alternative to Microsoft’s DHCP server is the open source solution: ISC DHCP.  Maybe your shop is strictly running Linux. So moving along I have based this example of ISC DHCP 3.1.2 on FreeBSD 7.2.

So to install on FreeBSD I would, as root, build isc-dhcp31-server from ports: cd /usr/ports/net/isc-dhcp31-server/ && make install distclean
If you want to install as a binary, again as root: pkg_add -r isc-dhcp31-server

From here we need to add a line to rc.conf to tell the OS to run our dhcp server at startup as well as which interface to listen for requests (my NIC is – em0 yours may be different): echo dhcpd_enable=”YES” >> /etc/rc.conf && echo dhcpd_ifaces=”em0″ >> /etc/rc.conf
Next we need to write a configuration file and save it in /usr/local/etc: ee /usr/local/etc/dhcpd.conf

Here is a configuration sample serving addresses for 2 subnets, a data vlan subnet and a voice vlan subnet (note: In this example the data vlan PCs are joined to a Windows domain, so ntp is not needed in the dhcp offer for them…just the phones.):
option domain-name “kevintaber.com”;
option domain-name-servers 192.168.0.10, 192.168.0.11;
option subnet-mask 255.255.255.0;
option shoretel-server code 156 = string;

default-lease-time 7200;
max-lease-time 7200;
ddns-update-style none;

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.25 192.168.0.250;
option routers 192.168.0.1;
option shoretel-server “ftpservers=192.168.0.3, Layer2Tagging=1, VlanId=14″;
}

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.25 192.168.1.250;
option routers 192.168.1.1;
option ntp-servers 192.168.0.10;
option shoretel-server “ftpservers=192.168.0.3, Layer2Tagging=1, VlanId=14″;
}

After saving, start your dhcp server by issuing, as root, /usr/local/etc/rc.d/isc-dhcpd start

Now on my PoE switch, a HP 2610 for example, I need to setup my vlans and the dhcp helper address. So configure the data vlan DEFAULT_VLAN, vlan id 1, with each port Untagged. As for the voice vlan VOICE_1, vlan id 14, every port is Tagged except for the ShoreTel equipment…it is Untagged. The vlan stuff is easily set in the switch’s web management interface. And last but not least, ssh into the switch and input the dhcp server ip as the ip helper-address:

configure terminal
vlan 14
ip helper-address 192.168.0.10
write memory

If this doesn’t help you try searching around on the site ShoreTelForums for more information.

You should also review the FreeBSD Handbook network configuration segment for more details pertaining to the installation, I would if I were you!

NOTE: If you have issues with syntax errors in your dhcpd.conf, just download the source for your build and you can review the official man pages. They can be found in the common directory of the code. Extract the source code tarball, change directory to the extracted source, and issue: nroff -man common/dhcp-options.5 |more