Description :

Je vais vous présenter quelques commandes Linux sur le réseau.

Commandes lsof

lsof pour list open files (attention, nous l'utiliserons ici pour la partie réseau mais elle ne se limite absolument pas à cela).

- Liste les ports réseaux utilisés :

# lsof -i
COMMAND   PID           USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
dhclient  851           root    5u  IPv4  10177      0t0  UDP *:bootpc
sshd      961           root    3u  IPv4  10497      0t0  TCP *:ssh (LISTEN)
sshd      961           root    4u  IPv6  10502      0t0  TCP *:ssh (LISTEN)
master   1037           root   12u  IPv4  10686      0t0  TCP localhost:smtp (LISTEN)
master   1037           root   13u  IPv6  10688      0t0  TCP localhost:smtp (LISTEN)
sshd     1094           root    3r  IPv4  11201      0t0  TCP 192.168.5.11:ssh->192.168.5.26:49543 (ESTABLISHED)
1 # lsof -i^M
2 COMMAND   PID           USER   FD   TYPE DEVICE SIZE/OFF NODE NAME^M
3 dhclient  851           root    5u  IPv4  10177      0t0  UDP *:bootpc ^M
4 sshd      961           root    3u  IPv4  10497      0t0  TCP *:ssh (LISTEN)^M
5 sshd      961           root    4u  IPv6  10502      0t0  TCP *:ssh (LISTEN)^M
6 master   1037           root   12u  IPv4  10686      0t0  TCP localhost:smtp (LISTEN)^M
7 master   1037           root   13u  IPv6  10688      0t0  TCP localhost:smtp (LISTEN)^M
8 sshd     1094           root    3r  IPv4  11201      0t0  TCP 192.168.5.11:ssh->192.168.5.26:49543 (ESTABLISHED)

Il est possible de filtrer l'IPv4 (-i4) ou l'IPv6 (-i6) ainsi que les port TCP (-iTCP) et UDP (-iUDP) et de faire des combos (-i4UDP pour les ports IPv4 en UDP).
Les option -Pni permettent de ne pas faire la résolution des services (le P) et la résolution des noms de machine (le n).

De même si l'on veut savoir si un port particulier est utilisé :

# lsof -i :22
COMMAND  PID           USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd     961           root    3u  IPv4  10497      0t0  TCP *:ssh (LISTEN)
sshd     961           root    4u  IPv6  10502      0t0  TCP *:ssh (LISTEN)
sshd    1094           root    3r  IPv4  11201      0t0  TCP 192.168.5.11:ssh->192.168.5.26:49543 (ESTABLISHED)

Commandes ss (désolé, je suis le premier à trouver le nom mal choisi)

- Afficher les sockets établis :

# ss
State      Recv-Q Send-Q                          Local Address:Port                              Peer Address:Port
ESTAB      0      0                                192.168.5.11:ssh                               192.168.5.26:49567
ESTAB      0      0                                192.168.5.11:ssh                               192.168.5.26:49721

- Afficher tous les sockets :

# ss -a
State      Recv-Q Send-Q                          Local Address:Port                              Peer Address:Port
LISTEN     0      128                                        :::ssh                                         :::*
LISTEN     0      128                                         *:ssh                                          *:*
LISTEN     0      100                                       ::1:smtp                                        :::*
LISTEN     0      100                                 127.0.0.1:smtp                                         *:*
ESTAB      0      0                                192.168.5.11:ssh                               192.168.5.26:49567
ESTAB      0      0                                192.168.5.11:ssh                               192.168.5.26:49721

- Afficher que les sockets en écoute :

# ss -l
State      Recv-Q Send-Q                          Local Address:Port                              Peer Address:Port
LISTEN     0      128                                        :::ssh                                         :::*
LISTEN     0      128                                         *:ssh                                          *:*
LISTEN     0      100                                       ::1:smtp                                        :::*
LISTEN     0      100                                 127.0.0.1:smtp                                         *:*

- Afficher les sockets ouverts ainsi que leur process :

# ss  -ap
State      Recv-Q Send-Q                          Local Address:Port                              Peer Address:Port
LISTEN     0      128                                        :::ssh                                         :::*        users:(("sshd",961,4))
LISTEN     0      128                                         *:ssh                                          *:*        users:(("sshd",961,3))
LISTEN     0      100                                       ::1:smtp                                        :::*        users:(("master",1037,13))
LISTEN     0      100                                 127.0.0.1:smtp                                         *:*        users:(("master",1037,12))
ESTAB      0      0                                192.168.5.11:ssh                               192.168.5.26:49567    users:(("sshd",1884,3),("sshd",1889,3))
ESTAB      0      0                                192.168.5.11:ssh                               192.168.5.26:49721

D'autres commandes :
Afficher tous les sockets TCP
# ss -t -a

Afficher tous les sockets UDP
# ss -u -a

Afficher tous les sockets IPv4
# ss -af inet

Afficher tous les sockets IPv6
# ss -af inet6

Afficher toutes les connexions SSH établies
# ss -o state established '( dport = :ssh or sport = :ssh )'

Affiche les programmes en écoute sur un socket local ou réseau
# netstat --programs --listening

Commande ifconfig :

Afficher toutes les interfaces disponibles :

# ifconfig -a
eth0       Link encap:Ethernet  HWaddr 90:C1:1C:24:A6:85
          inet adr:192.168.0.1  Bcast:192.168.0.255  Masque:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:67281826 errors:0 dropped:0 overruns:0 frame:0
          TX packets:76615646 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000
          RX bytes:4707900996 (4.3 GiB)  TX bytes:49673408200 (46.2 GiB)
          Interruption:35

eth1       Link encap:Ethernet  HWaddr 90:C1:1C:24:A6:86
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interruption:38

Afficher les interfaces actives :

# ifconfig -a
eth0       Link encap:Ethernet  HWaddr 90:C1:1C:24:A6:85
          inet adr:192.168.0.1  Bcast:192.168.0.255  Masque:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:67281826 errors:0 dropped:0 overruns:0 frame:0
          TX packets:76615646 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000
          RX bytes:4707900996 (4.3 GiB)  TX bytes:49673408200 (46.2 GiB)
          Interruption:35

La différence se situe au niveau de la troisième ligne, lorsqu'une interface est active, elle contient le mot RUNNING.

Désactiver une interface :

# ifconfig eth0 down

(Ré-)Activer une interface :

# ifconfig eth0 up

Configurer une interface :

# ifconfig eth1 10.0.0.1 netmask 255.255.255.0 up

Ces trois dernières commandes ne survivent pas au reboot, sinon il faut configurer le fichier de l'interface, pour de RedHat-like :

# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static"
HWADDR="90:C1:1C:24:A6:85"
IPADDR="192.168.0.1"
IPV6INIT="no"
NETMASK="255.255.255.0"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="df18d032-e790-4266-b434-c0725e379301"

Pour les Debian-like c'est /etc/network/interfaces.

Commande route :

Afficher la table de routage :

# route -n
Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
192.168.0.1     0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.1.1     0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth1
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth1

Le -n permet de ne pas faire la résolution de nom. Pour les indicateurs, U : la route est active (up) et G : utilisé comme gateway.

ou pour voir le cache de route :

 # route -C
cache de routage IP du noyau
Source          Destination     Passerelle      Indic Metric Ref    Use Iface
192.168.5.11    google-public-d 192.168.5.254         0      0        1 eth0
192.168.5.11    192.168.5.11    192.168.5.11    l     0      0        8 lo
192.168.5.26    192.168.5.11    192.168.5.11    il    0      0       68 lo
192.168.5.26    192.168.5.11    192.168.5.11    il    0      0       29 lo
localhost       localhost       localhost       l     0      0        2 lo
192.168.5.39    192.168.5.11    192.168.5.11    il    0      0        8 lo
192.168.5.11    192.168.5.39    192.168.5.39          0      0       11 eth0

Commande netstat :

Voir les connexions IPv4 en cous :

# netstat -A inet
Connexions Internet actives (sans serveurs)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 192.168.5.11:ssh            192.168.5.26:49425          ESTABLISHED
tcp        0      0 192.168.5.11:ssh            192.168.5.26:49618          ESTABLISHED

=> L'option -c fait un rafraichissement automatique toutes les secondes.

Afficher les connexions en cours et les port en écoute (avec leur process associé)

 netstat -natup
# netstat -natup
Connexions Internet actives (serveurs et établies)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      988/sshd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1064/master
tcp        0      0 192.168.5.11:22             192.168.5.26:49425          ESTABLISHED 1101/sshd
tcp        0      0 192.168.5.11:22             192.168.5.26:49618          ESTABLISHED 1187/sshd
tcp        0      0 :::22                       :::*                        LISTEN      988/sshd
tcp        0      0 ::1:25                      :::*                        LISTEN      1064/master
udp        0      0 0.0.0.0:68                  0.0.0.0:*                               1915/dhclient

Afficher la table de routage :

# netstat -rn
Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic   MSS Fenêtre irtt Iface
192.168.5.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
0.0.0.0         192.168.5.254   0.0.0.0         UG        0 0          0 eth0

Commande ip :

Affichage des interfaces avec leur IP (équivalent à ifconfig)

# ip addr show
1: lo:  mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:03:ba:19 brd ff:ff:ff:ff:ff:ff
    inet 192.168.5.11/24 brd 192.168.5.255 scope global eth0
    inet6 2a01:e35:399b:8660:a00:27ff:fe03:ba19/64 scope global dynamic
       valid_lft 86326sec preferred_lft 86326sec
    inet6 fe80::a00:27ff:fe03:ba19/64 scope link
       valid_lft forever preferred_lft forever

Informations sommaire des interfaces :

# ip link show
1: lo:  mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:03:ba:19 brd ff:ff:ff:ff:ff:ff

Afficher la table de routage :

# ip route show
192.168.5.0/24 dev eth0  proto kernel  scope link  src 192.168.5.11
169.254.0.0/16 dev eth0  scope link  metric 1002
10.0.0.0/8 via 192.168.5.2 dev eth0
default via 192.168.5.254 dev eth0

Connaître la gateway pour une adresse donnée :

# ip route get 8.8.8.8
8.8.8.8 via 192.168.5.254 dev eth0  src 192.168.5.11
    cache  mtu 1500 advmss 1460 hoplimit 64

Désactiver une interface :

# ip link set eth0 down

(Ré-)Activer une interface :

# ip link set eth0 up

 

Commande arp :

Afficher les ARP connues par le système :

# arp
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.5.26             ether   28:cf:e9:15:b3:c1   C                     eth0
192.168.5.39                     (incomplete)                              eth0
192.168.5.254            ether   f4:ca:e5:49:4b:86   C                     eth0

=> Equivalent au contenu de /proc/net/arp.
ou

# arp -a
? (192.168.5.26) at 28:cf:e9:15:b3:c1 [ether] on eth0
? (192.168.5.39) at  on eth0
? (192.168.5.254) at f4:ca:e5:49:4b:86 [ether] on eth0

Mettre une ARP statique :

# arp -s 10.1.1.1 00:11:22:33:44:55:55

Suppression d'une entrée ARP :

# arp -d 10.1.1.1

Renommer une carte :

# ifconfig eth0 down
# ip link set name macarte dev eth0
# ifconfig macarte up

Annexe :

Informations supplémentaires sur le cache des routes :
http://vincent.bernat.im/fr/blog/2011-ipv4-route-cache-linux.html