Linux - Tips réseaux
Alasta 2 Février 2014 linux bash cli Linux Open Source
Description : Quelques commandes concernant le réseau.
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
2
3
4
5
6
7
8
# lsof -i^M
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME^M
dhclient 851 root 5u IPv4 10177 0t0 UDP *:bootpc ^M
sshd 961 root 3u IPv4 10497 0t0 TCP *:ssh (LISTEN)^M
sshd 961 root 4u IPv6 10502 0t0 TCP *:ssh (LISTEN)^M
master 1037 root 12u IPv4 10686 0t0 TCP localhost:smtp (LISTEN)^M
master 1037 root 13u IPv6 10688 0t0 TCP localhost:smtp (LISTEN)^M
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) aton 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