Ich spiele gerade mit Apache und ich habe es zum Laufen gebracht, das heißt, ich kann eine Verbindung zum Server herstellen, indem ich zu http://127.0.0.1
navigiere und http://192.168.1.5
Ich verwende IPv6 NICHT
Dies ist jedoch das Ergebnis von netstat
$ sudo service apache2 status
* apache2 is running
$ netstat -an | grep :80
tcp6 0 0 :::80 :::* LISTEN
$ wget 127.0.0.1
--2014-06-26 01:32:15-- http://127.0.0.1/
Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11510 (11K) [text/html]
Saving to: ‘index.html’
100%[=====================================================================================================>] 11,510 --.-K/s in 0s
2014-06-26 01:32:15 (161 MB/s) - ‘index.html’ saved [11510/11510]
Ich hatte erwartet, dass es auf einem normalen TCP lauscht, was es eindeutig tut!?
Bearbeiten:
$ netstat -a | grep LISTEN
tcp 0 0 localhost:ipp *:* LISTEN
tcp 0 0 localhost:mysql *:* LISTEN
tcp6 0 0 ip6-localhost:ipp [::]:* LISTEN
tcp6 0 0 [::]:https [::]:* LISTEN
tcp6 0 0 [::]:http [::]:* LISTEN
Edit2:
Warum die Ablehnung? Was ich vermisse, kann jemand näher darauf eingehen?
Akzeptierte Antwort:
TL;DR
Apache macht erscheinen in Ihrer netstat
Ausgabe, und es ist Betrieb. Deshalb Ihr wget
anrufen funktioniert. Es ist jedoch an Ihre IPv6-Adresse anstelle Ihrer IPv4-Adresse gebunden. Die Adresszuordnung übernimmt bei Bedarf die Übersetzung.
Zur Dokumentation
Hier gibt es offensichtlich einen IPv6-IPv4-Fallback-Mechanismus. Tatsächlich verwende ich IPv6 in meinem lokalen Netzwerk noch nicht :
$ netstat -tunla | grep LISTEN | grep 80
tcp6 0 0 :::80 :::* LISTEN
Es ist wichtig zu beachten, dass, egal wie Sie Ihre Maschine adressieren, es am Ende immer noch derselbe Dienst und Port ist. Der Rest hängt hauptsächlich von Ihrem Browser und den DNS-Auflösungsdiensten ab. Für weitere Informationen darüber, wie Apache damit umgeht, sollten Sie jedoch einen Blick in ihre Dokumentation werfen:
Ein erschwerender Faktor für Apache-Administratoren ist, ob ein IPv6-Socket sowohl IPv4-Verbindungen als auch IPv6-Verbindungen handhaben kann oder nicht. Die Handhabung von IPv4-Verbindungen mit einem IPv6-Socket verwendet IPv4-zugeordnete IPv6-Adressen, die standardmäßig auf den meisten Plattformen erlaubt sind, aber standardmäßig auf FreeBSD, NetBSD und OpenBSD nicht erlaubt sind, um der systemweiten Richtlinie auf diesen Plattformen zu entsprechen. Auf Systemen, auf denen dies standardmäßig nicht erlaubt ist, kann ein spezieller Konfigurationsparameter dieses Verhalten für Apache ändern.
Im Grunde geht es darum, sowohl IPv4- als auch IPv6-Sockets so zu handhaben, dass die meisten Probleme im Zusammenhang mit der plattformübergreifenden Kompatibilität und der Handhabung von Sockets vermieden werden. Wie Sie lesen können, wird dieses Problem auf Linux-Plattformen wie Ubuntu mithilfe von IPv4-zugeordneten IPv6-Adressen gelöst. Die Dokumentation besagt auch:
Wenn Sie möchten, dass Apache nur IPv4-Verbindungen handhabt, unabhängig davon, was Ihre Plattform und APR unterstützen, geben Sie eine IPv4-Adresse für alle Listen-Anweisungen an.
Das würde sowas in der ports.conf
geben Datei :
Listen 0.0.0.0:80 # Or...
Listen 127.0.0.1:80 # Or...
Listen 192.0.2.1:80
Dies führt zu einem der folgenden netstat
Ausgänge…
$ netstat -tunla | grep LISTEN | grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
$ netstat -tunla | grep LISTEN | grep 80
tcp 0 127.0.0.1:80 127.0.0.1:80 LISTEN
$ netstat -tunla | grep LISTEN | grep 80
tcp 0 192.0.2.1:80 192.0.2.1:80 LISTEN
Ein schöner, aber IPv6-nicht-bereiter Listener. Die obige Einstellung wird normalerweise in /etc/apache2/ports.conf
gesetzt (oder direkt in apache2.conf
für ältere Versionen). Der Standardwert ist Listen 80
, die eine Automatik ausführt verbindlich, d. h. konform mit den in der Dokumentation angegebenen IPv6-Spezifikationen.