GNU/Linux >> Tutoriels Linux >  >> Linux

10 exemples de base de la commande Linux Netstat

Netstat

Netstat est un utilitaire de ligne de commande qui peut être utilisé pour répertorier toutes les connexions réseau (socket) sur un système. Il répertorie toutes les connexions socket tcp, udp et les connexions socket unix.

Outre les sockets connectés, il peut également répertorier les sockets d'écoute qui attendent des connexions entrantes. Ainsi, en vérifiant un port 80 ouvert, vous pouvez confirmer si un serveur Web est en cours d'exécution sur le système ou non.

Cela en fait un outil très utile pour les administrateurs réseau et système.

Dans ce tutoriel, nous verrons quelques exemples d'utilisation de netstat pour trouver des informations sur les connexions réseau et les ports ouverts sur un système.

Voici une introduction rapide à netstat à partir des pages de manuel

netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships

1. Lister toutes les connexions

La première et la plus simple des commandes consiste à répertorier toutes les connexions actuelles. Exécutez simplement la commande netstat avec l'option a.

$ netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 enlightened:domain      *:*                     LISTEN
tcp        0      0 localhost:ipp           *:*                     LISTEN
tcp        0      0 enlightened.local:54750 li240-5.members.li:http ESTABLISHED
tcp        0      0 enlightened.local:49980 del01s07-in-f14.1:https ESTABLISHED
tcp6       0      0 ip6-localhost:ipp       [::]:*                  LISTEN
udp        0      0 enlightened:domain      *:*
udp        0      0 *:bootpc                *:*
udp        0      0 enlightened.local:ntp   *:*
udp        0      0 localhost:ntp           *:*
udp        0      0 *:ntp                   *:*
udp        0      0 *:58570                 *:*
udp        0      0 *:mdns                  *:*
udp        0      0 *:49459                 *:*
udp6       0      0 fe80::216:36ff:fef8:ntp [::]:*
udp6       0      0 ip6-localhost:ntp       [::]:*
udp6       0      0 [::]:ntp                [::]:*
udp6       0      0 [::]:mdns               [::]:*
udp6       0      0 [::]:63811              [::]:*
udp6       0      0 [::]:54952              [::]:*
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     12403    @/tmp/dbus-IDgfj3UGXX
unix  2      [ ACC ]     STREAM     LISTENING     40202    @/dbus-vfs-daemon/socket-6nUC6CCx

La commande ci-dessus affiche toutes les connexions de différents protocoles tels que les sockets tcp, udp et unix. Cependant ce n'est pas très utile. Les administrateurs souhaitent souvent sélectionner des connexions spécifiques en fonction de protocoles ou de numéros de port, par exemple.

2. Liste uniquement les connexions TCP ou UDP

Pour répertorier uniquement les connexions TCP, utilisez les options t.

$ netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 enlightened:domain      *:*                     LISTEN
tcp        0      0 localhost:ipp           *:*                     LISTEN
tcp        0      0 enlightened.local:36310 del01s07-in-f24.1:https ESTABLISHED
tcp        0      0 enlightened.local:45038 a96-17-181-10.depl:http ESTABLISHED
tcp        0      0 enlightened.local:37892 ABTS-North-Static-:http ESTABLISHED
.....

De même, pour répertorier uniquement les connexions udp, utilisez l'option u.

$ netstat -au
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
udp        0      0 *:34660                 *:*
udp        0      0 enlightened:domain      *:*
udp        0      0 *:bootpc                *:*
udp        0      0 enlightened.local:ntp   *:*
udp        0      0 localhost:ntp           *:*
udp        0      0 *:ntp                   *:*
udp6       0      0 fe80::216:36ff:fef8:ntp [::]:*
udp6       0      0 ip6-localhost:ntp       [::]:*
udp6       0      0 [::]:ntp                [::]:*

La sortie ci-dessus montre les connexions ipv4 et ipv6.

3. Désactiver la recherche DNS inversée pour une sortie plus rapide

Par défaut, la commande netstat tente de trouver le nom d'hôte de chaque adresse IP de la connexion en effectuant une recherche DNS inversée. Cela ralentit la sortie. Si vous n'avez pas besoin de connaître le nom d'hôte et que seule l'adresse IP est suffisante, supprimez la recherche du nom d'hôte avec l'option n.

$ netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN
tcp        0      0 192.168.1.2:49058       173.255.230.5:80        ESTABLISHED
tcp        0      0 192.168.1.2:33324       173.194.36.117:443      ESTABLISHED
tcp6       0      0 ::1:631                 :::*                    LISTEN

