Linux und Ich

Blog über Ubuntu, Linux, Android und IT

DNS-Server abseits von Port 53 abfragen

DNS-Server abseits von Port 53 abfragen

| 73 Kommentare

Die Koalition der Willigen (Die Provider Telekom, Vodafone/Arcor, Alice, O2 und Kabel Deutschland) wird in Deutschland langsam aktiv. Nachdem die Einwilligung von der Leyens Pläne umzusetzen von allen großen Providern voreilig verkündet wurde, macht sich Vodafone als erster auf die Zensur umzusetzen.

Im UMTS-Netz von Vodafone werden nach Informationen von zdnet seit Juli 2009 DNS-Anfragen auf Port 53 zwangsweise auf die eigenen DNS-Server umgeleitet, so kann der Provider garantieren dass die eigenen DNS-Server nicht umgangen werden können, selbst wenn Anwender alternative DNS-Server einstellen. Es ist nur eine Frage der Zeit, bis dieser Feldtest auf die DSL-Anschlüsse des Anbieters ausgeweitet wird. Netzneutralität ade… Hallo Zensurstaat!

Anzeige

Wer nun meint, dass Pädophilen somit tatsächlich der Zugang zu einschlägig bekannten Domains unmöglich gemacht wird, der irrt. Es macht nur ein bisschen mehr Arbeit… Löschen statt Sperren wäre immer noch der einzig richtige Ansatz, aber das würde ja Geld kosten und den Bestrebungen unserer Regierung, Deutschland zu einem Überwachungsstaat auszubauen, nicht so gut ins Spiel passen…

Zwar kann man in den Netzwerkeinstellungen aller gängigen Betriebssysteme die DNS-Einstellungen schnell ändern, doch den Port – über den die DNS-Anfragen laufen sollen – zu wechseln, ist meist nicht möglich. Versucht man dies etwa mit Ubuntu und dem NetworkManager, so weigert sich der NM die Einstellungen zu übernehmen.

DNS-Einstellungen des NetworkManagers

DNS-Einstellungen des NetworkManagers

Um die Zensurmaßnahme der Frau von der Leyen zu umgehen ist jedoch nur ein eigener DNS-Server nötig, denn bei beispielsweise bind9 ist es völlig problemlos möglich höhere DNS-Server über andere Ports als Port 53 abzurufen. Der Artikel auf zdnet geht ausführlich auf Windows als Betriebssystem ein und streif Linux nur kurz, ich ziehe das Pferd mal von der Ubuntu oder Debian Seite auf.

Installation von bind9

Die Installation kann auf Eurem Internet-Router oder auch auf Eurem Desktop erfolgen, als DNS-Server bietet sich bind9 an…

$ sudo apt-get install bind9

Nach der Installation des Paketes, könnt Ihr an die die Konfiguration von bind9 gehen. Ihr müsst nur die Konfigurationsdatei /etc/bind/named.conf.options bearbeiten, alles andere ist eigentlich schon passend vorkonfiguriert.

$ sudo nano /etc/bind/named.conf.options

Dort können nun die vom eigenen DNS-Server zu nutzenden nicht zensierenden DNS-Server der German Privacy Foundation e.V., des FoeBuD e.V. oder des Chaos Computer Club e.V. eingetragen werden. Eine Liste mit unzensierten Servern findet sich auf den Seite der Privacy Foundation e.V. oder auf wikileaks.org. Die Einträge müssen letztendlich so ähnlich aussehen.

options {
[...]
        forward only;
        forwarders {
                87.118.100.175 port 110;
                62.141.58.13 port 110;
                87.118.104.203 port 110;
        };
[...]
};

Natürlich könnt Ihr einen Server Eurer Wahl verwenden. Die Portangabe ist bislang nur im UMTS-Netz von Vodafone nötig. Wer verhindern möchte, dass der DNS-Server von anderen Rechnern im lokalen Netzwerk angesprochen werden kann, der sollte noch die allow-query Option setzen.

options {
[...]
        allow-query { localhost; };
[...]
};

Dadurch ist bind9 vollständig eingerichtet, ein Neustart von bind9…

$ sudo /etc/init.d/bind9 restart

… liest die neue Konfiguration ein, so dass die gerade getroffenen Einstellungen aktiv werden.

Eigenen DNS-Server im System verankern

Nun muss nur noch verhindert werden, dass das System die vom Internetprovider vermittelten DNS-Server verwendet, sondern brav den eigenen DNS-Server benutzt.

