Réseau
Pense-bête
Équivalence plages d’adresses notables IPv4/IPv6
IPv4 | IPv6 | |
---|---|---|
Route par défaut | 0.0.0.0/0 | ::/0 |
Route non spécifiée | 0.0.0.0/32 | ::/128 |
Loopback | 127.0.0.0/24 | ::1/128 |
Multicast | 224.0.0.0/8 | ff00::/8 |
Link-local | 169.254.0.0/16 | fe80::/10 |
Privé (non-routable) | 10.0.0.0/8 , 172.16.0.0/12 , 192.168.0.0/16 | fc00::/7 |
Documentation/exemples (non-routable) | 192.0.2.0/24 , 198.51.100.0/24 , 203.0.113.0/24 | 2001:db8::/32 |
Astuces
Voir le trafic réseau niveau applicatif de sa machine en clair avec tcpdump
# tcpdump -ni any -s 0 -w - | strings
Utiliser plusieurs adresses IP sur une seule interface réseau physique
# ifconfig eth0 192.168.1.1 (adresse IP primaire)
# ifconfig eth0:0 172.16.100.21
# ifconfig eth0:1 10.0.0.42
…
Transférer des données entre deux machines sans FTP/SCP/NFS/Samba
Pour transférer des données entre deux machines en réseau à l’arrache sans disposer de clients/serveurs FTP/SCP, Netcat et Tar sont vos meilleurs amis (le port <port> doit être le même sur les deux machines).
Sur la machine émettrice :
$ tar cvf - * | netcat <machine destinataire> <port>
Sur la machine destinataire :
$ netcat -l -p <port> | tar xv
…et vous serez limité uniquement par la vitesse du média et le débit des disques ;)
Cloner un disque dur en réseau
Dans le même esprit que l’astuce précédente il est possible de dupliquer à
l’identique un “block device” (une partition ou encore un disque dur entier)
d’une machine vers une autre à travers le réseau à l’aide de Netcat et cette
fois-ci la commande dd
:
Sur la machine originale (<device à cloner>
étant un “device” entier type
/dev/sda
soit une de ses partitions, par exemple /dev/sda2
) :
# dd if=<device à cloner> | netcat <machine destinatrice> <port>
Sur la machine destinataire (<device de destination>
pouvant être soit un
fichier “image” du device cloné soit un “block device” existant sur la machine
destinataire, un disque dur entier ou une de ses partitions) :
# netcat -l -p <port> | dd of=<device de destination>
Surveiller les nouvelles connexions TCP avec tcpdump
Voici un filtre tcpdump bien pratique pour suivre en temps réel les établissements de connexions TCP : seuls les segments TCP marqués du “flag” SYN seront affichés.
# tcpdump <vos options favorites> 'tcp[13] & 2 == 2'
Explication pour briller en société : on applique le masque binaire “00000010” (“2” en base décimale) sur le 13ème octet de l’en-tête des segments TCP. Si le résultat de ce “ET” logique correspond à 2, alors ce segment TCP est “flaggé” SYN.
Changer le netmask d’une adresse IP sans perdre les routes réseau associées
Si vous avez besoin de rectifier à la volée le netmask d’une adresse IP, sachez
qu’en utilisant la commande ifconfig
vous perdrez les routes associées à
l’interface réseau à laquelle l’adresse IP est liée. Pour éviter cela, utilisez
la commande ip
(de la suite d’utilitaires “iproute2”) :
root@machine:~# ip addr add 192.168.0.1/25 dev <interface réseau>
root@machine:~# ip addr del 192.168.0.1/24 dev <interface réseau>
Note : Cette manipulation fonctionne dans les deux sens (augmentation/diminution du subnet), veillez toutefois à ce que votre route par défaut soit toujours dans le subnet cible…
Forcer le démontage d’une partition montée via NFS lorsque le serveur est injoignable
Démonter une partition NFS montée depuis un client lorsque le serveur devient injoignable peut s’avérer assez frustrant. Deux méthodes qui généralement fonctionnent :
root@machine:~# umount -f /point/de/montage
Si cela ne fonctionne pas mieux, méthode “fainéante” (détache le “filesystem” de l’arborescence immédiatement, et supprime les références au “filesystem” dès qu’il le peut en tâche de fond) :
root@machine:~# umount -l /point/de/montage
Lister simplement les services en écoute avec ss
Pour peu que le paquet iproute
(ou iproute2
, selon les distributions) soit
installé, il est possible de lister tous les services et “daemons” en écoute
sans avoir recours à |grep
:
# ss -l
Options utiles :
-4
pour n’afficher que les sockets sur IPv4-n
pour désactiver la résolution de noms de ports-x
pour inclure les services écoutant sur des sockets UNIX
SSLifier un service à l’arrache avec socat
Besoin de rendre accessible temporairement un service via SSL ? socat
est votre ami :
socat OPENSSL-LISTEN:443,cert=certificat.crt,key=certificat.key,verify=0,reuseaddr,fork TCP4:localhost:80
Accéder à une socket UNIX locale sur une machine distante avec socat
À l’aide de socat
, vous pouvez créer une passerelle vous permettant d’utiliser
localement une socket UNIX située sur un serveur distant.
Sur le serveur distant :
socat TCP-LISTEN:6666,reuseaddr,fork UNIX:/var/run/socket.sock
Sur la machine locale :
socat TCP:serveur.loin.com:6666 UNIX-LISTEN:/var/run/socket.sock,fork
Vous pouvez à présent utiliser la socket /var/run/socket.sock
comme si vous
étiez sur le serveur distant.
⚠️ Attention, cette méthode créé une faille de sécurité potentielle : ne faites ceci que sur un réseau de confiance, et en aucun cas sur Internet sans firewall !
Bloquer simplement le trafic réseau vers une adresse ou un réseau IP
Pour bloquer très simplement le trafic réseau en provenance et/ou à destination
d’un réseau IP (et donc d’une adresse, si netmask /32
), il est possible avec
la commande ip
du paquet “iproute” (ou “iproute2”, selon les distributions
GNU/Linux) de déclarer une “nullroute” et donc d’ignorer tout paquet IP en
rapport avec le réseau ciblé :
ip route add blackhole 10.240.11.254/32
ip route del 10.240.11.254/32 # pour supprimer la nullroute
Écouter le traffic sur une socket UNIX
mv /path/to/sock /path/to/sock.original
socat -t100 -x -v UNIX-LISTEN:/path/to/sock,mode=777,reuseaddr,fork UNIX-CONNECT:/path/to/sock.original