Encontrei uma solução que funciona para minha rede, mas sua milhagem pode variar. Não sei por que isso não acontece automaticamente. De qualquer forma, aqui está o script de shell simples que deve atualizar o servidor de nomes correto na interface de rede correta com o IP correto (funcionará também para conexões VPN) e deve funcionar no OSX / BSD & Linux.
#!/bin/bash
# the host information to send
DOMAIN=$(awk '/^search/ {print $2}' /etc/resolv.conf | head -1)
HOST=$(hostname -s)
# nameserver to update
NAMESERVER=$(awk '/nameserver/ {print $2}' /etc/resolv.conf | head -1)
# linux version to find interace that routes to nameserver
if [[ -e /sbin/ip ]]; then
INTERFACE=$(ip -o route get ${NAMESERVER} | awk '{print $5}')
else # osx / bsd version
INTERFACE=$(route get ${NAMESERVER} | awk '/interface/ {print $2}')
fi
# ip of the interface
IP=$(ifconfig ${INTERFACE} | perl -ne 'print "$1" if /inet.*?(\d+\.\d+\.\d+\.\d+)/')
nsupdate -d <(
echo server ${NAMESERVER} 53
echo update add ${HOST}.${DOMAIN} 86400 A ${IP}
echo show
echo send
)