Netstat çıktısının Yerel Adresinde ::: nedir?


37

Bu netstat -tulpn 'un elde ettiğim çıktı:

tcp        0      0 127.0.0.1:2208              0.0.0.0:*                   LISTEN      2055/hpiod
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      2077/cupsd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      2138/sendmail: acce
tcp        0      0 127.0.0.1:2207              0.0.0.0:*                   LISTEN      2060/python
tcp        0      0 0.0.0.0:735                 0.0.0.0:*                   LISTEN      1825/rpc.statd
tcp        0      0 :::111                      :::*                        LISTEN      1781/rpcbind
tcp        0      0 :::80                       :::*                        LISTEN      2624/httpd
tcp        0      0 :::22                       :::*                        LISTEN      2096/sshd
udp        0      0 0.0.0.0:32768               0.0.0.0:*                               2398/avahi-daemon:
udp        0      0 0.0.0.0:68                  0.0.0.0:*                               1581/dhclient
udp        0      0 0.0.0.0:729                 0.0.0.0:*                               1825/rpc.statd
udp        0      0 0.0.0.0:732                 0.0.0.0:*                               1825/rpc.statd
udp        0      0 0.0.0.0:5353                0.0.0.0:*                               2398/avahi-daemon:
udp        0      0 0.0.0.0:631                 0.0.0.0:*                               2077/cupsd
udp        0      0 :::32769                    :::*                                    2398/avahi-daemon:
udp        0      0 :::684                      :::*                                    1781/rpcbind
udp        0      0 :::5353                     :::*                                    2398/avahi-daemon:
udp        0      0 :::111                      :::*                                    1781/rpcbind

Bilmeyi merak ediyorum: :::Yerel Adres'de ne anlama geliyor? Ve Yabancı Adres nedir 0.0.0.0:*ve :::*nedir?


3
IPv6'da baştaki sıfırları atlayabilirsiniz, böylece yalnızca iki nokta üst üste bırakılır.
Louis

Aslında çok erken konuştum. Neden iki yerine üç tane kolon olduğunu bilmiyorum, +1. Sanırım sonuncusu limanı gösteriyor.
Louis

Yanıtlar:


22

Diğer cevapların çoğunda belirtildiği gibi, :: tüm sıfırları temsil eder ve sonra netstat bir adresten sonra bir kolon gösterebilir, bu yüzden üç sütun alırsınız.

Bu cevapların hiçbirinde görmediğim şey, bunun gerçekten ne anlama geldiğiyle ilgili soruya bir cevap (bu durumda).

Netstat durumunda, :: (IPv6'da) veya 0.0.0.0 (IPv4'te) temel olarak "herhangi bir" anlamına gelir.
Bu nedenle, yazılım adreslerden herhangi birinde bulunan TCP port 80'i (HTTP portu) dinlemektedir.

Birden fazla ağ kartı arabiriminiz varsa (ki, birazdan açıklayacağım gibi), yalnızca belirli bir adresi dinlemeniz mümkündür. Örneğin, bazı yazılımlarda, HTTP sunucunuzu kablolu Ethernet kullanan bir ağ kartında dinletmek, ancak kablosuz ağ kullanan bir ağ kartına yanıt vermemek gibi bir şey yapabilirsiniz. Bunu yaptıysanız, bilgisayarınız IPv4 192.0.2.100:80 (veya IPv6 2001: db8: abcd :: 1234: 80) 'de dinlemek gibi bir şey yapabilir.

Ancak, "::: 80" dinlediğiniz için, bilgisayarınız yalnızca gelen bir IP adresinde 80 numaralı bağlantı noktasını dinlemiyor, herhangi bir IPv6 adresindeki 80 numaralı bağlantı noktasını dinliyorsunuz .

Hangi arayüzü dinlediğiniz konusunda neden seçici olmak istiyorsunuz? Eh, bu özelliği kullanmamın bir yolu, bazen, bilgisayarın geridöngü arabirimini dinlemektir. (Birden fazla ağ kartı arabiriminiz olduğunu söylediğimde bunu hatırladım ... bunun söylememin bir nedeni var. Gerçek bir fiziksel ağ bağlantınız olduğunu ve ayrıca geridönüşümlü bir arabirime sahip olduğunuzu tahmin ediyorum. Bugünlerde çoğu bilgisayar türü.) Bunu SSH tüneli ile yapıyorum. Sonra yerel bir VNC görüntüleyicisinin SSH tünelinin yerel ucuna bağlanmasını sağlamak gibi bir şey yapabilirim. SSH tünelinin geri döngü arayüzünü dinletmesini sağlayarak, SSH tünelinin fiziksel ağ arayüzlerinden birinden gelen trafiği dinleyeceğinden endişelenmeme gerek yok. Yani,

