- Dave McKay
@TheGurkha
- le 17 février 2020, 8:00 HAE
Linux netstat
commande vous donne un trésor d’informations sur les connexions réseau, les ports en cours d’utilisation, et le processus de leur utilisation. Apprendre comment l’utiliser.
Ports, processus et protocoles
les sockets réseau peuvent être connectés ou en attente d’une connexion., Les connexions utilisent des protocoles réseau tels que le protocole de contrôle de Transport (TCP) ou le protocole de datagramme utilisateur UDP. Ils utilisent des adresses de protocole Internet et des ports réseau pour établir des connexions.
le mot sockets peut évoquer des images d’un point de connexion physique pour un fil ou un câble, mais dans ce contexte, une socket est une construction logicielle utilisée pour gérer une extrémité d’une connexion de données réseau.,
les Sockets ont deux états principaux: soit ils sont connectés et facilitent une communication réseau continue, soit ils attendent qu’une connexion entrante s’y connecte. Il existe d’autres états, tels que l’état où un socket est à mi-chemin de l’établissement d’une connexion sur un périphérique distant, mais en mettant de côté les états transitoires, vous pouvez penser qu’un socket est connecté ou en attente (ce qui est souvent appelé écoute).
La socket d’écoute est appelé le serveur, et le socket qui demande une connexion avec le socket d’écoute est appelé un client., Ces noms n’ont rien à voir avec les rôles matériels ou informatiques. Ils définissent simplement le rôle de chaque socket à chaque extrémité de la connexion.
la commandenetstat
vous permet de découvrir quelles sockets sont connectées et quelles sockets écoutent. Cela signifie qu’il vous indique quels ports sont utilisés et quels processus les utilisent. Il peut vous montrer des tables de routage et des statistiques sur vos interfaces réseau et vos connexions multidiffusion.
la fonctionnalité denetstat
a été répliquée au fil du temps dans différents utilitaires Linux, tels que ip et SS., Il vaut toujours la peine de connaître ce grand-père de toutes les commandes d’analyse de réseau, car il est disponible sur tous les systèmes D’exploitation Linux et Unix, et même sur Windows et Mac.
Voici comment l’utiliser, complet avec des exemples de commandes.
liste de toutes les prises
L’option-a
(all) permet ànetstat
d’afficher toutes les prises connectées et en attente. Cette commande est susceptible de produire une longue liste, nous la conduisons donc dans less
.,
netstat -a | less
la liste comprend les sockets TCP (IP), TCP6 (IPv6) et UDP.
l’enveloppement dans la fenêtre du terminal rend un peu difficile de voir ce qui se passe. Voici quelques sections de cette liste:
la section « Internet actif” répertorie les connexions externes connectées et les sockets locaux écoutant les demandes de connexion à distance. C’est-à-dire qu’il répertorie les connexions réseau qui sont (ou seront) établies sur des périphériques externes.,
la section « domaine UNIX” répertorie les connexions internes connectées et en écoute. En d’autres termes, il répertorie les connexions qui ont été établies dans votre ordinateur entre différentes applications, processus et éléments du système d’exploitation.
les colonnes « Internet actif” sont:
- Proto: Le protocole utilisé par ce socket (par exemple, TCP ou UDP).
- Recv-Q: la file d’attente de réception. Ce sont des octets entrants qui ont été reçus et sont mis en mémoire tampon, en attendant que le processus local qui utilise cette connexion les lise et les consomme.,
- Send-Q: La file d’attente d’envoi. Ceci montre les octets qui sont prêts à être envoyés de la file d’attente d’envoi.
- adresse Locale: les détails de L’adresse locale de la fin de la connexion. La valeur par défaut est
netstat
pour afficher le nom d’hôte local pour l’adresse, et le nom du service pour le port. - adresse à l’Étranger: l’adresse et Le numéro de port de l’extrémité distante de la connexion.
- État: L’état de la prise locale. Pour les sockets UDP, cela est généralement vide. Voir le tableau de l’état, ci-dessous.,
Pour les connexions TCP, la valeur de l’état peut être l’une des suivantes :
- ÉCOUTER: côté Serveur uniquement. Le socket attend une demande de connexion.
- SYN-SENT: côté Client uniquement. Cette prise a fait une demande de connexion et attend de voir si elle sera acceptée.
- SYN-RECEIVED: Côté Serveur uniquement. Ce socket attend un accusé de réception de connexion après avoir accepté une demande de connexion.
- établi: serveur et clients. Une connexion de travail a été établie entre le serveur et le client, permettant le transfert de données entre les deux.,
- FIN-WAIT-1: serveur et clients. Ce socket attend une demande de terminaison de connexion du socket distant ou un accusé de réception d’une demande de terminaison de connexion précédemment envoyée depuis ce socket.
- FIN-WAIT-2: serveur et clients. Cette prise attend une demande de terminaison de connexion de la prise distante.
- CLOSE-WAIT: serveur et client. Ce socket attend une demande de terminaison de connexion de l’utilisateur local.
- fermeture: serveur et clients., Cette socket attend un accusé de réception de demande de terminaison de connexion de la socket distante.
- LAST-ACK: serveur et client. Ce socket attend un accusé de réception de la demande de terminaison de connexion qu’il a envoyée au socket distant.
- temps D’attente: serveur et clients. Ce socket a envoyé un accusé de réception au socket distant pour lui faire savoir qu’il a reçu la demande de terminaison du socket distant. Il attend maintenant de s’assurer que cet accusé de réception a été reçu.
- FERMÉ: il n’y a pas de connexion, donc le socket a été terminé.,
Le « domaine Unix” colonnes sont:
- Proto: protocole utilisé par la socket. Ce sera » unix. »
- RefCnt: nombre de références. Le nombre de processus connectés connectés à ce socket.
- Drapeaux: ceci est généralement défini sur
ACC
, ce qui représenteSO_ACCEPTON
, ce qui signifie que le socket attend une demande de connexion.SO_WAITDATA
, indiquéW
, signifie qu’il y a des données en attente d’être lus.,SO_NOSPACE
, affiché commeN
, signifie qu’il n’y a pas d’espace pour écrire des données sur le socket (c’est-à-dire que le tampon d’envoi est plein). - Type: le type de socket. Voir le type de tableau ci-dessous.
- État: l’état de La prise. Voir la table ci-dessous.
- i-Node: l’inode du système de fichiers associé à ce socket.
- Path: le chemin du système de fichiers vers le socket.
le type de socket du domaine Unix peut être l’un des suivants:
- DGRAM: le socket est utilisé en mode datagramme, en utilisant des messages de longueur fixe., Les datagrammes ne sont ni garantis fiables, séquencés, ni Non dupliqués.
- STREAM: cette socket est une socket stream. C’est le type « normal” de connexion de socket. Ces sockets sont conçus pour fournir une livraison séquencée fiable (dans l’ordre) des paquets.
- RAW: ce socket est utilisé comme socket raw. Les sockets Raw fonctionnent au niveau du réseau du modèle OSI et ne font pas référence aux en-têtes TCP et UDP à partir du niveau de transport.
- RDM: ce socket est situé à une extrémité d’une connexion de messages délivrée de manière fiable.,
- SEQPACKET: ce socket fonctionne comme un socket de paquets séquentiel, qui est un autre moyen de fournir une livraison de paquets fiable, séquencée et non dupliquée.
- paquet: prise D’accès à l’interface brute. Les sockets de paquets sont utilisées pour recevoir ou envoyer des paquets bruts au niveau du pilote de périphérique (c.-à-d., couche de liaison de données) du modèle OSI.
l’état du socket du domaine Unix peut être l’un des suivants:
- FREE: ce socket n’est pas alloué.
- écoute: cette socket écoute les demandes de connexion entrantes.,
- connexion: cette prise est en cours de connexion.
- connecté: une connexion a été établie et le socket est capable de recevoir et de transmettre des données.
- déconnexion: la connexion est en cours de fin.
Wow, c’est beaucoup d’informations! De nombreuses optionsnetstat
affinent les résultats d’une manière ou d’une autre, mais elles ne modifient pas trop le contenu. Jetons un coup d’oeil.,
liste des Sockets par Type
la commandenetstat -a
peut fournir plus d’informations que ce que vous devez voir. Si vous voulez ou avez besoin de voir uniquement les sockets TCP, vous pouvez utiliser l’option -t
(TCP) pour limiter l’affichage à afficher uniquement les sockets TCP.
netstat -at | less
L’affichage est considérablement réduit. Les quelques sockets répertoriés sont tous des sockets TCP.,
Les options-u
(UDP) et-x
(UNIX) se comportent de la même manière, limitant les résultats au type de socket spécifié sur la ligne de commande. Voici l’option-u (UDP) utilisée:
netstat -au | less
seules les sockets UDP sont répertoriées.
liste des Sockets par État
pour voir les sockets qui sont en état d’écoute ou d’attente, utilisez l’option-l
(écoute).
netstat -l | less
Les sockets sont répertoriés sont ceux qui sont en écoute.,
cela peut être combiné avec les options-t (TCP, -u (UDP) et-x (UNIX) pour aller plus loin dans les sockets d’intérêt. Recherchons des sockets TCP d’écoute:
netstat -lt | less
maintenant, nous ne voyons que des sockets TCP d’écoute.
statistiques réseau par protocole
netstat -st | less
Une collection de statistiques pour les connexions TCP est affichée dansless
.
affichage des noms de processus et des pid
Il peut être utile de voir L’ID de processus (PID) du processus à l’aide d’un socket, ainsi que le nom de ce processus., L’option-p
(programme) fait exactement cela. Voyons quels sont les PID et les noms de processus pour les processus utilisant un socket TCP qui est dans l’état d’écoute. Nous utilisons sudo
pour nous assurer de recevoir toutes les informations disponibles, y compris toutes les informations qui nécessiteraient normalement des autorisations root.
sudo netstat -p -at
Voici cette sortie dans une table formatée:
Nous avons une colonne supplémentaire appelée « PID / nom du programme.” Cette colonne répertorie le PID et le nom du processus utilisant chacune des sockets.,
liste des adresses numériques
Une autre étape que nous pouvons prendre pour supprimer une certaine ambiguïté consiste à afficher les adresses locales et distantes en tant qu’adresses IP au lieu de leurs noms de domaine et d’hôte résolus. Si nous utilisons l’option-n
(numérique), les adresses IPv4 sont affichées au format décimal en pointillés:
sudo netstat -an | less
Les adresses IP sont affichées sous forme de valeurs numériques. Les numéros de port sont également affichés, séparés par un deux-points » » de l’adresse IP.
une adresse IP de 127.0.0.,1 montre que le socket est lié à l’adresse de bouclage de l’ordinateur local. Vous pouvez penser à une adresse IP 0.0.0.0 comme signifiant la « route par défaut” pour les adresses locales, et « adresse IP” à l’étranger. Les adresses IPv6 indiquées comme » » sont également toutes des adresses nulles.
Les ports répertoriés peuvent être facilement vérifiés pour voir quel est leur objectif habituel:
- 22: Il s’agit du port D’écoute Secure Shell (SSH).
- 25: c’est le port d’écoute SMTP (Simple Mail Transfer Protocol).
- 53: Il s’agit du port d’écoute DNS (Domain Name System).,
- 68: Il s’agit du port D’écoute DHCP (Dynamic Host Configuration Protocol).
- 631: Il s’agit du port D’écoute CUPS (common UNIX Printing System).
RELATED: Quelle est la différence entre 127.0.0.1 et 0.0.0.0?
affichage de la Table de routage
l’option-r
(route) affiche la table de routage du noyau.,
sudo netstat -r
Voici cette sortie dans une table soignée:
Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface default Vigor.router 0.0.0.0 UG 0 0 0 enp0s3 link-local 0.0.0.0 255.255.0.0 U 0 0 0 enp0s3 192.168.4.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s3
Et, voici ce que les colonnes signifient:
- Destination: le réseau de destination ou le périphérique hôte de destination (si la destination n’est pas un réseau).
- Passerelle: l’adresse de La passerelle. Un astérisque «
*
” apparaît ici si une adresse de passerelle n’est pas définie. - Masque: Le masque de sous-réseau pour la route.
- Drapeaux: voir le tableau drapeaux, ci-dessous.,
- MSS: Taille de Segment maximale par défaut pour les connexions TCP sur cette route—il s’agit de la plus grande quantité de données pouvant être reçues dans un segment TCP.
- fenêtre: la taille de fenêtre par défaut pour les connexions TCP sur cette route, indiquant le nombre de paquets qui peuvent être transférés et reçus avant que le tampon de réception soit plein. En pratique, les paquets sont consommés par l’application réceptrice.
- irtt: le temps aller-retour Initial. Cette valeur est référencée par le noyau pour effectuer des ajustements dynamiques aux paramètres TCP pour les connexions distantes qui sont lentes à répondre.,
- Iface: l’interface réseau à partir de laquelle les paquets envoyés sur cette route sont transmis.
Les drapeaux de la valeur peut être:
- U: La route est en place.
- H: Target est un hôte et la seule destination possible sur cette route.
- G: Utilisation de la passerelle.
- R: rétablit la route pour le routage dynamique.
- D: installé dynamiquement par le démon de routage.
- M: modifié par le démon de routage lorsqu’il a reçu un paquet ICMP (Internet Control Message Protocol).,
- A: installé par
addrconf
, le générateur de fichiers de configuration DNS et DHCP automatisé. - C: entrée de Cache.
- !: Rejeter la route.
Trouver le Port Utilisé par un Processus d’
Si nous rediriger la sortie de netstat
par grep
, nous pouvons rechercher un processus par nom et identifier le port qu’il utilise. Nous utilisons la balise -a
(tous les), -n
(numérique) et -p
(programme) options utilisées précédemment, et de la recherche pour « sshd.,”
sudo netstat -anp | grep "sshd"
grep
trouve la cible de la chaîne, et nous voyons que le sshd
démon utilise le port 22.
bien sûr, nous pouvons aussi le faire en sens inverse. Si nous recherchons »: 22″, nous pouvons savoir quel processus utilise ce port, le cas échéant.
sudo netstat -anp | grep ":22"
Cette foisgrep
trouve la chaîne cible « :22”, et nous voyons que le processus utilisant ce port est le démonsshd
, process ID 751.,
Liste des Interfaces Réseau
Le -i
(interfaces) option pour afficher un tableau des interfaces de réseau netstat
peut découvrir.
sudo netstat -i
Voici la sortie plus lisible:
Kernel Interface table Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg enp0s3 1500 4520671 0 0 0 4779773 0 0 0 BMRU lo 65536 30175 0 0 0 30175 0 0 0 LRU
c’est Ce que les colonnes de dire:
- Iface: Le nom de l’interface. L’interface
enp0s3
est l’interface réseau vers le monde extérieur, et l’interfacelo
est l’interface de bouclage., L’interface de bouclage permet aux processus d’intercommunication au sein de l’ordinateur à l’aide de protocoles réseau, même si l’ordinateur n’est pas connecté à un réseau. - MTU: L’Unité de Transmission maximale (MTU). C’est le plus grand « paquet” qui peut être envoyé. Il se compose d’un en-tête contenant des indicateurs de routage et de protocole, et d’autres métadonnées, ainsi que les données en cours de transport.
- RX-OK: Le nombre de paquets reçus, sans erreurs.
- RX-ERR: le nombre de paquets reçus, avec des erreurs. Nous voulons que ce soit aussi bas que possible.,
- RX-DRP: le nombre de paquets abandonnés (c’est-à-dire perdus). Nous voulons également que cela soit aussi bas que possible.
- RX-OVR: nombre de paquets perdus en raison de débordements lors de la réception. Cela signifie généralement que le tampon de réception était plein et ne pouvait pas accepter plus de données, mais plus de données ont été reçues et ont dû être supprimées. Plus ce chiffre est bas, mieux c’est, et Zéro est parfait.
- TX-OK: Le nombre de paquets transmis, sans erreurs.
- RX-ERR: le nombre de paquets transmis, avec des erreurs. Nous voulons que ce soit à zéro.,
- RX-DRP: le nombre de paquets abandonnés lors de la transmission. Idéalement, ce devrait être égale à zéro.
- RX-OVR: nombre de paquets perdus en raison de débordements lors de la transmission. Cela signifie généralement que le tampon d’envoi était plein et ne pouvait plus accepter de données, mais plus de données étaient prêtes à être transmises et devaient être supprimées.
- FLG: Drapeaux. Voir le tableau des drapeaux ci-dessous.
Les indicateurs représentent ce qui suit:
liste des adhésions de groupes de multidiffusion
en termes simples, une transmission de multidiffusion permet à un paquet d’être envoyé une seule fois, quel que soit le nombre de destinataires., Pour des services tels que le streaming vidéo, par exemple, cela augmente considérablement l’efficacité du point de vue de l’expéditeur.
L’option-g
(groupes) permet ànetstat
de répertorier l’appartenance au groupe de multidiffusion des sockets sur chaque interface.
sudo netstat -g
Les colonnes sont assez simples:
- Interface: le nom de l’interface sur laquelle le socket transmet.
- RefCnt: le nombre de références, qui est le nombre de processus attachés au socket.,
- Group: nom ou identifiant du groupe de multidiffusion.
Les Nouveaux Enfants du bloc
Les commandes route, ip, ifconfig et ss peuvent fournir beaucoup de ce quenetstat
est capable de vous montrer. Ils sont tous de grandes commandes et la peine de vérifier.
Nous nous sommes concentrés surnetstat
car il est universellement disponible, quel que soit le système d’exploitation de type Unix sur lequel vous travaillez, même les plus obscurs.,
Dave McKay a utilisé pour la première fois des ordinateurs lorsque la bande de papier perforé était en vogue, et il a depuis programmé. Après plus de 30 ans dans l’industrie informatique, il est maintenant journaliste technologique à temps plein. Au cours de sa carrière, il a travaillé en tant que programmeur indépendant, responsable d’une équipe internationale de développement de logiciels, chef de projet de services informatiques et, plus récemment, en tant que délégué à la Protection des données. Dave est un évangéliste Linux et un défenseur de l’open source.Lire l’Intégrale «