::: trong Địa chỉ cục bộ của đầu ra netstat là gì?


37

Đây là đầu ra của netstat -tulpn mà tôi nhận được:

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

Tôi tò mò muốn biết: :::Địa chỉ địa phương nghĩa là gì? Và là những gì 0.0.0.0:*:::*ở nước ngoài Địa chỉ?


3
Bạn có thể bỏ qua các số 0 đứng đầu trong IPv6, để chỉ cần bỏ dấu hai chấm.
Louis

Thật ra tôi đã nói quá sớm. Tôi không biết tại sao có ba dấu hai chấm thay vì hai, +1. Tôi đoán cái cuối cùng là chỉ cổng.
Louis

Câu trả lời:


22

Như nhiều câu trả lời khác đề cập, :: đại diện cho tất cả các số không, và sau đó netstat có thể hiển thị dấu hai chấm sau một địa chỉ, do đó bạn nhận được ba dấu hai chấm.

Những gì tôi đã không nhìn thấy trong bất kỳ câu trả lời nào là một câu trả lời cho câu hỏi về điều đó thực sự có nghĩa là gì (trong trường hợp này).

Trong trường hợp netstat, :: (trong IPv6) hoặc 0.0.0.0 (trong IPv4) về cơ bản có nghĩa là "bất kỳ".
Vì vậy, phần mềm đang lắng nghe trên cổng TCP 80 (cổng HTTP) trên bất kỳ địa chỉ nào.

Nếu bạn có nhiều giao diện card mạng (mà bạn làm, như tôi sẽ giải thích ngay sau đây), bạn chỉ có thể nghe trên một địa chỉ cụ thể. Ví dụ: với một số phần mềm, bạn có thể làm một cái gì đó như làm cho máy chủ HTTP của bạn nghe trên card mạng sử dụng Ethernet có dây, nhưng không phản hồi với card mạng sử dụng mạng không dây. Nếu bạn đã làm điều đó, thì máy tính của bạn có thể làm một cái gì đó như nghe trên IPv4 192.0.2.100:80 (hoặc IPv6 2001: db8: abcd :: 1234: 80).

Nhưng, vì bạn đang nghe "::: 80", máy tính của bạn không nghe lưu lượng cổng 80 trên chỉ một địa chỉ IP đến, bạn đang nghe lưu lượng cổng 80 trên bất kỳ địa chỉ IPv6 nào .

Tại sao bạn lại muốn kén chọn giao diện nào bạn đang nghe? Chà, đôi khi tôi đã sử dụng khả năng này, đôi khi, để máy tính lắng nghe giao diện loopback. (Hãy nhớ khi tôi nói rằng bạn có nhiều giao diện card mạng ... đây là một lý do tôi đã nói vậy. Tôi đoán bạn có kết nối mạng vật lý thực sự và bạn cũng có giao diện loopback. Đó là thiết lập điển hình nhất cho hầu hết các loại máy tính hiện nay.) Tôi làm điều đó với SSH đường hầm. Sau đó, tôi có thể làm một cái gì đó như làm cho trình xem VNC cục bộ kết nối với đầu cuối cục bộ của đường hầm SSH. Bằng cách nghe đường hầm SSH trên giao diện loopback, tôi không cần lo lắng rằng đường hầm SSH có thể lắng nghe lưu lượng truy cập đến từ một trong các giao diện mạng vật lý. Vì thế,

Trong một số trường hợp, 0.0.0.0 hoặc :: về cơ bản có nghĩa là địa chỉ "không xác định", như được chỉ định bởi RFC 4291, mục 2.5.2trong đó nói "Nó chỉ ra sự vắng mặt của một địa chỉ." Đôi khi tôi đã thấy điều này khi phần mềm cố gắng đề cập đến một địa chỉ "không hợp lệ" (như nếu máy tính không có địa chỉ được gán, có lẽ), nơi không có địa chỉ cụ thể để hiển thị. Tuy nhiên, trong trường hợp này, :: hoặc 0.0.0.0 đề cập đến một địa chỉ "không xác định". Đó là lý do tại sao tất cả các cổng LISTENING hiển thị là "không xác định". Đối với một kết nối được thiết lập, bạn biết đầu cuối từ xa là ai, bởi vì bạn đang liên lạc với họ. Đối với kết nối "NGHE", bạn đang lắng nghe các cuộc hội thoại hoàn toàn mới. Giao thông đó có thể đến từ, tốt, có thể là bất cứ nơi nào trên thế giới. Lưu lượng truy cập đến có thể đến từ bất kỳ địa chỉ. Và, cách mà Nestat hiển thị đó là xác định địa chỉ của tất cả các số không. Vì không có địa chỉ cụ thể để sử dụng,