Bazı durumlarda, 0.0.0.0 veya :: temel olarak RFC 4291 bölüm 2.5.2 tarafından belirtildiği şekilde "belirtilmemiş" adres anlamına gelir."Bir adresin yokluğunu gösterir" diyor. Bunu, yazılımın "geçersiz" bir adrese (örneğin bir bilgisayarın atanmış bir adresi yoksa) olduğu gibi, görüntülenecek belirli bir adresin olmadığı bir yere yönlendirmeye çalıştığını gördüm. Bununla birlikte, bu durumda, :: veya 0.0.0.0 "bilinmeyen" bir adresi ifade eder. Bu nedenle, DİNLEME bağlantı noktalarının tümü "bilinmiyor" olarak gösteriliyor. Yerleşik bir bağlantı için, uzak ucun kim olduğunu biliyorsunuz çünkü onlarla iletişim kuruyorsunuz. “DİNLEME” bağlantısı için yepyeni konuşmaları dinliyorsunuz. Bu trafik, muhtemelen dünyanın herhangi bir yerinden gelebilir. Gelen trafik herhangi bir adresten gelebilir. Ve nestat'ın gösterme şekli, tüm sıfırların adresini belirtmektir. Kullanılacak belirli bir adres olmadığından,

Yazılımın tüm ağ arayüzlerinde dinlemesinin çok yaygın bir şey olduğunu not ederek tamamlayacağım. Bazı yazılımlar yalnızca belirli bir İnternet adresini veya belirli bir ağ kartını dinlemek üzere yapılandırılabilir. Ve bu biraz daha güvenli olabilir, çünkü yazılım geçerli bir trafiğin beklenmediği yerlerde dinlemiyordur. Bu saldırı yeteneğini sınırlayabilir. Bununla birlikte, pek çok yazılım böyle bir seçeneğe sahip değildir veya böyle bir seçenek bir şekilde gömülmüş / gizlenmiştir. Bu nedenle, tüm ağ kartlarını dinlemek süper korkunç bir şey değil. Oldukça yaygın. Ayrıca, yazılımın belirli bir ağ bağlantı noktasında trafik almasını engellemek istiyorsanız, istenmeyen trafiği güvenlik duvarı ile engellemek de dahil olmak üzere başka yollar da vardır. Bunu yaparsanız, güvenlik duvarı trafiği engelleyebilir ancak (web) sunucusu bu ağ arayüzündeki trafiği hala dinleyebilir. Bu durumda, sunucu bu arayüz üzerinde hiçbir zaman trafik çekmeyecek, ancak netstat hala sunucunun dinlediğini bildiriyor (o sunucuya hiç erişmeyen trafik için). Netstat'ın sunucu yazılımının tüm arayüzleri dinlediğini bildirmesi çok yaygındır ve bu nedenle özellikle endişe edilecek bir şey değildir.

Son olarak, bu sorunun ve bu cevabın Linux'a özgü olmadığını söyleyeceğim. (Bundan bahsediyorum çünkü bu sorudaki "Linux" etiketini görüyorum.) Gösterilen komut satırı parametreleri ve gösterilen örnek çıktı Linux'tan gelmiş olabilir ve farklı işletim sistemleri işleri biraz farklı gösterebilir. Ancak, :: ve 0.0.0.0 konusu hakkında, netstat'ın bu konuda çalışma şekli BSD veya Microsoft Windows çalıştıran bir makinede (ve muhtemelen birçok başka sistemde) aynıdır.


8

Diğerlerinin dediği gibi, bu bağlam için doğal IPv6 gösterimidir.

İlgili standartları alıntılayalım ve yorumlayalım:

::: * == 0000.0000.0000.0000.0000.0000.0000.0000: *

http://tools.ietf.org/html/rfc5952#section-4 , kanonik (sadece olası bir kısa yol değil) IPv6 adreslerinin şöyle olduğunu söyler :

  • karakterleri a-fküçük harfle onaltılı olarak yazınız.
  • her 2 bayta göre gruplandırılmış :
  • baştaki 0'ın kaldırılması GEREKİR . 0000olur 0.
  • en uzun dizi :0:0:0: MUST dönüştürülebilir ::. Sadece bir kez yapılabilir veya belirsizliğe yol açabilir.

Yani :::*:

  • 0000:0000:0000:0000:0000:0000:0000herhangi bir bağlantı noktasında ( :*)
  • == 0:0:0:0:0:0:0(0 kaldırmayı takip ediyor)
  • == ::(ardışık sıfır daralma)

0000.0000.0000.0000.0000.0000.0000.0000: * == belirtilmemiş adres

http://tools.ietf.org/html/rfc4291#section-2.5.2 "belirtilmemiş adres" i tanımlar:

