netstat

La commande netstat permet d'afficher de nombreuses informations sur le réseau et les connexions réseau.

La commande permet d'obtenir cinq types d'informations différentes: les sockets, les routes, les interfaces, le masquerade et le netlink. Ces informations sont accessibles à l'aide de quatre options de la commande, les sockets étant affichés par défaut.

Cet page ne décrit que l'utilisation de netstat pour obtenir les informations des sockets, des routes et des interfaces. Les deux dernières options étant moins utilisées.

Mode par défaut

Lorsque la commande est invoquée sans option, elle affiche l'ensemble des sockets faisant l'objet d'une connexion:

$ netstat
Connexions Internet actives (sans serveurs)
Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat      
tcp        0      0 host85.ikipou.com:49946 linuxcertif.com:www     ESTABLISHED
...
udp        0      0 localhost:32768         localhost:32768         ESTABLISHED
...
Sockets du domaine UNIX actives (sans serveurs)
Proto RefCpt Indicatrs   Type       Etat          I-Node Chemin
unix  13     [ ]         DGRAM                    15908    /dev/log
unix  2      [ ]         DGRAM                    8930     @/org/kernel/udev/udevd
unix  3      [ ]         STREAM     CONNECTE      27211 
...

Les sockets réseaux sont affiché en premier, suivit des sockets locaux (aussi appelés sockets unix).

Afficher les serveurs

Sans options, netstat n'affiche que les sockets prenant part à une connexion. Pour afficher les sockets en attente de connexion (pour les serveurs), il faut utiliser l'option -a. L'état de ces sockets est LISTEN, signifiant qu'ils sont en attente de connexions:

$ netstat -a
Connexions Internet actives (serveurs et établies)
Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat      
tcp        0      0 localhost:postgresql    *:*                     LISTEN     
tcp6       0      0 *:ssh                   *:*                     LISTEN    
tcp        0      0 host85.ikipou.com:49946 linuxcertif.com:www     ESTABLISHED
...

Afficher les processus

L'option -p permet d'afficher le processus propriétaire d'un socket. Cette information n'est disponible que pour les sockets pour lesquels vous êtes propriétaire, il faut donc utiliser le compte root pour afficher l'information pour l'ensemble des sockets.

$ netstat -p
Connexions Internet actives (sans serveurs)
Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat       PID/Program name   
tcp        0      0 host85.ikipou.com:49946 linuxcertif.com:www     ESTABLISHED7764/firefox-bin                     
tcp        0      0 host85.ikipou.com:49946 athena.jabb:xmpp-client ESTABLISHED7232/pidgin               
udp        0      0 localhost:32768         localhost:32768         ESTABLISHED5268/postgres       
Sockets du domaine UNIX actives (sans serveurs)
Proto RefCpt Indicatrs   Type       Etat          I-Node PID/Program name    Chemin
unix  13     [ ]         DGRAM                    15908    4969/syslogd        /dev/log
unix  2      [ ]         DGRAM                    8930     2813/udevd          @/org/kernel/udev/udevd

Table de routage

Avec l'option -r (ou --route), netstat affiche la table de routage:

$ netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
1.243-27-193.li *               255.255.255.255 UH        0 0          0 ppp0
192.168.6.2     *               255.255.255.255 UH        0 0          0 tun0
192.168.66.0    *               255.255.255.252 U         0 0          0 eth1
192.168.33.0    *               255.255.255.0   U         0 0          0 eth0
192.168.0.0     192.168.6.2     255.255.255.0   UG        0 0          0 tun0
default         *               0.0.0.0         U         0 0          0 ppp0

Ces informations sont aussi accessible par la commande ip (avec la commande ip route) ou avec la commande route. Ces deux dernières commande sont souvent préférées à netstat pour l'affichage de la table de routage.

Interfaces

Avec l'option -i (ou l'option longue --interface), netstat affiche les informations de toutes les interfaces réseaux:

$ 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     36151      0      0      0    82037      0      0      0 BMRU
eth1   1500 0   4561136 2777777      0      0  5528514      5      0      0 BMRU
lo    16436 0     51746      0      0      0    51746      0      0      0 LRU
ppp0   1500 0    540528      0      0      0   434669      0      0      0 MOPRU
tun0   1500 0   2455463      0      0      0  3080766      0      0      0 MOPRU

Ces informations sont aussi accessible via la commande ifconfig.

Affichage numérique

Comme pour les autres commandes manipulant des informations sur le réseaux, il existe l'option -n qui permet d'obtenir un affichage numérique des adresses IP plutôt que de tenter une résolution DNS. Cette option est très utile car la résolution des noms prend un certains temps.

Les options importantes

sans options
Affiche les sockets en connexion.
-a
Affiche les sockets en connexion et en attente de connexion.
-p
Affiche les processus propriétaires des sockets (utilisable avec -a)
-r
Affiche la table de routage
-i
Affiche les informations des interfaces réseaux
-n
Affiche les valeurs numériques des adresses IP plutôt que de tenter une résolution inverse avec DNS.

Préciser les paramètres

Page de manuel

La page de manuel de netstat décrit les cinq modes de fonctionnement de la commande et donne la liste des options. Cette page décrit aussi chaque champs affichés par les différents mode de la commande.