Ne voyez pas apache s'exécuter dans netstat

10

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

Pourtant, c'est 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!?

Éditer:

$ 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?

Meccooll
la source
essayez netstat -a | grep LISTEN et post-sortie
Lety
Publié les résultats
meccooll le
Essayé netstat -p?
muru
les deux dernières lignes se réfèrent à apache qui écoute sur les ports 80 et 443. essayez la suggestion de muru pour afficher le processus / pid.
Lety
@Letizia à droite mais il dit tcp6 dans la première colonne et :: pour ip qui est IPv6, mais je me connecte sur IPv4 ???
Meccooll

Réponses:

17

TL; DR

Apache n'apparaît dans votre sortie, et il est en cours d' exécution. Voilà pourquoi votre appel 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.netstatwget

Aller pour les documents

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 machine, c'est toujours le même service et le même port au final. Le reste dépend principalement de votre navigateur et des services de résolution DNS. Cependant, pour plus d'informations sur la façon dont Apache gère cela, vous pouvez consulter leur documentation :

Un problème compliqué pour les administrateurs Apache est de savoir si un socket IPv6 peut gérer à la fois les connexions IPv4 et les connexions IPv6. La gestion des connexions IPv4 avec un socket IPv6 utilise des adresses IPv6 mappées IPv4, qui sont autorisées par défaut sur la plupart des plates-formes, mais sont interdites par défaut sur FreeBSD, NetBSD et OpenBSD, afin de correspondre à la stratégie à l'échelle du système sur ces plates-formes. Sur les systèmes où il est interdit par défaut, un paramètre de configuration spécial peut changer ce comportement pour Apache.

Fondamentalement, il s'agit de gérer les sockets IPv4 et IPv6 de manière à éviter la plupart des problèmes liés à la compatibilité multiplateforme 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 des adresses IPv6 mappées IPv4 . La documentation indique également:

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

Ce qui donnerait quelque chose comme ça dans le ports.conffichier:

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

Il en résulte l'une des netstatsorties 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 les apache2.confanciennes versions). La valeur par défaut est Listen 80, qui effectue une liaison automatique , c'est-à-dire conforme aux spécifications IPv6 données dans la documentation.

John WH Smith
la source
1
Huh ne connaissait pas le mappage d'adresses, je dois donc faire attention aux ports ouverts sur IPv6 et IPv4.
Meccooll
rejoint "askubuntu" pour voter pour cette question et répondre !!!
Prem