Because I develop Software Defined Radio (SDR) software, I have occasion to connect, and disconnect, various network devices to my wired network in order to test them all day long. Most of the SDRs are designed to configure using DHCP, or can be convinced to do so. That saves some fooling around, and is a good thing. However, my network is extensive, devices are always being moved around, WiFi devices arriving and leaving, and so once the SDRs are assigned an IP, I have to go hunt them down. It was annoying that they’re always showing up somewhere different.
However, my Mac Pro had an unused second ethernet port sitting. right. there. Hmmm. So…
My other network port is on our 192.168.1.x network; so ideally, this would be on some other range, giving me a double bonus: Consistent, yet auotmatic and worry-free configuration, and removal of some high bandwidth traffic from the LAN in general use.
Long story short, it worked. I dug into things until I managed to get OS X’s DHCP server running on that previously unused port, constrained the server’s DHCP address range to be from 192.168.10.100 to 192.168.10.100, or in other words, yes, it serves up a DHCP address, but that’s the only one it will give out.
This works extremely well. I’ll show you the system file I had to edit, and the network settings for the 2nd ethernet port, and hopefully, you’ll be able to duplicate this if you find you have a need or an interest.
First, the 2nd ethernet port on the mac pro is configured this way:
IP: 192.168.10.1 NETMASK: 255.255.255.0 ROUTER: 192.168.10.1 DNS: 22.214.171.124,126.96.36.199
Second, here is the bootpd.plist file that I placed in /etc:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>bootp_enabled</key> <false/> <key>detect_other_dhcp_server</key> <integer>1</integer> <key>dhcp_enabled</key> <array> <string>en1</string> </array> <key>reply_threshold_seconds</key> <integer>0</integer> <key>Subnets</key> <array> <dict> <key>allocate</key> <true/> <key>lease_max</key> <integer>86400</integer> <key>lease_min</key> <integer>86400</integer> <key>name</key> <string>192.168.10</string> <key>net_address</key> <string>192.168.10.0</string> <key>net_mask</key> <string>255.255.255.0</string> <key>net_range</key> <array> <string>192.168.10.100</string> <string>192.168.10.100</string> </array> </dict> </array> </dict> </plist>