J'ai un ordinateur avec:
Linux superhost 3.2.0-4-AMD64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux
Il exécute Apache sur le port 80 sur toutes les interfaces et n'apparaît pas dans netstat -planA inet
, mais il peut être trouvé de manière inattendue dans netstat -planA inet6
:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::5672 :::* LISTEN 2402/beam.smp
tcp6 0 0 :::111 :::* LISTEN 1825/rpcbind
tcp6 0 0 :::9200 :::* LISTEN 2235/Java
tcp6 0 0 :::80 :::* LISTEN 2533/Apache2
tcp6 0 0 :::34611 :::* LISTEN 1856/rpc.statd
tcp6 0 0 :::9300 :::* LISTEN 2235/Java
...
tcp6 0 0 10.0.176.93:80 10.0.76.98:53704 TIME_WAIT -
tcp6 0 0 10.0.176.93:80 10.0.76.98:53700 TIME_WAIT -
Je peux très bien l'atteindre par TCP4, comme vu ci-dessus. Cependant, même ces connexions sont répertoriées sous tcp6
. Pourquoi?
Par défaut, si vous ne spécifiez pas d'adresse pour le paramètre Apache Listen
, il gère l'adresse ipv6 à l'aide de IPv4-mapped IPv6
adresses. Vous pouvez jeter un oeil dans Apache ipv6
La sortie de netstat
ne signifie pas qu'Apache n'écoute pas sur l'adresse IPv4. C'est un IPv4-mapped IPv6
adresse.
La raison en est que toutes les adresses IPv4 sont également des adresses IPv6. Une petite plage d'adresses IPv6 a été mise de côté pour être utilisée pour le mappage un à un des adresses IPv4. Par exemple, l'adresse IPv4 192.0.2.128
est accessible via l'adresse IPv6 ::ffff:192.0.2.128
. Cela a été fait pour que toutes les applications qui prennent en charge IPv6 uniquement puissent toujours écouter sur les adresses IPv4. Notez que cela ne peut pas être utilisé pour une adresse IPv6 (non mappée) pour parler à une adresse IPv4 sans autre chose impliquée, car l'IPv4 ne saura pas comment gérer l'adresse IPv6 (vous pouvez utiliser NAT ou d'autres solutions bien que).
Étant donné que toutes les adresses IPv4 sont représentées dans IPv6, lorsque vous demandez à netstat
de répertorier les applications utilisant IPv6, vous obtiendrez également IPv4.
Cela pourrait représenter 10.0.176.93
comme ::ffff:10.0.176.93
, ou même ::ffff:a00:b05d
, mais les développeurs de l'application ont choisi de l'afficher comme une adresse IPv4 régulière en notation pointillée.