¿Hay alguna manera de usar un DNS específico para un dominio específico?

29

En el trabajo usamos OpenDNS y ha bloqueado erróneamente irc.freenode.net para malware. ¿Cómo puedo asegurarme de que cualquier solicitud de * .freenode.net vaya a 8.8.8.8 y 8.8.4.4 (DNS de Google)?

Intenté hacer esto jugando con resolv.conf en Ubuntu, pero no pude llegar demasiado lejos. Además, ¿hay una manera fácil de hacer esto para los sistemas Mac y Windows? (Tengo algunos colegas que usan esos sistemas operativos y también les gustaría usar IRC).

vivin
fuente
44
Tenga cuidado: intentar sortear los controles de seguridad puede sacar a uno de las compañías. Además, es posible que otros servidores DNS estén bloqueados.
uSlackr

Respuestas:

15

Linux no admite el uso de servidores DNS específicos de dominio a través de resolv.conf. Potencialmente, podría solucionar este problema ejecutando un servidor de nombres en caché (como BINDo dnsmasq) localmente y luego configurando reenviadores explícitos para cada dominio.

Bajo OS X, este tipo de configuración es relativamente fácil usando el scutilcomando. El caso de uso común para esta configuración es reenviar solicitudes DNS para una conexión VPN a servidores DNS específicos de VPN, por lo que encontrará esto discutido a menudo en concierto con, por ejemplo, OpenVPN. En este documento se habla sobre el scutilcomando al igual que este , y una búsqueda en Google de openvpny scutilproducirán más resultados.

No estoy seguro acerca de Windows. Presumiblemente, podría usar la solución de servidor DNS local para las tres plataformas si fuera necesario.

larsks
fuente
1
¿Sigue siendo cierto en el systemd-resolvedmundo? (Sí, me doy cuenta de que tu respuesta tiene 7 años)
puntiagudo
35

Esto no se puede hacer con la resolución DNS estándar proporcionada por * nix (y Windows AFAIK), necesita su propio servidor DNS para hacer esto. En * nix dnsmasq es la mejor opción para esto, y puede ejecutar esto en cada estación de trabajo o ejecutarlo en un servidor y configurar todas las estaciones de trabajo para usarlo.

/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
fuente
2
Esto se puede hacer absolutamente usando la resolución DNS estándar proporcionada por algunos sistemas operativos. Simplemente no por Linux.
larsks
Para controlar qué interfaz usar, agregué @vpn0 al final de los servidores DNS. Esto puede ser útil para usarlo solo cuando una VPN está activa.
Alex
5

Hice esto en Fedora instalando un servidor DNS local.

primer enlace de instalación:

sudo dnf install bind

Paso 1: agrega una línea a /etc/named.conf(como root):

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

Paso 2: crea el archivo de zona /etc/named/freenode.net.conf(como root):

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

ahora reiniciar llamado:

sudo service named restart

ahora reconfigure sus configuraciones de LAN para usar 127.0.0.1 como el servidor DNS, en lugar de los hosts asignados por DCHP.

Richard Hodges
fuente
3

Es posible utilizar la opción firejail --dns para esto. Por ejemplo:

firejail --dns=8.8.8.8 firefox

De esta manera, el servidor dns se puede configurar por aplicación en lugar de por dominio. Por lo tanto, podría ser una mejor solución en algunas circunstancias.

mrlotfi
fuente