Voici la sortie de netstat -tulpn que j'obtiens:
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
Je suis curieux de savoir: que signifie :::
dans l'adresse locale? Et qu'est-ce que 0.0.0.0:*
et :::*
à l'étranger?
networking
netstat
Pradipta
la source
la source
Réponses:
Comme la plupart des autres réponses le mentionnent, :: représente tous les zéros, puis netstat peut afficher deux points après une adresse, vous obtenez donc trois deux points.
Ce que je n'ai vu dans aucune de ces réponses est une réponse à la question de ce que cela signifie vraiment (dans ce cas).
Dans le cas de netstat, :: (en IPv6) ou 0.0.0.0 (en IPv4) signifie fondamentalement "tout".
Ainsi, le logiciel écoute sur le port TCP 80 (le port HTTP) sur l'une des adresses.
Si vous avez plusieurs interfaces de carte réseau (ce que vous faites, comme je l'expliquerai dans un instant), il vous est possible d'écouter uniquement sur une adresse spécifique. Par exemple, avec certains logiciels, vous pourriez faire quelque chose comme faire écouter votre serveur HTTP sur une carte réseau qui utilise Ethernet câblé, mais ne pas répondre à une carte réseau qui utilise un réseau sans fil. Si vous avez fait cela, alors votre ordinateur pourrait faire quelque chose comme écouter sur IPv4 192.0.2.100:80 (ou IPv6 2001: db8: abcd :: 1234: 80).
Mais, puisque vous écoutez "::: 80", votre ordinateur n'écoute pas le trafic du port 80 sur une seule adresse IP entrante, vous écoutez le trafic du port 80 sur n'importe quelle adresse IPv6.
Pourquoi voudriez-vous jamais être pointilleux sur quelle interface vous écoutez? Eh bien, une façon dont j'ai utilisé cette capacité, parfois, est d'avoir un ordinateur pour écouter l'interface de bouclage. (N'oubliez pas que lorsque j'ai dit que vous disposiez de plusieurs interfaces de carte réseau ... c'est une des raisons pour lesquelles j'ai dit cela. Je suppose que vous disposez d'une véritable connexion réseau physique et que vous avez également une interface de bouclage. C'est la configuration la plus courante pour la plupart des types d'ordinateurs de nos jours.) Je le fais avec le tunneling SSH. Ensuite, je peux faire quelque chose comme connecter un visualiseur VNC local à l'extrémité locale d'un tunnel SSH. En faisant écouter le tunnel SSH sur l'interface de bouclage, je n'ai pas à m'inquiéter que le tunnel SSH puisse écouter le trafic provenant de l'une des interfaces réseau physiques. Alors,
Dans certains cas, 0.0.0.0 ou :: signifie fondamentalement l'adresse "non spécifiée", comme spécifié par la RFC 4291 section 2.5.2qui dit "Cela indique l'absence d'adresse". J'ai parfois vu cela quand un logiciel essaie de se référer à une adresse "invalide" (comme si un ordinateur n'a pas d'adresse attribuée, peut-être), où il n'y a pas d'adresse spécifique à afficher. Cependant, dans ce cas, :: ou 0.0.0.0 fait référence à une adresse "inconnue". C'est pourquoi tous les ports LISTENING apparaissent comme "inconnus". Pour une connexion établie, vous savez qui est l'extrémité distante, car vous communiquez avec eux. Pour une connexion "À L'ÉCOUTE", vous écoutez de nouvelles conversations. Ce trafic pourrait provenir de n'importe où dans le monde. Le trafic entrant peut provenir de n'importe quelle adresse. Et, la façon dont nestat affiche c'est de spécifier une adresse de tous les zéros. Puisqu'il n'y a pas d'adresse spécifique à utiliser,
Je terminerai en notant que l'écoute de logiciels sur toutes les interfaces réseau est une chose très courante. Certains logiciels peuvent être configurés pour écouter uniquement une adresse Internet spécifique, ou peut-être une carte réseau spécifique. Et cela peut être un peu plus sécurisé, car le logiciel n'écoute pas là où aucun trafic valide n'est attendu. Cela pourrait limiter une capacité d'attaque. Cependant, beaucoup de logiciels n'ont pas une telle option, ou une telle option est quelque peu enterrée / cachée. Ainsi, écouter sur toutes les cartes réseau n'est pas une chose super terrible. C'est assez courant. Et, si vous souhaitez empêcher les logiciels de recevoir du trafic sur un port réseau spécifique, il existe d'autres moyens d'y parvenir, notamment le blocage du trafic indésirable avec un pare-feu. Si vous faites cela, le pare-feu peut bloquer le trafic, mais le serveur (Web) peut toujours écouter le trafic sur cette interface réseau. Dans ce cas, le serveur n'obtiendra jamais de trafic sur cette interface, mais netstat signalera toujours que le serveur écoute (pour ce trafic qui n'atteindra jamais ce serveur). Voir netstat rapporter que le logiciel serveur écoute sur toutes les interfaces est très courant, et donc ce n'est pas quelque chose de particulièrement alarmant.
Enfin, je mentionnerai que cette question et cette réponse ne sont pas spécifiques à Linux. (Je mentionne cela parce que je vois la balise "Linux" sur cette question.) Les paramètres de ligne de commande affichés et l'exemple de sortie illustré peuvent provenir de Linux et différents systèmes d'exploitation peuvent afficher des choses légèrement différentes. Cependant, sur le sujet de :: et 0.0.0.0, la façon dont netstat fonctionne à cet égard est identique sur une machine exécutant BSD ou Microsoft Windows (et probablement de nombreux autres systèmes).
la source
Comme d'autres l'ont dit, c'est la notation IPv6 naturelle pour ce contexte.
Citons et interprétons les normes pertinentes:
::: * == 0000.0000.0000.0000.0000.0000.0000.0000: *
http://tools.ietf.org/html/rfc5952#section-4 indique que les adresses IPv6 canoniques (et pas seulement un raccourci possible) sont:
a-f
minuscules.:
0000
devient0
.:0:0:0:
DOIT être convertie en::
. Ne peut être fait qu'une seule fois ou entraînerait une ambiguïté.Cela
:::*
signifie donc :0000:0000:0000:0000:0000:0000:0000
sur n'importe quel port (:*
)0:0:0:0:0:0:0
(suppression à la fin de 0)::
(contraction zéro consécutive)0000.0000.0000.0000.0000.0000.0000.0000: * == adresse non spécifiée
http://tools.ietf.org/html/rfc4291#section-2.5.2 définit "l'adresse non spécifiée":
ce qui en fait un bon choix pour une colonne N / A comme dans ce cas.
Ce
::
n'est pas le caslocalhost
, ce que dit le même document::1
.Sur
netstat
1.60, les protocoles en sortie lisenttcp6
etudp6
pour IPv6, qui montrent mieux ce qui se passe, par exemple:Voir également:
la source
Il fait référence à l'adresse IPv6. En IPv6, nous pouvons condenser une séquence de en
0
utilisant le::
modificateurPar exemple,
peut être écrit comme
Mais il y a des règles spécifiques à suivre à cet égard que vous pouvez consulter sur n'importe quel tutoriel Ipv6
la source
:: 1 est l'hôte local pour IPv6, comme 127.0.0.1 pour IPv4.
::: * est la version courte de 0: 0: 1: * (IPv6 0: 0: 0, port *), c'est comme IPv4 0.0.0.0:*. Les deux dans la colonne d'adresse étrangère signifient qu'il n'y a pas de colonne d'adresse étrangère. Dans le cas des prises d'écoute, il est clair qu'il n'y a pas (encore) d'adresse étrangère connectée. Dans le cas des sockets udp, vous n'avez normalement pas d'adresses étrangères connectées, elles sont donc également répertoriées avec 0.0.0.0:*.
la source
::: * Serait votre hôte local / boucle en IPv6 :)
Fondamentalement, vous disposez de services d'écoute et de connexion aux services localement.
la source
::
n'est pas du bouclage: c'est l'adresse non spécifiée, et le bouclage est à::1
.La version linux de netstat utilise une notation de: où l'adresse IP est affichée nue *.
So ::: 111 signifie une IP de :: et un port de 111.
:: est une adresse IPv6 sous forme condensée utilisant la règle selon laquelle une série de zéros peut être remplacée par ::. Écrite en entier, elle équivaut à 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000.
Comme avec IPv4, l'adresse tous les zéros (connue sous le nom d'adresse non spécifiée) est utilisée comme valeur d'espace réservé. Dans le cas d'une adresse locale, cela signifie que le socket écoute sur toutes les interfaces IPv6 (et éventuellement toutes les interfaces IPv4 également en fonction des options de socket que netstat n'affiche pas).
Cela signifie que le socket n'est pas lié à une adresse étrangère spécifique. :: ou 0.0.0.0 indique une adresse IP non spécifiée (pour IPv4 ou IPv6 respectivement) et * indique un port non spécifié.
Pour TCP, cela s'applique uniquement aux sockets écoutant les connexions entrantes. Lorsque "accepter" est appelé pour accepter une connexion, un socket séparé est créé avec une adresse IP distante et un port définis.
Pour UDP, il n'y a pas de concept d'acceptation de connexions. Une application liée à un socket UDP avec une adresse étrangère de ::: * utilise l'appel d'API "recvfrom" pour recevoir les paquets et déterminer d'où ils viennent et l'appel d'API "sendto" pour envoyer les paquets à une adresse spécifique.
* Cette notation est regrettable car elle signifie qu'une chaîne affichée signifie différentes choses dans netstat qu'ailleurs. Dans la plupart des contextes, 3FFE :: 1234: 5678 signifierait l'adresse IP 3FFE: 0000: 0000: 0000: 0000: 0000: 1234: 5678 mais dans la sortie linux netstat, cela signifie l'adresse IP 3FFE: 0000: 0000: 0000: 0000: 0000 : 0000: 1234 et le port 5678. La version Windows de netstat en revanche entoure les adresses IPv6 entre crochets pour éviter toute ambiguïté.
la source