Proxify consultas do DNS na linha de comando

3

Eu quero usar o servidor dns diferente (não tor, qualquer servidor dns que eu configurei) para determinado comando do terminal. Digamos que seria parecido com

$ DNS_SERVER=8.8.8.8 dnsify ping example.com

e usa o dns do Google. Eu sei que há socksify, torrify e outras ferramentas como essa. Eu procuro por qualquer ferramenta, hack ou outra maneira que eu possa configurá-lo explicitamente para o meu comando ou, pelo menos, restrito à sessão de terminal. Então eu uso dns diferentes para o meu comando ou na minha sessão de terminal, e dns principais para todos os outros softwares.

Eu tentei proxychains, mas não posso forçá-lo a usar proxy não-sistema.

Então, existe alguma coisa para a proxies do DNS?

    
por Fedcomp 13.08.2015 / 12:52

1 resposta

2

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.

    
por 13.08.2015 / 14:07