When my CentOS virtual machine boots it uses DHCP to get an IP address. It also overwrites resolv.conf with the DNS settings provided by the DHCP server. The DHCP server doesn't supply any search domains so I would like to get dhclient to put in a list of search domains when it writes it. How can I configure dhclient to do this?

One note to add - if you're specifying multiple search domains to dhclient by using (option|supersede|*) domain-search ..., make sure you follow the dhcp-options(5) man page spec for quoting individual domains: option domain-search "example.com", "sales.example.com", "eng.example.com"; Many older distributions of dhclient allowed the format "example.com sales.example.com eng.example.com"; but this compatibility has been removed in the past few years due to bug fixes bugs.launchpad.net/ubuntu/+source/isc-dhcp/+bug/777785
–
PatrickApr 11 '13 at 4:42

For anyone going through Fedora / Red Hat's rather opaque pile of scripts, the answer, at least on Amazon's latest AMI, it is /etc/dhclient-eth0.conf (and not the decoy empty folder at /etc/dhcp/ ). The file is not present and will need to be created

Adding SEARCH to ifcfg-eth0/etc/sysconfig/network-scripts/ifcfg-eth0 also works on the Amazon version of Fedora. In older versions of Red Hat it apparently was DOMAIN. I wpould recommend this over the above.
–
Dr David C CrookeSep 20 '13 at 20:20

This is mostly a note for RHEL7 to reduce trial and error. Dean's answer of using DOMAIN="domain1.exmaple.com domain2.example.com" in /etc/sysconfig/network-scripts/ifcfg-device.conf works. An interesting note is the host's domain that the connection gets from DHCP is always prepended to the search path, even if you leave it out of DOMAIN= or put it later in a list for DOMAIN=. It looks like /sbin/dhclient-script has a bunch of logic in there related to this.

In my testing, I found that Philip's suggestion of using /etc/dhcp/dhclient-device.conf also works, although there is some strange behavior with that, most likely due to that same logic in /sbin/dhclient-script that tries to move things around. For instance, neither supercede or prepend work as expected, the host's domain will be first. As a side note on this method, /var/lib/NetworkManager/dhclient-device.conf is the generated NetworkManager file and is used by the client. If you have a file in /etc/dhcp/ that gets read in, you'll see it pasted at the top of the file and a few extra options added below.

Since I don't see this answer and it worked for me (while the others didn't), here it is: edit /etc/resolvconf/resolv.conf.d/base the same way as you would /etc/resolv.conf. You'll need resolvconf installed.