La commande ci-dessus affiche TOUTES les connexions TCP sans résolution DNS. J'ai compris ? Bien.

4. Vérifier les connexions d'écoute - Ports ouverts

Tout démon/service réseau garde un port ouvert pour écouter les connexions entrantes. Celles-ci ressemblent également à des connexions socket et sont répertoriées par netstat. Pour afficher uniquement les ports d'écoute, utilisez l'option "-l".

$ netstat -tnl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN
tcp6       0      0 ::1:631                 :::*                    LISTEN

Maintenant, nous ne pouvons voir que les ports/connexions TCP à l'écoute. Si vous voulez voir tous les ports d'écoute, supprimez l'option t. Si vous voulez voir uniquement les ports udp en écoute, utilisez l'option "-u" au lieu de "-t".

Assurez-vous de supprimer l'option "-a", sinon toutes les connexions seraient répertoriées et pas seulement les connexions d'écoute.

Si vous exécutez un service comme http ou smtp sur votre serveur Linux, vous pouvez utiliser la commande ci-dessus pour vérifier si le service écoute ou non les connexions entrantes.

5. Obtenir le nom du processus/pid et l'identifiant de l'utilisateur

Lors de la visualisation des ports et connexions ouverts/en écoute, il est souvent utile de connaître le nom/pid du processus qui a ouvert ce port ou cette connexion.

Par exemple, le serveur Apache httpd ouvre le port 80. Ainsi, si vous souhaitez vérifier si un serveur http est en cours d'exécution ou non, ou quel serveur http est en cours d'exécution, apache ou nginx, recherchez le nom du processus.

Les détails du processus sont rendus disponibles par l'option 'p'.

~$ sudo netstat -nlpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      1144/dnsmasq
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      661/cupsd
tcp6       0      0 ::1:631                 :::*                    LISTEN      661/cupsd

Lors de l'utilisation de l'option p, netstat doit être exécuté avec les privilèges root, sinon il ne peut pas détecter les pid des processus exécutés avec les privilèges root et la plupart des services comme http et ftp s'exécutent souvent avec les privilèges root.

Avec le nom/pid du processus, il est encore plus utile d'obtenir le nom d'utilisateur/uid propriétaire de ce processus particulier. Utilisez l'option e avec l'option p pour obtenir également le nom d'utilisateur.

$ sudo netstat -ltpe
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name
tcp        0      0 enlightened:domain      *:*                     LISTEN      root       11090       1144/dnsmasq
tcp        0      0 localhost:ipp           *:*                     LISTEN      root       9755        661/cupsd
tcp6       0      0 ip6-localhost:ipp       [::]:*                  LISTEN      root       9754        661/cupsd

L'exemple ci-dessus répertorie les connexions d'écoute de type Tcp avec les informations de processus et les informations étendues.
Les informations étendues contiennent le nom d'utilisateur et l'inode du processus. Il s'agit d'une commande utile pour les administrateurs réseau.

Remarque - Si vous utilisez l'option n avec l'option e, l'uid serait répertorié et non le nom d'utilisateur.

6. Statistiques d'impression

La commande netstat peut également imprimer des statistiques réseau telles que le nombre total de paquets reçus et transmis par type de protocole, etc.

Pour répertorier les statistiques de tous les types de paquets

$ netstat -s
Ip:
    32797 total packets received
    0 forwarded
    0 incoming packets discarded
    32795 incoming packets delivered
    29115 requests sent out
    60 outgoing packets dropped
Icmp:
    125 ICMP messages received
    0 input ICMP message failed.
    ICMP input histogram:
        destination unreachable: 125
    125 ICMP messages sent
    0 ICMP messages failed
    ICMP output histogram:
        destination unreachable: 125
... OUTPUT TRUNCATED ...

Pour imprimer les statistiques de certains protocoles comme TCP ou UDP, utilisez les options correspondantes comme t et u avec l'option s. Simple !

7. Afficher les informations de routage du noyau

Les informations de routage du noyau peuvent être imprimées avec l'option r. C'est la même sortie que celle donnée par la commande route. Nous utilisons également l'option n pour désactiver la recherche de nom d'hôte.

$ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0

8. Interfaces réseau d'impression

La commande netstat peut également imprimer les informations sur les interfaces réseau. L'option "-i" fait la tâche.

$ netstat -i
Kernel Interface table
Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500 0     31611      0      0 0         27503      0      0      0 BMRU
lo        65536 0      2913      0      0 0          2913      0      0      0 LRU

