Apache läuft nicht in netstat

10

Ich spiele nur mit Apache und habe es zum Laufen gebracht , das heißt, ich kann eine Verbindung zum Server herstellen, indem ich zu IPv6 navigiere http://127.0.0.1und http://192.168.1.5es NICHT ausführe

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 zuhört, 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 Abwahl? Was fehlt mir kann jemand ausarbeiten?

meccooll
quelle
versuche netstat -a | grep HÖREN und Post-Ausgabe
Lety
Veröffentlichte die Ergebnisse
meccooll
Versucht netstat -p?
Muru
Die beiden letzten Zeilen beziehen sich auf Apache, der Port 80 und 443 abhört. Versuchen Sie muru vorzuschlagen, um process / pid anzuzeigen.
Lety
@ Letizia richtig, aber es steht tcp6 in der ersten Spalte und :: für IP, das ist IPv6, aber ich verbinde mich auf IPv4 damit ???
Meccooll

Antworten:

17

TL; DR

Apache nicht erscheint in Ihrer netstatAusgabe, und es wird ausgeführt. Deshalb wgetfunktioniert Ihr Anruf. Es ist jedoch an Ihre IPv6-Adresse anstatt an Ihre IPv4-Adresse gebunden. Die Adresszuordnung übernimmt bei Bedarf die Übersetzung.

Ich gehe nach den Dokumenten

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 unabhängig davon, wie Sie Ihren Computer ansprechen, es sich am Ende immer noch um denselben Dienst und Port handelt. Der Rest hängt hauptsächlich von Ihrem Browser und den DNS-Auflösungsdiensten ab. Weitere Informationen dazu, wie Apache damit umgeht, finden Sie in der Dokumentation :

Ein komplizierter Faktor für Apache-Administratoren ist, ob ein IPv6-Socket sowohl IPv4-Verbindungen als auch IPv6-Verbindungen verarbeiten kann. Bei der Verarbeitung von IPv4-Verbindungen mit einem IPv6-Socket werden IPv4-zugeordnete IPv6-Adressen verwendet, die auf den meisten Plattformen standardmäßig zulässig sind, auf FreeBSD, NetBSD und OpenBSD jedoch standardmäßig nicht zulässig sind, um den systemweiten Richtlinien auf diesen Plattformen zu entsprechen. Auf Systemen, auf denen dies standardmäßig nicht zulässig ist, kann ein spezieller Konfigurationsparameter dieses Verhalten für Apache ändern.

Grundsätzlich geht es darum, sowohl IPv4- als auch IPv6-Sockets so zu behandeln, dass die meisten Probleme im Zusammenhang mit der plattformübergreifenden Kompatibilität und der Socket-Behandlung vermieden werden. Wie Sie lesen können, wird dieses Problem auf Linux-Plattformen wie Ubuntu mithilfe von IPv4-zugeordneten IPv6-Adressen gelöst . In der Dokumentation heißt es außerdem:

Wenn Apache nur IPv4-Verbindungen verarbeiten soll, unabhängig davon, was Ihre Plattform und Ihr APR unterstützen, geben Sie in allen Listen-Anweisungen eine IPv4-Adresse an.

Welches würde so etwas in der ports.confDatei geben:

Listen 0.0.0.0:80 # Or...
Listen 127.0.0.1:80 # Or...
Listen 192.0.2.1:80

Daraus resultiert einer der folgenden netstatAusgä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 Hörer. Die obige Einstellung wird normalerweise in /etc/apache2/ports.conf(oder direkt in apache2.conffür ältere Versionen) eingestellt. Der Standardwert ist Listen 80, der eine automatische Bindung durchführt, dh den IPv6-Spezifikationen in der Dokumentation entspricht.

John WH Smith
quelle
1
Huh wusste nichts über Adresszuordnung, also muss ich auf offene Ports sowohl auf IPv6 als auch auf IPv4 achten.
Meccooll
hat sich "askubuntu" angeschlossen, um diese Frage und Antwort zu verbessern !!!
Prem