web-dev-qa-db-fra.com

Apache ne fonctionne pas dans netstat

Je joue juste avec Apache et je l’ai fait fonctionner, c’est-à-dire que je peux me connecter au serveur en naviguant sur http://127.0.0.1 et http://192.168.1.5 je n’utilise pas IPv6

C'est pourtant le résultat de 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]

Je m'attendais à le voir écouter sur un TCP régulier, ce qu'il fait clairement!?

Modifier:

$ 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: Pourquoi le vote négatif? Qu'est-ce qui me manque, quelqu'un peut-il élaborer?

8
meccooll

TL; DR

Apache n'apparaît dans votre netstatoutput et il est en cours d'exécution . C'est pourquoi votre appel wget fonctionne. Cependant, il est lié à votre adresse IPv6 au lieu de votre adresse IPv4. Le mappage d'adresses gère la traduction si nécessaire.

Aller pour les docs

Il y a évidemment un mécanisme de secours IPv6-IPv4 ici. En fait, je n’utilise pas encore IPv6 sur mon réseau local:

$ netstat -tunla | grep LISTEN | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN

Il est important de noter que, peu importe la façon dont vous adressez votre ordinateur, il reste le même service et le même port. Le reste appartient principalement à votre navigateur et aux services de résolution DNS. Cependant, pour plus d'informations sur la façon dont Apache gère cela, vous pouvez jeter un œil à leur documentation :

Un facteur de complication pour les administrateurs Apache est de savoir si un socket IPv6 peut gérer à la fois les connexions IPv4 et IPv6. Le traitement des connexions IPv4 avec un socket IPv6 utilise des adresses IPv6 mappées IPv4, autorisées par défaut sur la plupart des plates-formes, mais interdites par défaut sous FreeBSD, NetBSD et OpenBSD, afin de correspondre à la stratégie système de ces plates-formes. Sur les systèmes où il est interdit par défaut, un paramètre spécial de configuration peut modifier ce comportement pour Apache.

Il s’agit essentiellement de gérer à la fois les sockets IPv4 et IPv6 de manière à éviter la plupart des problèmes liés à la compatibilité entre plates-formes et à la gestion des sockets. Comme vous pouvez le lire, sur les plates-formes Linux comme Ubuntu, ce problème est résolu en utilisant adresses IPv6 mappées IPv4 . La documentation indique également:

Si vous voulez qu'Apache gère uniquement les connexions IPv4, indépendamment de ce que votre plate-forme et votre APR prendront en charge, spécifiez une adresse IPv4 dans toutes les directives Listen.

Ce qui donnerait quelque chose comme ceci dans le fichier ports.conf:

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

Résultat dans l'une des sorties netstat suivantes ...

$ 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 

Un auditeur magnifique, mais pas encore prêt pour IPv6. Le paramètre ci-dessus est généralement défini dans /etc/Apache2/ports.conf (ou directement dans Apache2.conf pour les versions antérieures). La valeur par défaut est Listen 80, qui effectue une liaison automatic, c’est-à-dire conforme aux spécifications IPv6 indiquées dans la documentation.

15
John WH Smith