PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


DNS Dienste für lokale Umgebungen

with 17 comments

Lokal habe ich einen Webserver laufen für kleinere Projekte und Tests. Wenn ich nun ein neues Projekt starte muss ich 2 Dinge machen: einen neuen VHost im Webserver anlegen, und in der hosts-Datei einen neuen Eintrag hinzufügen. Ich möchte hier speziell über das Problem der hosts-Datei schreiben.

Wenn ich nun beispielsweise die Domain project1.localhost nutzen möchte für mein neues Projekt, muss ich zusehen dass diese Domain auf meinen lokalen Rechner zeigt. Dazu öffne ich die hosts-Datei (Windows: C:\Windows\System32\drivers\etc oder Linux: /etc/hosts) und füge eine Zeile hinzu:

127.0.0.1       project1.localhost

Wenn nun auch im Webserver ein VHost existiert für diese Domain, dann kann ich losprogrammieren.

Änderungen an der hosts-Datei bringen aber auch Probleme mit sich. Wenn das Betriebssystem neu installiert wird sind die hosts-Datei-Einträge erstmal weg, sie müssen neu erstellt werden. Sollte ich das Projekt auf einem zweiten Rechner laufen lassen wollen muss ich auch dort die hosts-Datei anpassen.
Das selbe Problem existiert übrigens auch wenn mit einem Entwicklungswebserver im LAN gearbeitet wird, dann muss man natürlich statt 127.0.0.1 die entsprechende IP nehmen (z.B. 192.168.0.2 oder 10.0.0.2).

Eine Lösung des Problems ist ein eigener DNS-Server auf dem lokalen Rechner bzw. im LAN. Dann müssen die Einstellungen nur an einer Stelle gemacht werden.

Nun gibt es im Internet auch Dienste die genau dieses Problem lösen sollen. Beispielsweise xip.io. Auf der Homepage ist zu lesen:

xip.io is a magic domain name that provides wildcard DNS
for any IP address. Say your LAN IP address is 10.0.0.1.
Using xip.io,

10.0.0.1.xip.io   resolves to   10.0.0.1
www.10.0.0.1.xip.io   resolves to   10.0.0.1
mysite.10.0.0.1.xip.io   resolves to   10.0.0.1
foo.bar.10.0.0.1.xip.io   resolves to   10.0.0.1

Damit kann ich nun also eine von mir ausgedachte Domain auf irgendeine IP-Adresse zeigen lassen.

Ähnliche Dienste sind localtest.me, lvh.me oder vcap.me, wobei dort alles immer auf 127.0.0.1 zeigt.

Ich sehe dabei nur folgende Probleme: Ich benötige eine Internetverbindung, ich verlasse mich darauf dass die Anbieter immer verfügbar sind (deren DNS Server), und ich muss dem Anbieter vertrauen dass er keinen Mist macht. Man stelle sich vor sie lösen die Domains plötzlich auf in eine ihrer eigenen IP-Adressen, dann gehen meine Requests, die eigentlich lokal bleiben sollten, ins Internet an die Angreifer.

Arbeitet man nur lokal kann man übrigens auch 127.0.0.2, 127.0.0.3 etc. nutzen, nur kann ich mir die IP-Adressen schlecht merken, deshalb arbeite ich mit Domains (*.localhost) und der hosts-Datei.

Wie löst ihr das Problem, mittels DNS Server, hosts-Datei, einem der DNS-Dienste, oder ganz anders?

Written by Michael Kliewe

Oktober 24th, 2012 at 10:17 am

Posted in Linux,Server-Software

Tagged with , ,

17 Responses to 'DNS Dienste für lokale Umgebungen'

