Gibt es eine Möglichkeit, einen bestimmten DNS für eine bestimmte Domain zu verwenden?

29

Bei der Arbeit verwenden wir OpenDNS und es hat fälschlicherweise irc.freenode.net für Malware blockiert. Wie kann ich sicherstellen, dass Anfragen für * .freenode.net zu 8.8.8.8 und 8.8.4.4 (Googles DNS) gehen.

Ich habe es versucht, indem ich mit resolv.conf auf Ubuntu herumgespielt habe, aber ich konnte nicht allzu weit kommen. Gibt es auch eine einfache Möglichkeit, dies für Mac- und Windows-Systeme zu tun (ich habe ein paar Kollegen, die diese Betriebssysteme verwenden und auch IRC verwenden möchten).

Vivin
quelle
4
Seien Sie vorsichtig - der Versuch, Sicherheitskontrollen zu umgehen, kann dazu führen, dass einige Unternehmen eskortiert werden. Es ist auch möglich, dass andere DNS-Server blockiert sind.
uSlackr

Antworten:

14

Linux unterstützt die Verwendung domänenspezifischer DNS-Server über nicht resolv.conf. Sie können dies möglicherweise umgehen, indem Sie einen zwischengespeicherten Nameserver (z. B. BINDoder) ausführendnsmasq ) lokal ausführen und dann explizite Weiterleitungen für jede Domäne konfigurieren.

Unter OS X ist diese Art der Einstellung mit dem scutilBefehl relativ einfach . Der häufigste Anwendungsfall für diese Konfiguration ist die Weiterleitung von DNS-Anforderungen für eine VPN-Verbindung an VPN-spezifische DNS-Server. Dies wird daher häufig zusammen mit z. B. OpenVPN besprochen. Dieses Dokument spricht über den scutilBefehl ebenso wie diese , und eine Google - Suche nach openvpnund scutilwird mehr Ergebnisse.

Ich bin mir bei Windows nicht sicher. Bei Bedarf können Sie vermutlich die lokale DNS-Serverlösung für alle drei Plattformen verwenden.

larsks
quelle
1
Stimmt das noch in der systemd-resolvedWelt? (Ja, mir ist klar, dass Ihre Antwort 7 Jahre alt ist)
Pointy
34

Dies ist mit der von * nix (und Windows AFAIK) bereitgestellten Standard-DNS-Auflösung nicht möglich. Hierzu benötigen Sie einen eigenen DNS-Server. Unter * nix ist dnsmasq die beste Wahl, und Sie können dies entweder auf jeder Arbeitsstation oder auf einem Server ausführen und alle Arbeitsstationen so konfigurieren, dass sie dies verwenden.

/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
quelle
2
Dies kann absolut mit der von einigen Betriebssystemen bereitgestellten Standard-DNS-Auflösung erfolgen . Nur nicht von Linux.
Larsks
Um zu steuern, welche Schnittstelle ich verwenden soll, habe ich die @vpn0 am Ende der DNS-Server hinzugefügt . Dies kann nützlich sein, um es nur zu verwenden, wenn ein VPN aktiv ist.
Alex
8

Unter OS X können Sie Dateien wie /etc/resolver/example.com mit folgendem Inhalt verwenden:

nameserver 172.16.5.5

DNS-Anfragen für * .example.com an 172.16.5.5 weiterleiten

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

Alek_A
quelle
Gilt das für High Sierra?
Tolsadus
1
Es funktioniert immer noch auf Mojave
byte255
5

Ich habe dies auf Fedora getan, indem ich einen lokalen DNS-Server installiert habe.

Installieren Sie zuerst bind:

sudo dnf install bind

Schritt 1: Hänge eine Zeile an /etc/named.conf(als root):

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

Schritt 2: Erstelle die Zonendatei /etc/named/freenode.net.conf(als root):

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

Jetzt neu starten mit dem Namen:

sudo service named restart

Konfigurieren Sie jetzt Ihre LAN-Einstellungen so, dass 127.0.0.1 als DNS-Server und nicht als vom DHCP zugewiesene Hosts verwendet wird.

Richard Hodges
quelle
3

Es ist möglich , verwenden firejail --dns Option für diese. Beispielsweise:

firejail --dns=8.8.8.8 firefox

Auf diese Weise kann der DNS-Server pro Anwendung anstatt pro Domäne eingestellt werden. Daher ist es unter bestimmten Umständen möglicherweise eine bessere Lösung.

mrlotfi
quelle