0: 0: 0: 0: 0: 0: 0: 0 adresi belirtilmemiş adres olarak adlandırılır. Asla herhangi bir düğüme atanmamalıdır. Bir adresin olmadığını gösterir. Kullanımına bir örnek, başlangıç ​​yapan bir ana bilgisayar tarafından kendi adresini öğrenmeden önce gönderilen herhangi bir IPv6 paketinin Kaynak Adresi alanındadır.

Belirtilmemiş adres, IPv6 paketlerinin hedef adresi olarak veya IPv6 Yönlendirme başlıklarında kullanılmamalıdır. Kaynak adresi belirtilmemiş olan bir IPv6 paketi asla bir IPv6 yönlendiricisi tarafından iletilmemelidir.

Bu, bu durumda olduğu gibi bir N / A sütunu için iyi bir seçimdir.

Yani ::bir değil localhost de hangi Aynı belge diyor, ::1.

On netstat1,60, çıktıda protokoller okumak tcp6ve udp6daha iyi neler olduğunu göstermek IPv6 için, örneğin:

tcp6       0      0 :::22                   :::*                    LISTEN      1201/sshd
udp6       0      0 :::5353                 :::*                                1449/avahi-daemon:

Ayrıca bakınız:


3

IPv6 adresini ifade eder. IPv6'da değiştiriciyi 0kullanarak dizisini yoğunlaştırabiliriz.::

Örneğin,

0: 0: 0: 0: 0: 0: 0: 1

olarak yazılabilir

:: 1

Ancak herhangi bir Ipv6 eğitimine bakabileceğiniz bu konuda uyulması gereken özel kurallar var.


2

:: 1, IPv6 için yerel ana bilgisayardır, IPv4 için 127.0.0.1 gibi.

::: * 0: 0: 1: * (IPv6 0: 0: 0, port *) 'un kısa versiyonudur, IPv4 0.0.0.0:* gibidir. Bunların her ikisi de yabancı adres sütununda yabancı adres sütununun olmadığı anlamına gelir. Dinleme soketleri durumunda, bağlı bir yabancı adresin (henüz) olmadığı açıktır. Udp soketleri durumunda normalde bağlı yabancı adresleriniz yoktur, bu yüzden bunlar 0.0.0.0:* ile de listelenmiştir.


Oy verenlere: Yorum yapabilir misiniz?
Werner Henze


0

Bilmeyi merak ediyorum: Yerel Adres'de ::: ne anlama geliyor?

Netstat'ın linux sürümü şu notları kullanır: burada IP adresi çıplak olarak gösterilir *.

Yani ::: 111, bir IP :: ve 111 bir bağlantı noktası anlamına gelir.

:: bir sıfır sırasının :: ile değiştirilebileceği kuralı kullanarak yoğunlaşmış formda bir IPv6 adresidir. Tamamen yazılan 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000 kadar eşittir.

IPv4'te olduğu gibi, tüm sıfırlar adresi (belirtilmemiş adres olarak bilinir), yer tutucu değeri olarak kullanılır. Yerel bir adres söz konusu olduğunda, soketin tüm IPv6 arabirimlerini (ve muhtemelen netstat'ın göstermediği soket seçeneklerine bağlı olarak tüm IPv4 arabirimlerini) dinlediği anlamına gelir.

Yabancı Adres'de 0.0.0.0:* ve ::: * nedir?

Bu, soketin belirli bir yabancı adrese bağlı olmadığı anlamına gelir. :: veya 0.0.0.0 belirtilmemiş bir IP adresini belirtir (sırasıyla IPv4 veya IPv6 için) ve * belirtilmemiş bir bağlantı noktasını belirtir.

TCP için bu sadece gelen bağlantıları dinleyen soketler için geçerlidir. Bir bağlantıyı kabul etmek için "kabul et" çağrıldığında, tanımlanmış bir uzak IP ve port ile ayrı bir soket oluşturulur.

UDP için bağlantıları kabul etme kavramı yoktur. Yabancı adresi ::: * olan bir UDP soketine bağlı bir uygulama, paketleri almak ve nereden geldiklerini belirlemek için "recvfrom" API çağrısını ve paketleri belirli bir adrese göndermek için "sendto" API çağrısını kullanır.

* Bu gösterim talihsizdir, çünkü görüntülenen bir dizgenin netstat'ta başka yerlerden farklı şeyler ifade ettiği anlamına gelir. Çoğu bağlamda 3FFE :: 1234: 5678, IP adresi 3FFE: 0000: 0000: 0000: 0000: 0000: 1234: 5678 anlamına gelir, ancak linux netstat çıktısında 3FFE: 0000: 0000: 0000: 0000: 0000 IP adresi anlamına gelir. : 0000: 1234 ve liman 5678. Netstat'ın karşıtlıktaki windows versiyonu belirsizliği önlemek için IPv6 adreslerini köşeli parantez içine alır.

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.