Existe uma maneira de usar um DNS específico para um domínio específico?

29

No trabalho, usamos o OpenDNS e ele bloqueou erroneamente o irc.freenode.net por malware. Como posso garantir que qualquer solicitação para * .freenode.net vá para 8.8.8.8 e 8.8.4.4 (DNS do Google).

Tentei fazer isso brincando com o resolv.conf no Ubuntu, mas não fui muito longe. Além disso, existe uma maneira fácil de fazer isso nos sistemas Mac e Windows (tenho alguns colegas usando esses sistemas operacionais e eles também gostariam de usar o IRC).

vivin
fonte
4
Cuidado: tentar contornar os controles de segurança pode ser escoltado para fora de algumas empresas. Além disso, é possível que outros servidores DNS estejam bloqueados.
USlackr 23/05

Respostas:

15

O Linux não suporta o uso de servidores DNS específicos do domínio via resolv.conf. Você pode potencialmente solucionar isso executando um servidor de nomes em cache (como BINDou dnsmasq) localmente e configurando encaminhadores explícitos para cada domínio.

No OS X, esse tipo de configuração é relativamente fácil usando o scutilcomando O caso de uso comum para essa configuração é encaminhar solicitações de DNS para uma conexão VPN a servidores DNS específicos da VPN; portanto, você encontrará isso discutido frequentemente em conjunto com, por exemplo, o OpenVPN. Este documento fala sobre o scutilcomando, como faz isso , e uma pesquisa no Google por openvpne scutilproduzirá mais resultados.

Não tenho certeza sobre o Windows. Presumivelmente, você poderia usar a solução de servidor DNS local para todas as três plataformas, se necessário.

larsks
fonte
1
Isso ainda é verdade no systemd-resolvedmundo? (Sim, eu sei que sua resposta tem 7 anos)
Pointy
35

Isso não pode ser feito com a resolução DNS padrão fornecida pelo * nix (e Windows AFAIK), você precisa de seu próprio servidor DNS para fazer isso. No * nix dnsmasq é a melhor opção para isso, e você pode executá-lo em todas as estações de trabalho ou em um servidor e configurar todas as estações de trabalho para usá-lo.

/etc/resolv.conf:

nameserver 127.0.0.1
nameserver 208.67.222.222
nameserver 208.67.220.220

/etc/dnsmasq.conf:

server=/freenode.net/8.8.8.8
server=/freenode.net/8.8.4.4
mgorven
fonte
2
Isso pode ser feito absolutamente usando a resolução DNS padrão fornecida por alguns sistemas operacionais. Apenas não pelo Linux.
larsks
Para controlar qual interface usar, adicionei o @vpn0 no final dos servidores DNS. Isso pode ser útil para usá-lo somente quando uma VPN estiver ativa.
Alex
8

No OS X, você pode usar arquivos como /etc/resolver/example.com com conteúdo:

nameserver 172.16.5.5

encaminhar solicitações de DNS para * .example.com para 172.16.5.5

http://hints.macworld.com/article.php?story=2004062902195410

Alek_A
fonte
Isso se aplica a High Sierra?
Tolsadus 10/10
1
Ainda funciona no Mojave
byte255 16/02
5

Eu fiz isso no Fedora instalando um servidor DNS local.

ligação da primeira instalação:

sudo dnf install bind

Etapa 1: anexar uma linha a /etc/named.conf(como root):

include "/etc/named/freenode.net.conf";

etapa 2: crie o arquivo de zona /etc/named/freenode.net.conf(como raiz):

zone "freenode.net" {
    type forward;
    forwarders { 8.8.8.8; };
};

agora reinicie o nome:

sudo service named restart

agora reconfigure suas configurações de LAN para usar 127.0.0.1 como servidor DNS, em vez dos hosts alocados ao DCHP.

Richard Hodges
fonte
3

É possível usar a opção firejail --dns para isso. Por exemplo:

firejail --dns=8.8.8.8 firefox

Dessa forma, o servidor DNS pode ser definido por aplicativo em vez de por domínio. Portanto, pode ser uma solução melhor em algumas circunstâncias.

mrlotfi
fonte