Bei DSL und pppoeconf

Solltet Ihr einen eigenen Rechner als Router benutzen, der via pppoeconfig die DSL-Verbindung aufbaut, oder Euren Desktop-Rechner direkt an das DSL-Modem angeschlossen haben und ebenfalls pppoeconf nutzen, so würde ich die zu nutzenden DNS-Server über resolvconf bestimmen. Dazu installiert Ihr das benötigte Paket…

$ sudo apt-get install resolvconf

…und bearbeitet die Datei /etc/network/interfaces.

$ sudo nano /etc/network/interfaces

Hier tragt Ihr die IP des eigenen DNS-Servers ein über die Option “dns-nameservers” ein. Sollte der Einwahlrechner identisch mit dem DNS-Server sein, so reicht der Eintrag der IP des localhosts.

[...]
auto dsl-provider
iface dsl-provider inet ppp
pre-up /sbin/ifconfig eth1 up # line maintained by pppoeconf
provider dsl-provider
dns-nameservers 127.0.0.1
[...]

Nach einem Neustart der Netzwerkeinstellungen über…

$ sudo /etc/init.d/networking restart

…sollten die Einstellungen korrekt sein. In der Datei /etc/resolv.conf wird der zu benutzende Nameserver stehen.

$ grep nameserver  /etc/resolv.conf
nameserver 127.0.0.1

Die DNS-Server Eures DSL-Anbieters dürfen hier nicht mehr gelistet werden.

Mit dem NetworkManager

Sollte man den NetworkManager zum Verbindungsaufbau benutzen, so würde ich persönlich nicht die /etc/network/interfaces anpassen. Klickt ihr mit der rechten Maustaste auf das Icon des NetworkManagers im Panel, so seid Ihr in der Lage Eure Netzwerkeinstellungen zu konfigurieren. Dort könnt ihr auch die zu benutzenden DNS-Server einstellen. Wieder tragt ihr die IP eures DNS-Servers ein.

Wird der eigene DNS-Server auch benutzt?

Jetzt solltet Ihr noch überprüfen, ob der eigene Nameserver auch wirklich benutzt wird. Mittels dig könnt ihr die DNS-Einträge einer Domain bestimmen. Ihr bekommt auch gesagt von welchem DNS-Server diese stammen.

$ dig linuxundich.de
[...]
;; Query time: 4 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Sep 28 13:19:53 2009
;; MSG SIZE  rcvd: 168

In meinem Fall läuft der Nameserver auf dem eigenen Rechner, somit kommt die Antwort vom localhost.

Autor: Christoph

Hallo, ich bin Christoph -- Linux-User, Blogger und pragmatischer Fan freier Software. Wie Ihr ohne Zweifel bemerkt haben solltet schreibe ich hier über Linux im Allgemeinen, Ubuntu im Speziellen, sowie Android und andere Internet-Themen. Wenn du Freude an meinen Artikel gefunden haben solltest, dann kannst du mir über Facebook, Google+ oder Twitter oder natürlich dem Blog folgen.