Tôi sẽ kết thúc bằng cách lưu ý rằng có phần mềm lắng nghe trên tất cả các giao diện mạng là một điều rất phổ biến. Một số phần mềm có thể được cấu hình để chỉ nghe một địa chỉ Internet cụ thể hoặc có thể là một card mạng cụ thể. Và điều đó có thể an toàn hơn một chút, vì khi đó phần mềm không lắng nghe khi không có lưu lượng truy cập hợp lệ. Điều đó có thể hạn chế khả năng tấn công. Tuy nhiên, rất nhiều phần mềm không có tùy chọn như vậy hoặc tùy chọn như vậy có phần bị chôn vùi / ẩn đi. Vì vậy, nghe trên tất cả các card mạng không phải là một điều siêu khủng khiếp. Nó khá phổ biến. Và, nếu bạn muốn ngăn phần mềm nhận lưu lượng trên một cổng mạng cụ thể, có nhiều cách khác để thực hiện điều đó, bao gồm chặn lưu lượng không mong muốn bằng tường lửa. Nếu bạn làm điều đó, tường lửa có thể chặn lưu lượng, nhưng máy chủ (web) vẫn có thể lắng nghe lưu lượng trên giao diện mạng đó. Trong trường hợp đó, máy chủ sẽ không bao giờ có lưu lượng truy cập trên giao diện đó, nhưng netstat vẫn sẽ báo cáo rằng máy chủ đang lắng nghe (đối với lưu lượng truy cập đó sẽ không bao giờ đến được máy chủ đó). Xem báo cáo netstat rằng phần mềm máy chủ đang lắng nghe trên tất cả các giao diện là rất phổ biến, và vì vậy nó không phải là điều đáng báo động.

Cuối cùng, tôi sẽ đề cập rằng câu hỏi này và câu trả lời này không dành riêng cho Linux. (Tôi đang đề cập đến điều này vì tôi thấy thẻ "Linux" trong câu hỏi này.) Các tham số dòng lệnh được hiển thị và đầu ra ví dụ được hiển thị, có thể đến từ Linux và các hệ điều hành khác nhau có thể hiển thị mọi thứ hơi khác nhau. Tuy nhiên, về chủ đề :: và 0.0.0.0, cách thức hoạt động của netstat về vấn đề này giống hệt trên một máy chạy BSD hoặc Microsoft Windows (và có lẽ là nhiều hệ thống khác).


8

Như những người khác đã nói, đó là ký hiệu IPv6 tự nhiên cho bối cảnh này.

Hãy trích dẫn và giải thích các tiêu chuẩn có liên quan:

::: * == 0000.0000.0000.0000.0000.0000.0000.0000: *

http://tools.ietf.org/html/rfc5952#section-4 nói rằng các địa chỉ IPv6 chuẩn (không chỉ là một tốc ký có thể) là:

  • được viết bằng hex với các ký tự a-fchữ thường.
  • được nhóm mỗi 2 byte theo :
  • hàng đầu 0 PHẢI được gỡ bỏ. 0000trở thành 0.
  • chuỗi dài nhất :0:0:0: PHẢI được chuyển đổi thành ::. Chỉ có thể được thực hiện một lần, hoặc sẽ dẫn đến sự mơ hồ.

Vậy :::*có nghĩa là:

  • 0000:0000:0000:0000:0000:0000:0000trên bất kỳ cổng nào ( :*)
  • == 0:0:0:0:0:0:0(xóa 0)
  • == ::(co không liên tiếp)

0000.0000.0000.0000.0000.0000.0000.0000: * == địa chỉ không xác định

http://tools.ietf.org/html/rfc4291#section-2.5.2 định nghĩa "địa chỉ không xác định":

Địa chỉ 0: 0: 0: 0: 0: 0: 0: 0 được gọi là địa chỉ không xác định. Nó không bao giờ được gán cho bất kỳ nút nào. Nó chỉ ra sự vắng mặt của một địa chỉ. Một ví dụ về việc sử dụng nó là trong trường Địa chỉ nguồn của bất kỳ gói IPv6 nào được gửi bởi máy chủ khởi tạo trước khi nó tìm hiểu địa chỉ của chính nó.

Địa chỉ không xác định không được sử dụng làm địa chỉ đích của gói IPv6 hoặc trong các tiêu đề định tuyến IPv6. Một gói IPv6 có địa chỉ nguồn không xác định không bao giờ được chuyển tiếp bởi bộ định tuyến IPv6.

điều này làm cho nó trở thành một lựa chọn tốt cho cột N / A như trong trường hợp này.