La sortie ci-dessus contient des informations dans un format très brut. Pour obtenir une version plus conviviale de la sortie, utilisez l'option e avec i.

$ netstat -ie
Kernel Interface table
eth0      Link encap:Ethernet  HWaddr 00:16:36:f8:b2:64
          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::216:36ff:fef8:b264/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:31682 errors:0 dropped:0 overruns:0 frame:0
          TX packets:27573 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:29637117 (29.6 MB)  TX bytes:4590583 (4.5 MB)
          Interrupt:18 Memory:da000000-da020000
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:2921 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2921 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:305297 (305.2 KB)  TX bytes:305297 (305.2 KB)

La sortie ci-dessus est similaire à la sortie affichée par la commande ifconfig.

9. Obtenez la sortie netstat en continu

Netstat peut générer des informations de connexion en continu avec l'option c.

$ netstat -ct

La commande ci-dessus affichera les connexions TCP en continu.

10. Afficher les informations du groupe de multidiffusion

L'option g affichera les informations du groupe de multidiffusion pour les protocoles IPv4 et IPv6.

$ netstat -g
IPv6/IPv4 Group Memberships
Interface       RefCnt Group
--------------- ------ ---------------------
lo              1      all-systems.mcast.net
eth0            1      224.0.0.251
eth0            1      all-systems.mcast.net
lo              1      ip6-allnodes
lo              1      ff01::1
eth0            1      ff02::fb
eth0            1      ff02::1:fff8:b264
eth0            1      ip6-allnodes
eth0            1      ff01::1
wlan0           1      ip6-allnodes
wlan0           1      ff01::1

Plus d'exemples de commande netstat

D'accord, nous avons couvert les exemples de base de la commande netstat ci-dessus. Il est maintenant temps de faire des trucs de geek avec style.

Imprimer les connexions actives

Les connexions socket actives sont à l'état "ETABLISHED". Donc, pour obtenir toutes les connexions actives actuelles, utilisez netstat avec grep comme suit

$ netstat -atnp | grep ESTA
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 192.168.1.2:49156       173.255.230.5:80        ESTABLISHED 1691/chrome
tcp        0      0 192.168.1.2:33324       173.194.36.117:443      ESTABLISHED 1691/chrome

Pour regarder une liste continue des connexions actives, utilisez la commande watch avec netstat et grep

$ watch -d -n0 "netstat -atnp | grep ESTA"

Vérifier si un service est en cours d'exécution

Si vous voulez vérifier si un serveur comme http, smtp ou ntp est en cours d'exécution ou non, utilisez à nouveau grep.

$ sudo netstat -aple | grep ntp
udp        0      0 enlightened.local:ntp   *:*                                 root       17430       1789/ntpd
udp        0      0 localhost:ntp           *:*                                 root       17429       1789/ntpd
udp        0      0 *:ntp                   *:*                                 root       17422       1789/ntpd
udp6       0      0 fe80::216:36ff:fef8:ntp [::]:*                              root       17432       1789/ntpd
udp6       0      0 ip6-localhost:ntp       [::]:*                              root       17431       1789/ntpd
udp6       0      0 [::]:ntp                [::]:*                              root       17423       1789/ntpd
unix  2      [ ]         DGRAM                    17418    1789/ntpd

Nous avons donc constaté que le serveur ntp est en cours d'exécution. Grep pour http ou smtp ou tout ce que vous recherchez.

Conclusion

Eh bien, c'était la majeure partie de l'utilisation de netstat. Si vous recherchez des informations plus avancées ou souhaitez approfondir, lisez le manuel de netstat (man netstat).

Et laissez vos commentaires et suggestions dans la boîte de commentaires ci-dessous.

Ressources

Consultez la page de manuel Linux pour netstat pour en savoir plus.

https://linux.die.net/man/8/netstat
https://man7.org/linux/man-pages/man8/netstat.8.html


Linux
  1. Tutoriel de commande Linux netstat pour les débutants (8 exemples)

  2. Commande netstat de Linux

  3. UNIX / Linux :10 exemples de commandes Netstat

  4. Exemples de commande "ls" de base sous Linux

  5. Exemples de commandes sa sous Linux

Commande Linux wc avec exemples

Commande Netstat sous Linux - 28 commandes avec exemples

10 exemples de commande Linux ss pour surveiller les connexions réseau

Exemples de commandes id sous Linux

netstat Exemples de commandes sous Linux

w Exemples de commandes sous Linux