dhcpcd should do this automatically. From dhcpcd(8): If the hostname is currently blank, (null) or localhost, or force_hostname is YES or TRUE or 1 then dhcpcd sets the hostname to the one supplied by the DHCP server. It seems to work for me. If you're setting the hostname manually in /etc/rc.conf, then you'll either need to remove that or run dhcpcd with `-e force_hostname=TRUE` to override it.