How to configure IP pools for class B networks?

The IPPOOL_x setting allows to configure an IP pool like 192.10.1.2-254. This is a class C network with a subnet mask of 255.255.255.0. To define a class B network simply configure the IP pool such as 192.10.2.1-192.10.5.254 with a subnet mask 255.255.0.0. Thats all. DHCP server versions prior to V2.3.1  require a bit more effort.

The following describes how to configure the DHCP server to support class B networks in versions prior to V2.3.1:

Variant 1: Restrict the DHCP Server to one network interface card (NIC):
[Settings]
IPBIND_1=192.10.2.1 ; NIC 1
AssociateBindsToPools=0
IPPOOL_1=192.10.2.2-254
IPPOOL_2=192.10.3.1-254
IPPOOL_3=192.10.4.1-254
IPPOOL_4=192.10.5.1-254
[General]
SUBNETMASK=255.255.0.0

This configuration restricts the DHCP server to one NIC and (very important) sets AssociateBindsToPools=0. This allows to configure a series of IPPOOL_x definitions that in total define all valid IP addresses that the DHCP server shall manage. Of course, this is still restricted to 10 IP pools (approx. 2500 IP addresses in total): IPPOOL_0, …, IPPOOL_9

Variant 2: Run multiple (“virtual”) instances of the DHCP Server:

If multiple NICs are to be supported then the variant 1 approach does not work. Because, it is only possible to have one IPPOOL_x per IPBIND_x. In this case the V1.8 feature to run mulitple “virtual” instances comes in handy.

dhcpsrv.ini:

[Servers]
SERVER_1=dhcp1.ini
SERVER_2=dhcp2.ini

dhcp1.ini:

[Settings]
Trace=1
TraceFile=dhcp1.txt
IPBIND_1=192.10.2.1 ; NIC 1
AssociateBindsToPools=0
IPPOOL_1=192.10.2.2-254
IPPOOL_2=192.10.3.1-254
IPPOOL_3=192.10.4.1-254
IPPOOL_4=192.10.5.1-254
[General]
SUBNETMASK=255.255.0.0

dhcp2.ini:

[Settings]
Trace=1
TraceFile=dhcp2.txt
IPBIND_1=192.11.2.1 ; NIC 2
AssociateBindsToPools=0
IPPOOL_1=192.11.2.2-254
IPPOOL_2=192.11.3.1-254
IPPOOL_3=192.11.4.1-254
IPPOOL_4=192.11.5.1-254
[General]
SUBNETMASK=255.255.0.0

The two dhcp_.ini files define two seperate instances of the DHCP Server. All the sections and configurations can be specified in the dhcp1.ini or dhcp2.ini as usual. The settings and databases are kept seperately and behave as if two instances of the dhcpsr.exe would have been started with a dedicated ini file for each of them. The only [Settings] that are not “virtualized” are the ones shown in the example above: InstallAsService, ShowBalloonMessages and NotifyTimeout. They can not be “virtualized”, because they really define the behavior of the executable process (e.g. installation or icon in the tray).