Subscribe to comments with RSS or TrackBack to 'DNS Dienste für lokale Umgebungen'.

  1. Mach das doch selbst mit ’nem DNS Eintrag. 🙂

    *.localhost.phpgangsta.de A 127.0.0.1

    Oliver

    24 Okt 12 at 10:25

  2. @Oliver: Ja, damit würde man ein Problem lösen. Aber ich will auch ohne Internetverbindung arbeiten können, und ohne mir die Mühe zu machen lokal einen DNS-Server zu managen 😉

    Michael Kliewe

    24 Okt 12 at 10:39

  3. Ohne Internet => host Datei
    lokale DNS => brauchst Du nicht bei Wildcards 😉

    Oliver

    24 Okt 12 at 10:43

  4. Nimm dnsmasq. Eine Zeile Konfiguration. Einmal einrichten und dann vergessen. Und beliebige Subdomains unter beliebiger selbst bestimmter TLD dann auf Localhost umgeleitet kriegen.

    Michael hat das hier gerade gestern erst super zusammengefasst (dnsmasq ist nur ein Teil seines beschriebenen Setups):

    http://lastzero.net/2012/10/configuring-ubuntu-and-apache-2-for-development-environments/

    Markus Wolff

    24 Okt 12 at 11:02

  5. Ist nicht ganz Thema: Zeroconf 🙂 Unter Linux macht das zB avahi. Damit ist jeder Rechner im lokalen Netz direkt unter [hostname].local erreichbar. Das ganze dann mit portbasierten VHosts und weiter ist keine Anpassung notwendig. Das löst aber nicht das Problem, dass man sich die Anwendungen zu den Ports merken muss :X

    KingCrunch

    24 Okt 12 at 11:04

  6. Ich entwickle hauptsächlich am Mac, mit einem Desktop-Rechner und einem Laptop. Da leistet mir das Tool VirtualHostX (http://clickontyler.com/virtualhostx/ ) gute Dienste – ich habe eine GUI für etc/hosts UND Apache virtual hosts gleichzeitig und kann die Einstellungen per Dropbox zwischen Rechnern austauschen.

    Ich liebäugle allerdings schon lange mit einem eigenen DNS-Server, da ich auch noch virtuelle Maschinen habe und für die gleich 2-3 hosts-dateien anpassen muss (auf der VM und auf dem eigentlichen Entwicklungsrechner). Die Hürde hier ist mein Netzwerksetup – ich habe VDSL2, nutze den Telekom-Router und weiß nicht genau, welcher andere Router gut mit VDSL2 funktioniert. Früher hatte ich einen Router mit DD-WRT Firmware, der hatte einen guten DNS und eine schöne Verwaltunsgoberfläche.

    Gabriel

    24 Okt 12 at 11:08

  7. Hallo,

    Ich bin schon vor einigen Jahren auf Ubuntu umgestiegen, um dem Produktivsystem beim Entwickeln näher zu sein, und da ists recht einfach den dns-Server bind einzurichten. (bind9 aus Paketquellen).
    In der /etc/bind/db.local muss die (in meinem Fall) fünfte Zeile so aussehen:

    @ IN SOA localhost. root.localhost. (

    das „localhost.“ ist das entscheidende, und schon zeigen alle [projektname].localhost auf meine Maschine.

    Apache host-config liegt übrigens in einem Dropbox-Verzeichnis, damit die Einträge automatisch am Zweitrechner auch zur Verfügung stehen.

    Liebe Grüße,
    Johannes

    Johannes

    24 Okt 12 at 11:48

  8. Wenn’s Geld kosten darf, würde ich Charles nehmen (http://www.charlesproxy.com/). Der kann als lokaler Proxy außer DNS-Spoofing noch ne ganze Menge mehr, was für die Webentwicklung praktisch ist.

    Jan

    24 Okt 12 at 12:32

  9. Seit einiger Zeit habe ich meine hosts-Datei für alle beschreibbar und eine Firefox-Erweiterung, die mir bei der Bearbeitung der hosts-Datei hilft.
    https://addons.mozilla.org/en-US/firefox/search/?q=hosts&appver=&platform=

    Zudem habe ich bei meinem Webserver (aktuell Nginx, der es an Apache weiterleitet, wenn eine .htaccess-Datei existiert) einen vHost mit variablem DocRoot erstellt, der alle Anfragen mit vollem Domainnamen in meinem Web-Projekte-Ordner sucht.

    Arbeitsschritte für ein neues Projekt ist somit nur:
    1. hosts-Datei anpassen (z.B. mit Hilfe der Firefox-Erweiterung)
    2. erstellen eines Ordners in meinem Web-Projekte-Verzeichnis.

    Infos zur Serverkonfiguration (ich verlinke immer wieder gerne drauf 🙂 )

    https://github.com/SimonSimCity/webserver-configuration

    Das Installationsscript wird aktuell nur unter Debian Squeeze getestet – ich arbeite aber noch an Arch. Ubuntu sollte ohne Probleme laufen. Änderungen zwischen Distributionen sollten sich nur auf Paketnamen und Verzeichnisse beschränken. Der Rest sollte überall 1:1 laufen.

    Simon Schick

    24 Okt 12 at 13:44

  10. Ich benutze ebenfalls VirtualHostX.

    Phil

    24 Okt 12 at 13:52

  11. ragtek

    24 Okt 12 at 17:57

  12. Man könnte wie früher UUCP zum verteilen der hosts Datei nutzen.

    Harald

    26 Okt 12 at 13:28

  13. Ich habe meinen eigenen vHostManager dafür geschrieben als Webtool. 🙂
    Dort verwalte ich meine Projekt-vHosts und er generiert die hosts- und vhost.conf-Datei automatisch.
    Und von welchem Rechner im LAN ich dies nutze, ist egal, da er ja lokal in die Dateien schreibt.
    Bei einem neuen Rechner muss ich also nur einmal auf generieren klicken.

    Frank

    26 Okt 12 at 14:44

  14. […] DNS Dienste für lokale Umgebungen […]

  15. Da ich gut und gerne auch mal mit dem Handy oder Tablet auf meine Entwicklungen zugreifen muss, war mir das hantieren mit der hosts-Datei zu umständlich, externe Dienste bleiben auch außen vor (aufgrund der Problematik, dass der Dienst erreichbar sein muss).
    Ich habe auf meinem Router zu Hause DD-WRT installiert und nach ettlichen Versuchen der Konfiguration hab ich das Ding nun soweit, dass der Router im lokalen Netz gleichzeitig als lokaler DNS dient. Praktisch und flexibel 🙂

    Jens

    14 Nov 12 at 15:17

  16. Danke für die guten Tipps 🙂

  17. Habe es nun zum 3ten mal durchgelesen und finde es noch immer kompliziert 🙁

    Patrick

    5 Jun 18 at 17:33

Leave a Reply

You can add images to your comment by clicking here.