73 Kommentare

  1. mmh die ganze Geschichte wird so aber schon deutlich umfangreicher als wenn man wie bisher nur den DNS Server wechseln muss. Nicht dass diese Möglichkeit am Schluss auch noch gesperrt wird. Ist dies DNS-technisch möglich? Auf anderen Ports DNS-Anfragen auch umzuleiten?

  2. Technisch wäre das sicherlich möglich. Das Stichwort wäre Stateful Packet Inspection, damit könnte man überprüfen ob das was über Port X rausgeht auch wirklich über Port X raussollte. Für einen Provider, der Hundertausende von Kunden versorgt, wäre dies jedoch ein wahnsinniger Aufwand.

  3. Eine Alternative hierzu wäre auch ein VPN. Wenn man eh einen Rootserver rumlaufen hat kann man diesen auch prima als “Non-Censored-DNS-Server” missbrauchen/verwenden.

    Alternativ könnte man extra hierfür auch IPSec im Transport Mode verwenden…

    Es gibt so viele Möglichkeiten der Zensursula zu entkommen, die Frage ist nur welche Seite langfristig den größeren Aufwand betreiben wird/will.

    mfg Betz Stefan

  4. “$ sudo nano /etc/init.d/bind9 restart”

    Ist da “nano” an der stelle ein copy-past Fehler ?

  5. Hallo philipps, danke für den Hinweis. Das war ein Fehler.

  6. Funktioniert dies denn auch wenn man sich über einen Router (z.B. Linksys BFSR41) einwählt. Ich vermute mal nein, oder???

  7. Hallo Michael, das Ganze ist unabhängig vom Router. Du kannst auf deinem Rechner den DNS-Server aufsetzen und dein System so einstellen, dass es eben den lokal installierten DNS-Server abfrägt.

    Besser wäre es natürlich, wenn du auf deinem System auf zusätzliche Dienste verzichten könntest und deinen Route dazu bringen könntest nichtzensierende DNS-Server über eineanderen Port abzurufen. Ich vermute dass dies nur mit OpenWRT und Co möglich wäre. Leider steht dein Router auf der Liste nicht Unterstützer Hardware

  8. Warum ist Alice in der Koalition der Willigen? Hat nicht Hansenet sogar dagegen geklagt (und verloren)?

  9. Das wird ja immer absurder. Nicht genug, dass mein Provider ohne mein Wissen Umleitungen zu irgendwelchen dämlichen Stoppschildern vornimmt, jetzt schreibt er mir auch noch vor welchen DNS ich zu benutzen habe.
    Am besten werden die Pädophilen der Zensursula entkommen, in dem sie sich einfach eine 1TB Festplatte kaufen und die rumreichen. Das abscheuliche “Material” wo dann da drauf ist wird dann wohl für lange Zeit reichen…

  10. Wieviele Seiten werden eigentlich betroffen sein?

  11. Es ist sicher nur eine Frage der Zeit, bis die Sachen wie L7-Filter (http://l7-filter.sourceforge.net/) benutzen, weil da ist der Port dann egal und man darf sich was aufwändigeres überlegen. :-(

  12. Tippfehler: da steht wo als Portnummer 59, statt 53.

    Außerdem nett: tor-resolve (benötigt tor ;) )

  13. Kommentar zu Fabian bzw. L7-Filter: Theoretisch(!) ist es sogar möglich DNS durch HTTPS(=Verschlüsselt und daher nicht filterbar) zu tunneln – und HTTPS können sie uns nun wirklich nicht verbieten…

  14. Wie ich feststellen musste ist es gar nicht so einfach DNS-Server zu finden die auf eine DNS-Anfrage auf Port 110 antworten.

    Gibt es eine Liste solcher Server?

    Ansonsten ist es recht einfach die wenigen die auf Anfragen auf Port 110 antworten auch noch “umzuleiten”.

  15. Hallo Grek 336, einen x-beliebigen DNS-Server von einem völlig unbekannten Anbieter würde ich nicht verwenden. Es wäre ein leichtes Anfragen zu Homebanking und Co. auf Fishing-Server umzuleiten. Ich persönlich würde nur auf die GPF oder FoeBud setzen, siehe eben https://www.awxcnx.de/handbuch_21g.htm

  16. Pingback: frakturfreak (frakturfreak) 's status on Wednesday, 30-Sep-09 12:36:58 UTC - Identi.ca

  17. Super Tutorial, besten Dank dafür!!

  18. Hi Chris,
    Super Anleitung erstmal. Ich habe noch zusätzlich in der named.conf.options die “listen-on { 127.0.0.1; };” directive.
    Außerdem kann man auch in der /etc/dhcp3/dhclient.conf die option: “prepend domain-name-servers 127.0.0.1;” setzen wenn man einen DHCP server nutzt.

  19. Kann ich sowas auch in der Tomato-Router-Firmware konfigurieren?

  20. Pingback: Wie man die Zensur bei Vodafone umgeht

  21. Hallo Lee Van Cleef, ja das müsste gehen. Ein weiterer Trick wäre es per iptables den Port umzubiegen. Du kannst dich via ssh ja auf einem “Tomato-Router” einloggen. Angenommen du willst den DNS-Server 87.118.100.175 auf Port 110 nutzen, dann könntest du via

    iptables -t nat -A OUTPUT -p udp --destination 87.118.100.175
    --dport 53  -j DNAT --to-destination 87.118.100.175:110
    

    den Port umbiegen. Allerdings weiß ich nicht wie du das bei Tomato fest eintragen kannst. Beim nächsten Reboot, ist die iptable-Regel wieder weg. In /etc/ finde ich keine Runlevel, so dass man da ein Skript eintragen könnte.

  22. @Frederik:
    Ja, generell hilft da End-zu-end-Verschlüsselung weiter, aber gerade HTTPS ist ja alles andere als performant (SSL+HTTP+TCP). Aus meiner Sicht ist es ja eigentlich schon lange soweit, daß das alte und zentralistische DNS durch eine dezentrale z.B. DHT basierte Lösung (in Anlehnung an Freenet) ersetzt wird (natürlich mit Fallback Unterstützung). Ja, DNS ist die Geißel des dezentral konzipierten Internet Protokolls und zudem noch unsicher und veraltet.

  23. Pingback: Twitted by relatedtruth

  24. Pingback: Tweets die DNS-Server abseits von Port 53 abfragen | Linux und Ich erwähnt -- Topsy.com

  25. Hi Christoph,

    ich habe Deine Anleitung abgearbeitet, inklusive dem Eintrag allow-query { localhost; }; in der ‘/etc/bind/named.conf.options’., aber der Befehl dig linuxundich.de gibt mir dieses aus:

    ; <> DiG 9.5.1-P2 <> linuxundich.de
    ;; global options:  printcmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48553
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
    
    ;; QUESTION SECTION:
    ;linuxundich.de.			IN	A
    
    ;; ANSWER SECTION:
    linuxundich.de.		3600	IN	A	89.238.77.11
    
    ;; Query time: 264 msec
    ;; SERVER: 213.73.91.35#53(213.73.91.35)
    ;; WHEN: Thu Oct  1 23:08:27 2009
    ;; MSG SIZE  rcvd: 48
    
  26. DNS-Server ist 213.73.91.35 von dnscache.berlin.ccc.de, kann es sein dass du deinen DNS-Server noch direkt im System eingetragen hast?

  27. Ich hab die /etc/bind/named.conf.options mit sudo gedit bearbeitet, weil ich das mit nano leider nicht verstanden habe, bzw. hinbekommen habe. Meine /etc/bind/named.conf.options sieht wie folgend aus.

    options {
    	directory "/var/cache/bind";
    	auth-nxdomain no; 
    	listen-on-v6 { any; };
    };
    

    Danach habe ich im NetworkManager unter IPv4-Einstellungen bei DNS Server auch die drei oben eingetragenen DNS Server eingegeben (213.73.91.35, 208.67.222.222, 208.67.220.220).

    Habe ich da was falsch verstanden? Ich sollte erwähnen, das ich nur einen PC betreibe, und dieser direkt an einem Router hängt.

    Sorry für die Mühen, ist es besser einen Thread im Ubuntuusers Forum zu eröffnen?!

    [moderiert von Christoph: Kommentare aus named.conf.options entfernt.]

  28. Dann hast du das “forward only;” übersehen, oder?

  29. Ich habe die /etc/bind/named.conf.options nun um das forward only ergänzt:

            // forward only;
    	// forwarders {
    	// 	213.73.91.35;
            //      208.67.222.222;
            //      208.67.220.220;
            //      allow-query { localhost; };     
    	// };
    

    Dies hat aber keine Änderung bei der Ausgabe von dig linuxundich.de gebracht!?

    P.S.: Leider kriege ich das hier nicht mit den Codeblöcken hin!?

  30. Das ist einfaches html, du musst deine Konfiguration in <pre>…</pre> Tags packen. Hast du da wirklich überall die // gesetzt? Das bedeutet, dass du die Zeile auskommentierst.

  31. forward only;
    forwarders {
    213.73.91.35;
    208.67.222.222;
    208.67.220.220;
    allow-query { localhost; };
    };

    auth-nxdomain no; # conform to RFC1035
    listen-on-v6 { any; };
    };
    Nach einem sudo /etc/init.d/bind9 restart wird mir aber eine FAIL Fehlermeldung angezeigt!

  32. Ich glaub du bringst du etwas die Syntax durcheinander, die Datei sollte in deinem Fall so…

    options {
    	directory "/var/cache/bind";
    	auth-nxdomain no;    # conform to RFC1035
    	listen-on-v6 { any; };
    	
    	forward only;
    	forwarders {
    		213.73.91.35;
    		208.67.222.222;
    		208.67.220.220;
    	};
    };
    

    ausehen.

  33. Na nun funktioniert der bind9 Neustart,…aber wo genau trage ich nun das allow-query { localhost; }; ein? Oder ist das in meinem Single PC Netzwerk gar nicht nötig? Interessiern würds mich schon, wo man das einträgt, denn der Befehl dig linuxundich.de gibt immer noch nicht das aus, was Du oben nennst.

  34. Einfach noch in die Options klatschen. Also bspw.

    options {
    	directory "/var/cache/bind";
    	auth-nxdomain no;    # conform to RFC1035
    	listen-on-v6 { any; };
    
    	forward only;
    	forwarders {
    		213.73.91.35;
    		208.67.222.222;
    		208.67.220.220;
    	};
            allow-query { localhost; };
    };
    
  35. Habe nun in der /etc/bind/named.conf.option alles so eingetragen, wie Du es genannt hast, trotzdem zeigt mir dig linuxundich als Server: 213.73.91.35#53(213.73.91.35) an, und nicht wie bei Dir Server: 127.0.0.1#53(127.0.0.1) ?

    Das ist momentan mein Verständnisproblem!

  36. Was steht denn in deiner /etc/resolv.conf?

  37. da steht drin:

    nameserver 213.73.91.35
    nameserver 208.67.222.222
    nameserver 208.67.220.220

  38. sudo nano /etc/bind/named.conf.option

    Da fehlt wohl ein s am Ende, oder?

  39. savalas, ok. Dann ist ds Problem eingegrentzt, du musst deinem System noch sagen, den lokalen DNS-Server zu benutzen. Was benutzt du denn für den Netzwerkzugang? Den NetworkManager?

  40. Ich nutze den Gnome NetworkManager und bin verbunden mit einem D-Link Router.

  41. savalas, hast du mit der rechten Maustaste auf das Icon des NetworkManagers geklickt, “Verbindungen bearbeiten” gewählt, den “Auto eth0″ eintrag bearbeitet und dort unter “IPv$-Einstellungen auf “Automatisch (DHCP), nur Adressen” deinen DNS-Server eingetragen? So ähnlich wie hier…

  42. Im Grunde genauso,…

    wie auf diesem Screenshot

    http://www.ubuntu-pics.de/bild/26422/screenshot1_EGD2Aq.png

  43. savalas, da ist das Problem. Du sagst an dieser Stelle welcher DNS-Server zu nutzen ist. Trage dort eben deinen lokalen DNS-Server und nicht die im Netz ein. Erst dann, wird dein lokaler DNS-Server benutzt.

  44. Na endlich, was ne Geburt! Is halt so, wenn die Profis mit mit den Amteuren…!

    Vielen Dank! Und hoffentlich beim nächsten mal mit weniger Begriffstutzigkeit!!

    Bis denne und ein schönes WE wünscht savalas

    P.S.: In Deinem NetworkManager sieht man IPv6 Einstellungen? Is das erst unter Karmic so?

  45. Kein Problem :) IPv6 ist eigentlich schon immer da. Ich vermute dass das vom Router abhängt.

  46. O.K., dann nehme ich mir mal den Router zur Brust, aber nicht dieses WE,…;)

    Nochmals vielen Dank!

  47. Hallo Christoph,

    Ich habe hier (eigentlich erst nur für den Gebrauch im privaten LAN gedacht) einen DNS-Proxy gebastelt, wo es reicht in der Konfigurationsdatei /etc/dnsproxy.conf so etwas einzutragen:

    (…)
    nameserver 87.118.100.175
    port 110
    (…)

    …, dann braucht man kein ganzes Bind zu installieren und zu konfigurieren.

    Unter folgender Adresse habe ich auch ein Deb-Paket (vorkonfiguriert) bereitgestellt. Es reicht, das zu installieren und den Server im Networkmanager auf 127.0.0.1 zu stellen.

    http://freehal.org/other/dns-proxy/

    Gruß
    Tobias Schulz

  48. Hi,

    ich nochmal, hab da abschließend nochmal eine Frage,…dadurch, das ich mir auf meinem Rechner einen Server bind9 installiert habe, muß mir Gedanken machen über Sicherheit, offene Ports oder Sonstiges?

    bin wie man oben lesen konnte doch reichlich unerfahren mit Serverdiensten.

  49. Mit der Option “allow-query { localhost; };” sagst du bind9 ja, dass nur der eigene Rechner auf den Dienst zugreifen darf. Von daher können anderen Rechner nicht auf den Dienst zugreifen.

Hinterlasse eine Antwort

Pflichtfelder sind mit * markiert.

Die Eingabe einer E-Mail Adresse ist hier im Blog nicht nötig! Ihr müsst nur dann eine E-Mail angeben, wenn ihr bei neuen Kommentaren benachrichtigt werden möchtet, oder über Gravatar euer Nickpic neben eurem Kommentar erscheinen soll.