Não tenho conhecimento de nenhum método para substituir os resolvedores do sistema simplesmente usando variáveis de ambiente. Você pode substituir resolv.conf
options usando RES*
de variáveis de ambiente, mas elas não podem ser usadas para sobrescrever as definições nameserver
(veja o resolv.conf
manual page para mais informações).
A melhor opção seria usar o mecanismo LD_PRELOAD
do vinculador dinâmico para pré-carregar uma biblioteca que permita substituir as várias chamadas do resolvedor para usar seu próprio servidor DNS em vez das do sistema.
Um que eu encontrei é resolvconf-override . Do README:
resolvconf override provides a shared library to be used as an LD_PRELOAD to override the nameservers listed in /etc/resolv.conf on glibc-based systems (eg. most Linux distributions).
...
To use the Google DNS in place of the ones mentioned in /etc/resolv.conf you would run:
LD_PRELOAD=/usr/lib64/libresolvconf-override.so NAMESERVER1=8.8.8.8 NAMESERVER2=8.8.4.4 myapplication
Você precisará compilá-lo a partir do código-fonte, mas parece fazer exatamente o que você precisa.
Nota: Você não especificou um sistema operacional, mas estou assumindo o Linux.