Sven Rautenberg: Apache: Mehrere Projekte per Browser aufrufen

Beitrag lesen

Moin!

Übrigens, Thomas: daß das bei dir mit IP-Adressen wie 127.0.0.x funktioniert, kann ich zwar nach etwas Nachdenken nachvollziehen, das ist aber in höchstem Maß (für mich) ungewöhnlich. Ich habe, wie mehrfach im Archiv nachzulesen, gerne dagegen votiert, die loopback-Adresse für virtualhosts zu verwenden und bisher hat mich noch keines der "Gegenargumente" überzeugt. 127.0.0.2 ist aber schon nicht mehr loopback, sondern _eigentlich_ gar nicht vorhanden.

Gut, dann votiere ich eben dafür, sie zu verwenden. :)

Was ich in allen den anderen Diskussionen zu 127.0.0.x vielleicht noch nicht deutlich gemacht habe, ist: wenn man keine virtuelle Hosts braucht, kann man die loopback-Adresse natürlich als Serveradesse stehenlassen. Aber sobald es virtuelle hosts gibt (egal, wieviele), ist es nach meinen bisherigen Kenntnissen sicherer, auf irgendeinen privaten Adreßraum auszuweichen. Administriert sich auch leichter.

Um auf "irgendeinen privaten Adressraum" ausweichen zu können, muß man erstmal ein Device haben, welches diesen privaten Adressraum zur Verfügung stellt. Die Installation dieses Devices geht einher mit zwei Routing-Einträgen, welche a) alle Verbindungen zu dem installierten Netzwerk (siehe Netmask) auf dieses Device routet, und b) alle Verbindungen auf die eigene IP-Adresse auf das Loopback-Device routet.

Beweis: Mein Laptop hat eine Netzwerkkarte und sonst gar nichts. Die Routingtabelle sieht so aus:
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0      192.168.2.1    192.168.2.17       1
Alles, was an nicht näher bezeichnete IP-Adressen geht, über die Netzwerkkarte an das Gateway schicken - das wird wissen, wohin weitergeleitet werden soll.

127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1
Alles, was ans Loopback-Device gehen soll, über das Loopback-Device schicken (oh wunder!). Hier erklärt sich auch, warum 127.0.0.x ankommt: Die Netzmaske für 127.x.y.z ist 255.0.0.0 - also landen alle IP-Adressen, die mit 127 anfangen, auf dem Loopback-Device. Das ist im Standard so definiert, und kann gerne ausgenutzt werden - wenngleich ich es nicht so ganz einsehe, warum man für Virtuelle Hosts IP-Adressen verschwenden muß. Das ist nur dann sinnvoll, wenn man den Host IP-basiert erreichen muß/will. Wenn man Namensauflösung hat, ist es unnötig.

192.168.2.0    255.255.255.0     192.168.2.17    192.168.2.17       1
Alles, was ins lokale Netzwerk gehen soll, über die Netzwerkkarte verschicken.

192.168.2.17  255.255.255.255        127.0.0.1       127.0.0.1       1
Alles, was an die eigene IP-Adresse gehen soll, über das Loopback-Device verschicken.

192.168.2.255  255.255.255.255     192.168.2.17    192.168.2.17       1
Alles, was an die Broadcast-Adresse des eigenen Netzwerkes gehen soll, über die Netzwerkkarte verschicken.

224.0.0.0        224.0.0.0     192.168.2.17    192.168.2.17       1
Das ist ein Routing-Eintrag für Multicast.

255.255.255.255  255.255.255.255     192.168.2.17               2       1
Das ist ein Routing-Eintrag für z.B. DHCP. Wenn der Computer noch keine IP-Adresse hat, sendet er Broadcasts an die IP-Adresse 255.255.255.255 und hofft auf Antwort eines DHCP-Servers.

Mit anderen Worten: Es ist für das Routing vollkommen Banane, ob man an 127.x.y.z sendet, oder an eine lokale IP-Adresse eines anderen Netzwerkdevices. Die Variante mit einer Netzwerkkarte erlaubt lediglich, auch von anderen, im Netzwerk angeschlossenen Rechnern aus auf den Server zuzugreifen. Wenn man solche Rechner nicht hat, und auch kein Netzwerk, spricht nichts dafür, dennoch eine eigene IP-Adresse einzurichten.

Ich darf mal zitieren:

"ServerName" erlaubt Ihnen, einen Hostnamen festzulegen, der an Clients

zurückgegeben wird -  falls er sich von dem unterscheiden soll, den das

Programm ausgeben würde (zum Beispiel können Sie "www" statt des realen

Hostnamens festlegen).

ACHTUNG: Sie können nicht einfach irgendeinen Hostnamen erfinden und erwarten,

daß er funktioniert. Ein Name, den Sie hier angeben, muß ein gültiger DNS-Name

sein.

Wobei zwei Dinge anzumerken sind: "Gültiger DNS-Name" muß nicht zwingend ein im Internet bekannter Name sein, der ins offizielle DNS-System eingetragen wurde. Sowas ist für Testzwecke sehr hinderlich und auch eher nicht finanzierbar - jedenfalls überflüssig, wenn man es nicht braucht. Es reicht vollkommen aus, wenn dem Server und dem Client der gewählte Name bekannt ist - beispielsweise durch die hosts-Datei.

Und zweitens gibt es ganz offiziell die Top-Level-Domain ".test", welche gemäß dem Standard keinesfalls je vergeben wird und explizit für Testzwecke vorgesehen ist. Damit kann man keinesfalls in Konflikt mit irgendwelchen real existierenden DNS-Namen gelangen. Es ist also ohne Probleme möglich (und bietet sich irgendwie auch an), den eigenen Live-Auftritt unter www.domain.de hosten zu lassen und den eigenen Testserver unter www.domain.test zu betreiben.

Die Einträge im host. finde ich unnötig.
Ich finde die gar nicht unnötig. Man muß aber verstehen, daß beim Aufruf eines solchen Namens im Browser dann nicht zwingend der "virtuelle host" aufgerufen wird, sondern zuerst die IP, die in der HOSTS-Datei dafür vorgesehen ist. Stimmt die mit irgendeinem virtuellen Host überein, ist es Zufall, daß der Aufruf klappt. Die HOSTS-Datei ist (auch historisch) die Vorstufe für DNS, das sollte man nicht vergessen.

Ohne hosts-Datei kann man namenbasierte virtuelle Hosts vergessen. Weil ohne Namensauflösung der Browser keinerlei HOST-Header sendet und der Apache nicht entscheiden kann, welcher der virtuellen Server denn nun angesprochen werden soll. Und logischerweise kann man ohne hosts-Eintrag natürlich nicht per Namen auf den Webserver zugreifen, sondern nur via IP.

Wenn es denn unbedingt sein muß - ich erwähnte es oben - dann kann man natürlich die gesamte Bandbreite von 127.0.0.1 bis 127.255.255.254 als IP-Adressraum ausnutzen und hinter jeder IP-Adresse einen virtuellen Server packen. Die Übersichtlichkeit dürfte aber ziemlich eingeschränkt sein - mit Namen ist das doch einfacher, und die hosts-Datei ist eben die einfachste Methode, für eine selbstdefinierte Namensauflösung zu sorgen.

- Sven Rautenberg

--
"Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)