Vì vậy, không phải:: là , mà cùng một tài liệu nói là tại . localhost::1

Trên netstat1.60, các giao thức trên đầu ra đọc tcp6udp6cho IPv6, hiển thị tốt hơn những gì đang diễn ra, ví dụ:

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

Xem thêm:


3

Nó đề cập đến địa chỉ IPv6. Trong IPv6, chúng ta có thể ngưng tụ một chuỗi 0các ::bộ sửa đổi bằng cách sử dụng công cụ sửa đổi

Ví dụ,

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

có thể được viết như

:: 1

Nhưng có những quy tắc cụ thể cần tuân thủ trong vấn đề này mà bạn có thể tra cứu trên bất kỳ hướng dẫn nào của Ipv6


2

:: 1 là localhost cho IPv6, như 127.0.0.1 cho IPv4.

::: * là phiên bản ngắn của 0: 0: 1: * (IPv6 0: 0: 0, cổng *), nó giống như IPv4 0.0.0.0:*. Cả hai trong cột địa chỉ nước ngoài có nghĩa là không có cột địa chỉ nước ngoài. Trong trường hợp các ổ cắm nghe, rõ ràng là không có (chưa) một địa chỉ nước ngoài được kết nối. Trong trường hợp các ổ cắm udp bạn thường không có địa chỉ nước ngoài được kết nối, do đó, các địa chỉ này cũng được liệt kê với 0.0.0.0:*.


Để các downvoters: bạn có thể vui lòng bình luận?
Werner Henze

0

::: * Sẽ trở lại localhost / loop của bạn trong IPv6 :)

Về cơ bản, bạn có dịch vụ nghe và kết nối với dịch vụ tại địa phương.


1
Nếu tôi diễn giải tools.ietf.org/html/rfc4291#section-2.5.2 một cách chính xác, ::thì đó không phải là loopback: đó là địa chỉ không xác định và loopback là tại ::1.
Ciro Santilli 心 心

Tôi đồng ý với Ciro: :: 1 là loopback, không phải ::: *.
TUYỆT VỜI 31/1/2015

0

Tôi tò mò muốn biết: ::: trong Địa chỉ địa phương nghĩa là gì?

Phiên bản linux của netstat sử dụng ký hiệu: trong đó địa chỉ IP được hiển thị trần *.

Vậy ::: 111 có nghĩa là IP của :: và cổng 111.

:: là một địa chỉ IPv6 ở dạng cô đọng bằng cách sử dụng quy tắc rằng một số không có thể được thay thế bằng ::. Viết đầy đủ, nó tương đương với 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000.

Như với IPv4, tất cả địa chỉ số không (được gọi là địa chỉ không xác định) được sử dụng làm giá trị giữ chỗ. Trong trường hợp địa chỉ cục bộ, điều đó có nghĩa là ổ cắm đang lắng nghe trên tất cả các giao diện IPv6 (và có thể tất cả các giao diện IPv4 cũng tùy thuộc vào các tùy chọn ổ cắm mà netstat không hiển thị).

Và 0.0.0.0:* và ::: * trong Địa chỉ nước ngoài là gì?

Nó có nghĩa là ổ cắm không bị ràng buộc với một địa chỉ nước ngoài cụ thể. :: hoặc 0.0.0.0 chỉ ra một địa chỉ IP không xác định (tương ứng với IPv4 hoặc IPv6) và * chỉ ra một cổng không xác định.

Đối với TCP, điều này chỉ áp dụng cho các socket lắng nghe các kết nối đến. Khi "accept" được gọi để chấp nhận kết nối, một socket riêng biệt được tạo với một cổng và IP từ xa được xác định.

Đối với UDP không có khái niệm chấp nhận kết nối. Một ứng dụng được liên kết với ổ cắm UDP có địa chỉ nước ngoài là ::: * sử dụng lệnh gọi API "recvfrom" để nhận gói tin và xác định chúng đến từ đâu và lệnh gọi API "sendto" để gửi gói đến một địa chỉ cụ thể.

* Ký hiệu này là không may vì nó có nghĩa là một chuỗi được hiển thị có nghĩa là những thứ khác nhau trong netstat đến nơi khác. Trong hầu hết các bối cảnh 3FFE :: 1234: 5678 có nghĩa là địa chỉ IP 3FFE: 0000: 0000: 0000: 0000: 0000: 1234: 5678 nhưng trong đầu ra netstat linux có nghĩa là địa chỉ IP 3FFE: 0000: 0000: 0000: 0000: 0000 : 0000: 1234 và cổng 5678. Phiên bản windows của netstat theo độ tương phản bao quanh các địa chỉ IPv6 trong ngoặc vuông để tránh sự mơ hồ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.