ISC DHCPD is pretty smart on Linux when it comes to this. I had a system set up with two NICs on two subnets and all I did was set up a pool for each in the config and it automagically knew to give the right addresses out on the right subnets. It was even able to handle moving a system from one subnet to the next, knowing not to give it the wrong lease from the wrong subnet.
Code:
subnet 192.168.1.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.100.255;
option routers 192.168.1.1;
option domain-name-servers 192.168.1.1;
option netbios-name-servers 192.168.1.2;
range 192.168.1.101 192.168.1.254; }
subnet 192.168.2.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.2.255;
option routers 192.168.2.1;
option domain-name-servers 192.168.2.1;
option netbios-name-servers 192.168.2.2;
range 192.168.2.101 192.168.2.254; }