netstat - warum hören IPv4-Daemons Ports ab, die nur in -A inet6 aufgeführt sind?

22

Ich habe einen Computer mit:

Linux superhost 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux

Es führt Apache auf Port 80 auf allen Schnittstellen aus und wird nicht in netstat -planA inetangezeigt, es kann jedoch unerwartet in gefunden werden 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   -               

Ich kann es durch TCP4 ganz gut erreichen, wie oben gezeigt. Aber auch diese Verbindungen sind unter aufgeführt tcp6. Warum?

Mischa Arefiev
quelle
1
Alle IPv4-Adressen werden direkt auf IPv6-Adressen abgebildet (aber nicht umgekehrt). Siehe: en.wikipedia.org/wiki/IPv6#IPv4-mapped_IPv6_addresses
Patrick
4
bitte nicht mehr verwenden netstat? es ist gestorben - vor einem Jahrzehnt . Verwenden Sie iproute2 'sss
mikeserv

Antworten:

16

Wenn Sie für den Apache- ListenParameter keine Adresse angeben , wird die IPv6-Adresse standardmäßig unter Verwendung von IPv4-mapped IPv6Adressen verarbeitet. Sie können einen Blick in Apache ipv6 werfen

Die Ausgabe von netstatbedeutet nicht, dass Apache die IPv4-Adresse nicht überwacht. Es ist eine IPv4-mapped IPv6Adresse.

Anfänger
quelle
Es gibt andere Dienste, die IPv4-Adressen abhören, aber von netstat als tcp6 aufgeführt werden, z. B. ElasticSearch
Mischa Arefiev
Ich vermute, Sie haben den von @Patrick bereitgestellten Wikipedia-Link gelesen. Alle Dienste, die die IPv4-zugeordnete IPv6-Adresse verwenden, werden tcp6in der Ausgabe von netstat angezeigt .
Anfänger
14

Der Grund dafür ist, dass alle IPv4-Adressen auch IPv6-Adressen sind. Ein kleiner Bereich von IPv6-Adressen wurde für die Eins-zu-Eins-Zuordnung von IPv4-Adressen reserviert. Beispielsweise ist die IPv4-Adresse 192.0.2.128über die IPv6-Adresse zugänglich ::ffff:192.0.2.128. Dies wurde durchgeführt, damit alle Anwendungen, die nur IPv6 unterstützen, weiterhin IPv4-Adressen überwachen können. Beachten Sie, dass dies nicht für eine IPv6-Adresse (nicht zugeordnet) verwendet werden kann, um mit einer IPv4-Adresse zu kommunizieren, ohne dass andere Dinge beteiligt sind, da IPv4 nicht weiß, wie mit der IPv6-Adresse umzugehen ist (Sie können NAT oder andere Lösungen verwenden) obwohl).

Da alle IPv4-Adressen in IPv6 dargestellt netstatwerden, erhalten Sie auch IPv4 , wenn Sie aufgefordert werden , Apps mit IPv6 aufzulisten.
Es kann 10.0.176.93als ::ffff:10.0.176.93oder sogar dargestellt werden ::ffff:a00:b05d, aber die Anwendungsentwickler haben sich dafür entschieden, es als reguläre IPv4-Adresse in Punktnotation anzuzeigen.

Patrick
quelle
Vielen Dank, aber das antwortet nicht, warum sie nicht auftauchen, wenn sie regelmäßig-A inet
Mischa Arefiev
Ich vermute, der Grund, warum die Listening-Verbindungen nur als TCP6-Sockets aufgeführt werden, ist, dass es sich tatsächlich um IPv6-Sockets handelt, aber mit der zusätzlichen Funktion, dass sie auch IPv4-Verbindungen akzeptieren, wenn dies konfiguriert ist. Die Sockets sind an INADDR_ANY6 gebunden, und wenn eine IPv4-Verbindung eingeht, wird die Adresse einer IPv6-Adresse mit dem Präfix :: ffff: 0000/96 zugeordnet. Dies ist die einzige Verwendung für diese zugeordneten Adressen. Sie sollten nicht auf dem Draht verwendet werden.
Johan Myréen