Obrigado Alnitak, duffbeer703, John Gardeniers, todos muito bons comentários.
A solução que usei para o meu problema é usar o launchd para detectar as alterações no /etc/resolv.conf e atualizar a lista de encaminhadores.
Criando o arquivo:
/Library/LaunchDaemons/myname.update.plist
Com o conteúdo:
<?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>Disabled</key>
<false/>
<key>Label</key>
<string>myname.update</string>
<key>ProgramArguments</key>
<array>
<string>[PATH]/update.sh</string>
</array>
<key>WatchPaths</key>
<array>
<string>/var/run/resolv.conf</string>
</array>
</dict>
</plist>
E carregando isso com:
launchctl load /Library/LaunchDaemons/myname.update.plist
launchctl start myname.update
Um script em:
[PATH]/update.sh
Pode executar algo como:
DST="/var/named/forwarders.conf";
echo "forwarders {" > $DST
cat /etc/resolv.conf | \
grep -v -E "(127.0.0.1|localhost)" | \
awk '{ sub("^nameserver ", "\t"); sub("$", ";"); print }' >> $DST
echo "};" >> $DST
E, na configuração nomeada, pode usá-lo com:
options {
directory "[PATH]/conf/";
listen-on { 127.0.0.1; [IP_ADDRESS_HOST]; };
include "/var/named/forwarders.conf";
forward only;
};
Se você quiser ver ou usar a implementação completa, acesse minha página de configuração do BIND e use o formulário de download ... ele cria um pacote ZIP com um único script de instalação, portanto, é muito fácil configurar e usar.