@davidacland actually the reverse.
the preferred option is used for auth/contact information after the initial bind, there is no method to set a preferred DC to use when binding with the ad plug in.
from dsconfigad man page
-preferred server
Use the specified server for all Directory lookups and authentications. If the server is no longer available, it will fail-over to other servers.
The ad plug in will use the service records contained in the DNS server provided to the mac client.
So do your service record look ups on the dns service the mac has to confirm.
AD determines site based upon subnet range i think the attribute is siteobject or siteobjectBL which is an attribute of a site record in AD something like (cn=10.147.147.0/21)
There is an issue with 10.9.0 through to 10.10.1 where if your site dc is a RODC (read only domain controller), and your srv records only give you that RODC to use, the AD plugin will fail to bind with an error 1001. 10.8 would actually look outside of the site to locate DC's it could write to and then bind.
I have some ldapsearch queries i have used in here https://github.com/hunty1/strapper that might be useful to get site code and stuff like that
I also found this site pretty useful as well:
https://patternbuffer.wordpress.com/2007/12/13/finding-your-active-directory-site-and-domain-controllers/