Les commandes telles que ifconfig et route sont dépréciées.
La commande ip
vient remplacer ces commandes.
Afficher les adresses IP :
ip address
Afficher en couleur les adresses IP :
ip -c address
Afficher l'adresse IP d'une interface :
ip address show dev eth0
Purger la configuration IP :
ip address flush dev eth0
Configurer/Ajouter une adresse IP sur une interface :
ip addr add 192.168.1.1/24 dev eth0
Supprimer une adresse IP sur une interface :
ip addr del 192.168.1.1/24 dev eth0
Activer une interface :
ip link set eth0 up
Désactiver une interface :
ip link set eth0 down
Afficher la tables de routage :
ip route
Ajouter une route statique :
ip route add 10.10.10.0/24 via 192.168.1.254 dev eth0
Supprimer une route statique :
ip route del 10.10.10.0/24
Un namespace réseau fournit un environnement réseau isolé, ce qui signifie que les interfaces réseau, les tables de routage, les règles de pare-feu, etc., peuvent être spécifiques à ce namespace sans affecter les autres parties du système.
Pour lister les namespaces :
ip netns list
Pour créer un nouvel espace nommé netns01
:
ip netns add netns01
Pour lancer une commande dans cet espace de nom, par exemple un Shell bash qui va nous permet de faire des tests :
ip netns exec netns01 bash
On lance un
bash
dans un contexte réseau netns01
.
Dans ce bash, en exécutant la commande suivante :
ip a
On obtient uniquement une interface loopback qui est DOWN :
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
Sortir du bash :
exit
Pour ajouter une paire d'interfaces Ethernet virtuelle en capacité de communiquer entre elles :
ip link add xeth0 type veth ip a
On peut constater la création des deux interfaces veth0@xeth0 et xeth0@veth0 :
7: veth0@xeth0: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 4e:c3:ad:3d:c9:98 brd ff:ff:ff:ff:ff:ff 8: xeth0@veth0: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 02:48:50:e3:54:f3 brd ff:ff:ff:ff:ff:ff
On affecte l'une des interfaces Ethernet virtuelle à l'espace netns01, par exemple veth0 :
ip link set veth0 netns netns01
Par la commande ip a
, on constate qu'il ne reste plus qu'une interface :
8: xeth0@if7: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 02:48:50:e3:54:f3 brd ff:ff:ff:ff:ff:ff link-netns netns01
Par la commande ip –netns netns01 a
, on constate l'interface basculée sur le namespace netns01 :
7: veth0@if8: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 4e:c3:ad:3d:c9:98 brd ff:ff:ff:ff:ff:ff link-netnsid 0
On active chacune des interfaces, celle de base et celle qui est dans le namespace :
ip link set xeth0 up ip netns exec netns01 ip link set veth0 up
On affecte une adresse IP dans un même réseau à chacune des interfaces
ip addr add 192.168.0.1/24 dev xeth0 ip netns exec netns01 ip addr add 192.168.0.2/24 dev veth0
Pour tester on lancer un ping depuis le namespace netns01 :
ip netns exec netns01 ping 192.168.0.1
On applique les mêmes commandes que le tuto ci-dessus :
# Création namespace ip netns add netns02 # Création d'une paire d'interfaces ip link add xeth1 type veth peer name veth1 # Affectation d'une des interfaces au namespace ip link set veth1 netns netns02 # Activation de interfaces ip link set xeth1 up ip netns exec netns02 ip link set veth1 up # Configuration des adresses IP ip addr add 192.168.1.1/24 dev xeth1 ip netns exec netns02 ip addr add 192.168.1.2/24 dev veth1
A revoir
L'objectif est de permettre les réseaux de communiquer vers l'extérieur.
Création d'une interface bridge nommée br0 :
ip link add br0 type bridge
Activation de l'interface :
ip link set br0 up
On affecte au bridge des adresses IP dans les mêmes réseaux que nos réseau isolé :
ip addr add 192.168.0.254/24 dev br0 ip addr add 192.168.1.254/24 dev br0
Attachement des interface Ethernet virtuelle au bridge :
ip link set xeth0 master br0 ip link set xeth1 master br0
Ajouter les passerelles par défaut pour chacun de nos réseau isolés :
ip netns exec netns01 ip route add default via 192.168.0.254 ip netns exec netns02 ip route add default via 192.168.1.254