Ini adalah output dari netstat -tulpn yang saya dapatkan:
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
Saya ingin tahu: apa arti dari :::
Alamat Lokal? Dan apa 0.0.0.0:*
dan :::*
di Alamat Asing?
networking
netstat
Pradipta
sumber
sumber
Jawaban:
Seperti yang disebutkan oleh banyak jawaban lainnya, :: mewakili semua nol, dan kemudian netstat dapat menunjukkan titik dua setelah alamat, maka Anda mendapat tiga titik dua.
Apa yang tidak saya lihat dalam jawaban ini adalah tanggapan terhadap pertanyaan tentang apa artinya itu (dalam hal ini).
Dalam kasus netstat, :: (di IPv6) atau 0.0.0.0 (di IPv4) pada dasarnya berarti "apa saja".
Jadi, perangkat lunak mendengarkan pada port TCP 80 (port HTTP) pada salah satu alamat.
Jika Anda memiliki beberapa antarmuka kartu jaringan (yang Anda lakukan, seperti yang akan saya jelaskan sebentar lagi), Anda dapat mendengarkan hanya pada alamat tertentu. Misalnya, dengan beberapa perangkat lunak, Anda dapat melakukan sesuatu seperti membuat server HTTP Anda mendengarkan pada kartu jaringan yang menggunakan Ethernet kabel, tetapi tidak menanggapi kartu jaringan yang menggunakan jaringan nirkabel. Jika Anda melakukannya, maka komputer Anda mungkin melakukan sesuatu seperti mendengarkan pada IPv4 192.0.2.100:80 (atau IPv6 2001: db8: abcd :: 1234: 80).
Tapi, karena Anda mendengarkan "::: 80", komputer Anda tidak mendengarkan lalu lintas port 80 hanya pada satu alamat IP yang masuk, Anda mendengarkan lalu lintas port 80 pada alamat IPv6 apa pun .
Mengapa Anda ingin pilih-pilih tentang antarmuka yang Anda dengarkan? Nah, salah satu cara saya menggunakan kemampuan ini, kadang-kadang, adalah membuat komputer mendengarkan antarmuka loopback. (Ingat ketika saya mengatakan Anda memiliki beberapa antarmuka kartu jaringan ... ini adalah salah satu alasan saya mengatakan itu. Saya kira Anda memiliki koneksi jaringan fisik yang nyata, dan bahwa Anda juga memiliki antarmuka loopback. Itu adalah pengaturan paling umum untuk kebanyakan jenis komputer akhir-akhir ini.) Saya melakukannya dengan tunneling SSH. Lalu saya bisa melakukan sesuatu seperti membuat penampil VNC lokal terhubung ke ujung lokal dari terowongan SSH. Dengan meminta terowongan SSH mendengarkan pada antarmuka loopback, saya tidak perlu khawatir bahwa terowongan SSH mungkin mendengarkan lalu lintas yang masuk dari salah satu antarmuka jaringan fisik. Begitu,
Dalam beberapa kasus, 0.0.0.0 atau :: pada dasarnya berarti alamat "tidak ditentukan", sebagaimana ditentukan oleh RFC 4291 bagian 2.5.2yang mengatakan "Ini menunjukkan tidak adanya alamat." Saya kadang-kadang melihat ini ketika perangkat lunak mencoba merujuk ke alamat "tidak valid" (seperti jika komputer tidak memiliki alamat yang ditetapkan, mungkin), di mana tidak ada alamat khusus untuk ditampilkan. Namun, dalam kasus ini, :: atau 0.0.0.0 merujuk ke alamat "tidak dikenal". Itulah sebabnya semua port MENDENGARKAN menunjukkan "tidak dikenal". Untuk koneksi yang sudah mapan, Anda tahu siapa ujung jarak jauhnya, karena Anda berkomunikasi dengan mereka. Untuk koneksi "MENDENGARKAN", Anda mendengarkan percakapan baru. Lalu lintas itu bisa datang, mungkin di mana saja di dunia. Lalu lintas masuk dapat berasal dari alamat apa pun. Dan, cara nestat menampilkannya adalah dengan menentukan alamat semua nol. Karena tidak ada alamat khusus untuk digunakan,
Saya hanya akan menyelesaikan dengan memperhatikan bahwa perangkat lunak mendengarkan pada semua antarmuka jaringan adalah hal yang sangat umum. Beberapa perangkat lunak dapat dikonfigurasikan untuk hanya mendengarkan alamat Internet tertentu, atau mungkin kartu jaringan tertentu. Dan itu bisa sedikit lebih aman, karena dengan demikian perangkat lunak tidak mendengarkan di mana tidak ada lalu lintas yang valid diharapkan. Itu mungkin membatasi kemampuan untuk menyerang. Namun, banyak perangkat lunak tidak memiliki opsi seperti itu, atau opsi semacam itu agak terkubur / disembunyikan. Jadi, mendengarkan pada semua kartu jaringan bukanlah hal yang sangat mengerikan. Itu cukup umum. Dan, jika Anda ingin mencegah perangkat lunak dari menerima lalu lintas pada port jaringan tertentu, ada cara lain untuk mencapai itu, termasuk memblokir lalu lintas yang tidak diinginkan dengan firewall. Jika Anda melakukannya, firewall dapat memblokir lalu lintas, tetapi server (web) mungkin masih mendengarkan lalu lintas di antarmuka jaringan itu. Dalam hal ini, server tidak akan pernah mendapatkan lalu lintas di antarmuka itu, tetapi netstat masih akan melaporkan bahwa server mendengarkan (untuk lalu lintas yang tidak akan pernah mencapai server itu). Melihat laporan netstat bahwa perangkat lunak server mendengarkan pada semua antarmuka adalah sangat umum, dan itu bukan sesuatu yang perlu diwaspadai.
Terakhir, saya akan menyebutkan bahwa pertanyaan ini, dan jawaban ini, tidak spesifik untuk Linux. (Saya menyebutkan ini karena saya memang melihat tag "Linux" pada pertanyaan ini.) Parameter baris perintah yang ditunjukkan, dan contoh output yang ditampilkan, mungkin berasal dari Linux, dan sistem operasi yang berbeda mungkin menampilkan hal-hal yang sedikit berbeda. Namun, tentang topik :: dan 0.0.0.0, cara kerja netstat dalam hal ini identik pada mesin yang menjalankan BSD atau Microsoft Windows (dan mungkin banyak sistem lain).
sumber
Seperti yang orang lain katakan, ini adalah notasi IPv6 alami untuk konteks ini.
Mari mengutip dan menafsirkan standar yang relevan:
::: * == 0000.0000.0000.0000.0000.0000.0000.0000: *
http://tools.ietf.org/html/rfc5952#section-4 mengatakan bahwa alamat IPv6 kanonik (bukan hanya singkatan) adalah:
a-f
huruf kecil.:
0000
menjadi0
.:0:0:0:
HARUS dikonversi ke::
. Hanya bisa dilakukan sekali, atau akan menimbulkan ambiguitas.Jadi
:::*
artinya:0000:0000:0000:0000:0000:0000:0000
pada port apa saja (:*
)0:0:0:0:0:0:0
(tertinggal 0 penghapusan)::
(kontraksi nol berturut-turut)0000.0000.0000.0000.0000.0000.0000.0000: * == alamat yang tidak ditentukan
http://tools.ietf.org/html/rfc4291#section-2.5.2 mendefinisikan "alamat yang tidak ditentukan":
yang membuatnya menjadi pilihan yang baik untuk kolom N / A seperti dalam kasus ini.
Begitu
::
juga tidaklocalhost
, di mana dokumen yang sama mengatakan di::1
.Pada
netstat
1.60, protokol pada output membacatcp6
danudp6
untuk IPv6, yang menunjukkan lebih baik apa yang sedang terjadi, misalnya:Lihat juga:
sumber
Itu merujuk ke alamat IPv6. Dalam IPv6 kita dapat menyingkat urutan
0
menggunakan::
pengubahSebagai contoh,
dapat ditulis sebagai
Tetapi ada aturan khusus yang harus diikuti dalam hal ini yang dapat Anda lihat di setiap tutorial Ipv6
sumber
:: 1 adalah localhost untuk IPv6, seperti 127.0.0.1 untuk IPv4.
::: * adalah versi pendek 0: 0: 1: * (IPv6 0: 0: 0, port *), itu seperti IPv4 0.0.0.0:*. Kedua hal ini di kolom alamat asing berarti bahwa tidak ada kolom alamat asing. Dalam hal soket pendengaran jelas bahwa tidak ada (belum) alamat asing yang terhubung. Dalam hal soket udp Anda biasanya tidak menghubungkan alamat asing, jadi ini juga terdaftar dengan 0.0.0.0:*.
sumber
::: * Akan menjadi localhost / loop Anda kembali di IPv6 :)
Pada dasarnya, Anda memiliki layanan mendengarkan dan menghubungkan ke layanan lokal.
sumber
::
adalah tidak loopback: itu adalah alamat yang tidak ditentukan, dan loopback adalah pada::1
.Versi linux dari netstat menggunakan notasi: di mana alamat IP ditampilkan telanjang *.
Jadi ::: 111 berarti IP :: dan port 111.
:: adalah alamat IPv6 dalam bentuk terkondensasi menggunakan aturan bahwa proses nol dapat diganti dengan ::. Ditulis secara penuh sama dengan 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000.
Seperti halnya IPv4, alamat semua nol (dikenal sebagai alamat yang tidak ditentukan) digunakan sebagai nilai placeholder. Dalam kasus alamat lokal itu berarti bahwa soket mendengarkan semua antarmuka IPv6 (dan mungkin semua antarmuka IPv4 juga tergantung pada opsi soket yang tidak ditampilkan oleh netstat).
Ini berarti soket tidak terikat ke alamat asing tertentu. :: atau 0.0.0.0 menunjukkan alamat IP yang tidak ditentukan (masing-masing untuk IPv4 atau IPv6) dan * menunjukkan port yang tidak ditentukan.
Untuk TCP ini hanya berlaku untuk soket yang mendengarkan koneksi masuk. Ketika "accept" dipanggil untuk menerima koneksi, soket terpisah dibuat dengan IP dan port jarak jauh yang ditentukan.
Untuk UDP tidak ada konsep menerima koneksi. Aplikasi yang terikat pada soket UDP dengan alamat asing ::: * menggunakan panggilan API "recvfrom" untuk menerima paket dan menentukan dari mana mereka berasal dan panggilan API "sendto" untuk mengirim paket ke alamat tertentu.
* Notasi ini sangat disayangkan karena itu berarti string yang ditampilkan berarti hal yang berbeda di netstat ke tempat lain. Dalam sebagian besar konteks 3FFE :: 1234: 5678 berarti alamat IP 3FFE: 0000: 0000: 0000: 0000: 0000: 1234: 5678 tetapi dalam linux netstat output itu berarti alamat IP 3FFE: 0000: 0000: 0000: 0000: 0000 : 0000: 1234 dan port 5678. Versi windows netstat sebaliknya mengelilingi alamat IPv6 dalam tanda kurung untuk menghindari ambiguitas.
sumber