Что такое: в локальном адресе вывода netstat?

это вывод netstat-tulpn, который я получаю:

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

мне интересно знать:
что значит ::: в локальном адресе означает? А что такое 0.0.0.0:* и :::* в чужой адрес?

9
задан Braiam
19.01.2023 21:54 Количество просмотров материала 2962
Распечатать страницу

6 ответов

Как упоминают многие другие ответы,:: представляет все нули, и тогда netstat может показывать двоеточие после адреса, так что вы получите три двоеточия.

Что то я не видел ни в одной из этих ответов является ответ на вопрос о том, что это действительно означает (в данном случае).

в случае netstat:: (в IPv6) или 0.0.0.0 (в IPv4) в основном означает "любой".

Так, програмное обеспечение слушает на порте 80 TCP (порте HTTP) на любом адреса.

Если у вас есть несколько интерфейсов сетевой карты (что вы и делаете, как я объясню через мгновение), вы можете прослушивать только определенный адрес. Например, с некоторым программным обеспечением можно сделать что-то вроде прослушивания HTTP-сервером сетевой карты, использующей проводной Ethernet, но не отвечающей на сетевую карту, использующую беспроводную сеть. Если вы сделали это, то ваш компьютер может сделать что-то вроде listen on IPv4 192.0.2.100: 80 (или IPv6 2001: db8: abcd:: 1234: 80).

но, так как вы слушаете"::: 80", ваш компьютер не слушает трафик порта 80 только на одном входящем IP-адресе, вы слушаете трафик порта 80 на любой IPv6-адрес.

Почему вы когда-нибудь хотите быть придирчивым о том, какой интерфейс вы слушаете на? Ну, один из способов я использовал эту возможность, иногда, чтобы иметь компьютер слушать интерфейс замыкания на себя. (Помните, когда я сказал, что у вас есть несколько сетей интерфейсы карт... это одна из причин, почему я так сказал. Я предполагаю, что у вас есть реальное физическое сетевое соединение, и что у вас также есть интерфейс обратной связи. Это наиболее типичная настройка для большинства типов компьютеров в наши дни.) Я делаю это с SSH. Затем я могу сделать что-то вроде подключения локального средства просмотра VNC к локальному концу туннеля SSH. Имея туннель SSH слушать на интерфейс обратной связи, мне не нужно беспокоиться, что туннель SSH может слушать трафик, который приходит в один из физических сетевых интерфейсов. Итак, SSH туннель будет видеть только трафик, который идет с моего компьютера.

в некоторых случаях 0.0.0.0 или:: в основном означает "неуказанный" адрес, как указано RFC 4291 раздел 2.5.2 который говорит: "Это указывает на отсутствие адреса."Я иногда видел это, когда программное обеспечение пытается ссылаться на "недопустимый" адрес( например, если компьютер не имеет назначенного адреса, возможно), где нет конкретного адрес для отображения. Однако в этом случае :: или 0.0.0.0 относится к "неизвестному" адресу. Именно поэтому все прослушиваемые порты отображаются как "неизвестные". Для установленного соединения вы знаете, кто удаленный конец, потому что вы связываетесь с ними. Для подключения "прослушивания" вы слушаете совершенно новые разговоры. Это движение может исходить, ну, возможно, из любой точки мира. Входящий трафик может поступать с любого адреса. И, кстати, что nestat показывает, что это укажите адрес всех нулей. Так как нет никакого определенного адреса для использования," неуказанный " адрес кажется вполне подходящим.

Я просто закончу, отметив, что программное обеспечение прослушивает все сетевые интерфейсы-очень распространенная вещь. Некоторые программы могут быть настроены на прослушивание только определенного интернет-адреса или конкретной сетевой карты. И это может быть немного более безопасным, потому что тогда программное обеспечение не слушает, где не ожидается никакого допустимого трафика. Это может ограничить способность к атаке. Тем не менее, у многих программ нет такой опции, или такая опция несколько скрыта/скрыта. Так, прослушивает все сетевые карты это не супер страшное. Это довольно распространенное явление. И, если вы хотите, чтобы программное обеспечение не получало трафик на определенный сетевой порт, есть другие способы сделать это, включая блокировку нежелательного трафика с помощью брандмауэра. В этом случае брандмауэр может блокировать трафик, но (веб -) сервер может продолжать прослушивать трафик на сетевом интерфейсе. В этом случае сервер никогда не получит трафик на этом интерфейсе, но netstat все равно сообщит, что сервер прослушивает (для этого трафика, который никогда не достигнет этого сервера). Увидев отчет команды netstat, что программное обеспечение сервера прослушивает все интерфейсы очень часто, и поэтому не стоит особенно волноваться.

наконец, я упомяну, что этот вопрос, и этот ответ, не только в Linux. (Я упоминаю об этом, потому что Я вижу тег "Linux" по этому вопросу.) Показанные параметры командной строки и показанный пример вывода, возможно, пришли из Linux, и разные операционные системы могут отображать вещи немного по-другому. Тем не менее, о теме :: и 0.0.0.0, способ работы netstat в этом отношении идентичен на машине под управлением BSD или Microsoft Windows (и, предположительно, многих других систем).

