netstat - IPv4 nedenleri yalnızca -A inet6'da listelenen bağlantı noktalarını dinliyor?


22

Bir bilgisayarım var:

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

Tüm arabirimlerde 80 numaralı bağlantı noktasında Apache'yi çalıştırıyor ve görünmüyor netstat -planA inet, ancak beklenmedik bir şekilde bulunabilir 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   -               

Yukarıda da görüldüğü gibi TCP4 ile kolayca ulaşabilirim. Ancak, bu bağlantılar bile altında listelenmiştir tcp6. Niye ya?


1
Tüm IPv4 adresleri doğrudan IPv6 adresleriyle eşlenir (ancak tersi değil). Bakınız: en.wikipedia.org/wiki/IPv6#IPv4-mapped_IPv6_addresses
Patrick

4
kullanmayı bırakın lütfen netstat? öldü - on yıl önce . Kullanım iproute2 'ınss
mikeserv

Yanıtlar:


16

Apache Listenparametresine adres belirtmezseniz varsayılan olarak , IPv4-mapped IPv6adresleri kullanarak ipv6 adresini işler . Apache ipv6'da bir göz atabilirsiniz

Çıktısı netstatApache'nin IPv4 adresini dinlemediği anlamına gelmez. Bu bir IPv4-mapped IPv6adres.


IPv4 adreslerini dinleyen ancak netstat tarafından tcp6 olarak listelenen başka hizmetler de var, örneğin ElasticSearch
Mischa Arefiev

Sanırım @Patrick tarafından sağlanan wikipedia bağlantısını okudunuz. IPv4 eşlemeli IPv6 adresini kullanan tüm bu hizmetler tcp6netstat'ın çıktısında gösterilecektir .
acemi

14

Bunun nedeni, tüm IPv4 adreslerinin de IPv6 adresleri olmasıdır. IPv4 adreslerinin bire bir eşlenmesi için kullanılmak üzere küçük bir IPv6 adres aralığı ayrılmıştır. Örneğin, IPv4 adresine 192.0.2.128IPv6 adresi üzerinden erişilebilir ::ffff:192.0.2.128. Bu, yalnızca IPv6'yı destekleyen uygulamaların IPv4 adreslerini dinleyebilmesi için yapıldı. IPv4 IPv6 adresini nasıl kullanacağınızı bilmeyeceğinden, IPv4 adresinin IPv4 adresiyle (eşlenmemiş) IPv4 adresi için başka hiçbir şey olmadan konuşmak için kullanılamayacağına dikkat edin. gerçi).

Tüm IPv4 adresleri IPv6'da gösterildiğinden, IPv6'yı netstatkullanarak uygulamaları listelemek istediğinizde, IPv4'ü de alacaksınız.
Bu temsil edebilir 10.0.176.93şekilde ::ffff:10.0.176.93, hatta ::ffff:a00:b05d, ancak uygulama geliştiricileri düzenli noktalı gösterimi IPv4 adres olarak göstermek için seçti.


Teşekkür ederim, ama bu normal yaptıklarında neden -A inet
görünmediklerini cevaplamıyor

Dinleme bağlantılarının yalnızca tcp6 soketleri olarak listelenmesinin nedeni, gerçekten IPv6 soketleri olmaları, ancak ek olarak yapılandırılmışlarsa IPv4 bağlantılarını kabul etmeleridir. Soketler INADDR_ANY6'ya bağlanır ve bir IPv4 bağlantısı adrese geldiğinde, IPv6 adresiyle eşleştirilir: ffff: 0000/96. Bu eşlenen adresler için tek kullanım budur; tel üzerinde kullanılmamalıdırlar.
Johan Myréen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.