20
отвечен TOOGAM 2023-01-21 05:42

как говорили другие, это естественная нотация IPv6 для этого контекста.

приведем и интерпретируем соответствующие стандарты:

:::* == 0000.0000.0000.0000.0000.0000.0000.0000:*

http://tools.ietf.org/html/rfc5952#section-4 говорит о том, что canonical (не только возможный сокращенный) IPv6-адреса:

  • написано в hex с символов a-f нижний регистр.
  • группировать каждые 2 байта по :
  • 0 и должны быть удалены. 0000 становится 0.
  • самая длинная последовательность :0:0:0: должны преобразован в ::. Может быть сделано только один раз, или приведет к двусмысленности.

So :::* означает:

  • 0000:0000:0000:0000:0000:0000:0000 на любой порт (:*)
  • ==0:0:0:0:0:0:0 (удаление трейлинга 0)
  • ==:: (последовательное сокращение нуля)

0000.0000.0000.0000.0000.0000.0000.0000.0000:* = неуказанный адрес

http://tools.ietf.org/html/rfc4291#section-2.5.2 определяет "не указан адрес":

адрес 0:0:0:0:0:0:0:0 называется неопределенный адрес. Она никогда не должен быть назначен ни одному узлу. Это указывает на отсутствие адрес. Один из примеров его использования находится в адресе источника поле любые пакеты IPv6, отправленные инициализирующим узлом до того, как он узнал собственный адрес.

неуказанный адрес не должен использоваться в качестве адреса назначения пакетов IPv6 или в заголовках маршрутизации IPv6. Пакет IPv6 с адрес источника неуказанного никогда не должен пересылаться по IPv6 маршрутизатор.

что делает его хорошим выбором для столбца N/A, как в этом случае.

So :: это не localhost, который в том же документе говорится в ::1.

On netstat 1.60, протоколы на выходе читаются tcp6 и udp6 для IPv6, которые показывают лучше, что происходит, например:

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

Читайте также:

7
отвечен Ciro Santilli 新疆改造中心 六四事件 法轮功 2023-01-21 07:59

это относится к IPv6-адрес. В IPv6 мы можем заменить последовательность 0с помощью :: модификатор

например,

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

можно записать как

::1

но есть определенные правила, которые следует соблюдать в этом отношении, которые вы можете посмотреть на любом IPv6 учебник

3
отвечен anakin 2023-01-21 10:16

:: 1 является локальным хостом для IPv6, например 127.0.0.1 для IPv4.

::::* короткая версия 0:0: 1:* (IPv6 0:0: 0, порт *), это как IPv4 0.0.0.0:*. Оба из них в столбце внешнего адреса означают, что нет столбца внешнего адреса. В случае прослушиваемых сокетов ясно, что нет (пока) подключенного внешнего адреса. В случае сокетов udp у вас обычно нет подключенных внешних адресов, поэтому они также перечислены с 0.0.0.0:*.

2
отвечен Werner Henze 2023-01-21 12:33

::::* будет ваш localhost / цикл обратно в IPv6:)

в основном, у вас есть службы прослушивания и подключения к службам локально.

0
отвечен Jason 2023-01-21 14:50

Мне интересно знать: что означает::: в местном адресе?

версия netstat для linux использует обозначение : где IP-адрес отображается голым*.

Итак::: 111 означает IP::: и порт 111.

:: - это IPv6-адрес в сжатой форме, использующий правило, что выполнение нулей может быть заменено на::. Выписаны в полном объеме это equivilent к 0000:0000:0000:0000:0000:0000:0000:0000 .

как с IPv4 все нулевой адрес (известный как неуказанный адрес) используется в качестве значения-заполнителя. В случае локального адреса это означает, что сокет прослушивает все интерфейсы IPv6 (и, возможно, все интерфейсы IPv4, в зависимости от параметров сокета, которые netstat не показывает).

а что такое 0.0.0.0:* и ::: * в иностранном адресе?

Это означает, что сокет не привязан к определенному внешний адрес. :: или 0.0.0.0 указывает на неуказанный IP-адрес (для IPv4 или IPv6 соответственно) и * указывает на неуказанный порт.

для TCP это относится только к сокетам, прослушивающим входящие соединения. Когда" accept " вызывается, чтобы принять соединение, отдельный сокет создается с определенным удаленным IP и портом.

для UDP отсутствует понятие приема соединений. Приложение, привязанное к сокету UDP с внешним адресом::: * использует вызов API" recvfrom " для приема пакетов и определения их источника и вызов API" sendto " для отправки пакетов на определенный адрес.

* эта запись неудачна, потому что она означает, что отображаемая строка означает разные вещи в netstat в другом месте. В большинстве случаев 3FFE::1234:5678 будет означать, что IP-адрес 3FFE:0000:0000:0000:0000:0000:1234:5678 но в Linux команды netstat вывод это означает, что IP-адрес 3FFE:0000:0000:0000:0000:0000:0000:1234 и порт 5678 . Версия netstat для windows, напротив, окружает IPv6-адреса в квадратных скобках, чтобы избежать двусмысленности.

0
отвечен plugwash 2023-01-21 17:07

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх