1
1
45
03 - IPs et routes
Polaire edited this page 2024-12-12 18:15:22 +01:00

0 - Objectifs de la séquence


  • Fixer les IPs de nos machines virtuelles
  • Configurer nos trois machines de labs pour qu'elles puissent router
  • Mettre en place les routes nécessaires pour que toutes nos machines puissent communiquer
  • Pinger les trois VMs depuis notre machine hôte et toutes les machines virtuelles entre elles

A Mise en place des IPs

Au travers de la mise en place des IPs sur les trois machines virtuelles, on va utiliser trois méthodes différentes pour fixer nos IPs. Une en utilisant les cron (un équivalent des Tâches Planifiées de Windows), une où l'on va modifier un fichier sous /etc/network/ et une en utilisant le paquet "nmtui".


  • Fixer les IPs de nos machines virtuelles

A.1 Deb01 - Cron @reboot


  • Fixer les IPs de nos machines virtuelles

Une fois connecté avec l'utilisateur root sur Deb01, on va commencer par faire :

ip a

En sortie on va alors voir nos deux cartes réseaux. La première est censée être en NAT et avoir déjà une IP fonctionnelle. La seconde devrait apparaitre en "down". On va récupérer son nom, ici : "ens37"

Il va falloir lui attribuer une adresse IP et activer la carte. On va utiliser la commande ip

# On lui donne son IP selon le modèle : ip address add IP/MASK dev nom_de_l'interface_reseau 
# Puis on active la carte, en pensant à modifier "ens37" avec le nom de la carte réseau visée.

ip address add 10.10.0.1/30 dev ens37
ip link set ens37

On fait à nouveau un "ip a", on voit notre carte avec son IP et qu'elle est bien "Up"

Souci : au prochain redémarrage, il faudra retaper les commandes que l'on vient d'entrer. Pour l'éviter on va ajouter demander à ce qu'une commande soit exécutée à chaque redémarrage, via cron.

On utilise la commande :

crontab -e

On va nous demander de choisir entre nano et vim-mini, personnellement je préfère vi. Je fais donc "2" puis "Entrée".

On arrive alors sur le fichier crontab, on va se placer tout en bas et ajouter la ligne :

@reboot ip address add 10.10.0.1/30 dev ens37 | ip link set ens37 up

DEB01_Cron

On enregistre et on quitte, on peut effectuer un redémarrage pour vérifier le bon fonctionnement.

A.2 Deb02 - /etc/network


  • Fixer les IPs de nos machines virtuelles

Pour Deb02 on va utiliser la méthode conseillée pour fixer une IP sur les distributions Debian : la modification de fichiers dans /etc/network/ On peut modifier directement le fichier /etc/network/interfaces ou bien créer des fichiers de configuration indépendant sous /etc/network/interfaces.d/

La seconde solution est préférable lorsqu'il y a beaucoup de cartes réseaux, notamment pour traiter les interfaces réseaux dans des fichiers séparés, indépendamment les unes des autres.

Ici, nous n'avons "que" deux cartes et nous sommes dans un environnement de tests, on modifie donc le fichier /etc/network/interfaces

On va commencer par utiliser (encore !) la commande "ip a" pour connaître le nom de nos interfaces réseaux. Ici, ens37 et ens38. On relève leurs adresses MAC pour s'assurer de la correspondance des cartes réseaux avec les IP visés.

Ici on ens37 sur le réseau RD1.D2 et ens38 pour RD2.C1.

Puis on rentre dans le fichier interfaces avec vi ou nano.

vi /etc/network/interface

On remarque notamment que la carte "ens36" est configurée en DHCP alors qu'aucune "ens36" n'était présente lors du ip a. Les cartes ens37 et ens38 sont absentes. On édite le fichier pour passer en IPs fixes, supprimer la carte "ens36" et ajouter nos "ens37" et "ens38". On va uniquement ajouter une adresse pour chaque carte. De la même manière qu'on spécifie "address" on aurait pu ajouter une "gateway", ainsi que des "dns-nameservers" et un "dns-domain".

On sauvegarde notre fichier et on va passer une commander pour recharger le service network :

systemctl restart networking.service

On repasse un "ip a" pour s'assurer que nos cartes sont bien configurés.

Pour finir sur cette partie on va vérfier que les cartes de Deb01 et Deb02 sur le réseau RD1.D2 parviennent à communiquer, en envoyant cinq paquets de ping via l'option "-c".

ping -c 5 10.10.0.1

A.3 Cos01 - nmtui


  • Fixer les IPs de nos machines virtuelles

On passe maintenant sur la machine CentOS. Les distributions type RedHat (Red Hat Enterprise Linux, CentOS, Fedora, RockyLinux ou encore AlmaLinux notamment) intègrent par défaut le paquet "nmtui".

Ce paquet propose une interface semi-graphique qui va nous permettre de facilement configurer le réseau et renommer la machine via les touches directionnelles, "Entrée" et "Echap".

On commence par vérifier le nom de notre machine dans "Set a hostname/Définir le nom d'hôte du système".

Puis on va configurer la carte réseau qu'on a mit sur le LAN Segment RD2.C1. Pour s'assurer qu'on est sur la bonne carte, on compare l'adresse MAC indiqué dans les "Settings" de notre VM et celle affichée dans nmtui. Ici il s'agit de la carte "ens224".

On passe la configuration IPv4 en "Manuel", on ajoute l'adresse : 10.10.0.6/30 On va également désactivé l'IPv6 et s'assurer que la carte se connecte automatiquement, on pense bien à "Valider".

On peut redémarrer la VM ou passer par le menu "Activer une connexion" pour désactiver/activer la carte modifiée.

On peut alors passer un ip a et/ou tenter de pinger directement Deb02 pour s'assurer que notre carte est correctement configuré.

En revanche, nos machines Deb01 et Cos01 ne peuvent pas communiquer. La machine ne peut pas pinguer d'autres machines que Deb01. On va permettre à toutes les machines de communiquer en mettant en place le routage et les routes.


  • Fixer les IPs de nos machines virtuelles

B Routes et routage

Afin que les machines Deb01 et Cos01 puissent communiquer il va falloir :

  • s'assurer que les machines que doivent faire transiter les paquets soient capable de router
  • mettre en place les routes réseaux pour que Deb01 et Cos01 sache qu'il faut passer par Deb02 pour communiquer

On va donc voir comment activé le routage et ajouter des routes, et ce, de manière temporaire comme permanente.

L'idée est que toutes les machines de notre lab puisse pinger n'importe quelle carte réseau du lab.


  • Fixer les IPs de nos machines virtuelles
  • Configurer nos trois machines de labs pour qu'elles puissent router
  • Mettre en place les routes nécessaires pour que toutes nos machines puissent communiquer

B.1 Routages


  • Configurer nos trois machines de labs pour qu'elles puissent router

Au vu de notre schéma on va vouloir que toutes nos machines virtuelles soient en mesure de router les paquets.

Deb01 va devoir router pour que les paquets entre notre machine hôte et le reste du lab (Deb02 et Cos01) On veut que Deb02 fasse de l'IP forward pour que Deb01 puisse communiquer avec Cos01 ; et Cos01 avec Deb01 ainsi que la machine hôte Enfin on ajoutera par la suite une carte réseau à Cos01, on voudra donc également que le routage soit actif sur la machine.

On va donc passer sur toutes nos machines virtuelles, pour activer donc l'IP forward avec la commande

sysctl net.ipv4.ip_forward=1

On peut également utiliser la commande

echo 1 > /proc/sys/net/ipv4/ip_forward

On vérifie ensuite que l'ip forward s'est bien activé sur l'ensemble des VMs en tapant

cat /proc/sys/net/ipv4/ip_forward

On doit obtenir une valeur à 1 sur nos trois machines.

Avec cette méthode, le ip_forward n'est pas permament. Au prochain redémarrage, la valeur repassera à 0. Pour rendre note ip_forward permanent deux solutions :

  • modification du fichier /etc/sysctl.conf
  • ajout d'un cron comme vu pour fixer l'IP de Deb01

Pour la modification du fichier /etc/sysctl.conf, on va l'ouvrir avec un éditeur de textes (vi, nano ...) et aller dé-commenter la ligne du bloc visé comme ci-dessous :

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

Si on a pas passé une des commandes au-dessus, on peut recharger le fichier sysctl.conf :

sysctl -p /etc/sysctl.conf

On peut également passer par cron, on accède au fichier crontab :

crontab -e

Et on ajoute en fin de fichier :

@reboot sysctl net.ipv4.ip_forward=1

  • Fixer les IPs de nos machines virtuelles
  • Configurer nos trois machines de labs pour qu'elles puissent router
  • Mettre en place les routes nécessaires pour que toutes nos machines puissent communiquer

B.2 Deb01


  • Mettre en place les routes nécessaires pour que toutes nos machines puissent communiquer

Pour Deb01 il va falloir créer la route pour que la machine sache sortir du réseau 10.10.0.0/30 pour aller interroger le réseau 10.10.0.4/30. On va utiliser la carte réseau de Deb02 accessible par Deb01 (10.10.0.2) comme passerelle.

On va donc utiliser la commande ip route add, on tape la commande suivante (attention à adapter le nom de la carte réseau) :

ip route add 10.10.0.4/30 via 10.10.0.2 dev ens37

On vérifie avec la commande :

ip route

A cet instant, la route n'est pas fixé, elle disparaitra si on redémarre notre VM. Pour fixer la route, on va utiliser la même méthode que pour fixer l'IP, avec la commande :

crontab -e

On ajoute en fin de la ligne qu'on avait créer précédemment :

&& ip route add 10.10.0.4/30 via 10.10.0.2 dev ens37

Le double esperluète va permettre de ne lancer la commande qu'une fois que la commande précédente sera bien terminée.

Notez qu'on aurait pu créer un script reprenant l'enchainement de nos commandes en cron pour l'executer au démarrage.

B.3 Deb02


  • Mettre en place les routes nécessaires pour que toutes nos machines puissent communiquer

Pour l'instant on va mettre en place une seule route sur notre Deb02, la route permettant de contacter la carte NAT de Deb01 (celle qui nous permet d'aller sur internet depuis Deb01). Pour ce faire on va passer par 10.10.0.1 qui est accessible depuis 10.10.0.2.

Si vous n'avez pas noté auparavant l'IP de cette carte, il faut aller sur Deb01 et faire un "ip a" pour retrouver le réseau de cette carte. Dans mon cas c'est : 172.16.9.0/24 Il nous faut également le nom de l'interface réseau sur laquelle on a positionné l'IP 10.10.0.2 ; ici la carte nommée "ens37"

Ici, on va ajouter notre route comme on avait ajouté l'IP à deb02, en se rendant dans le fichier : /etc/network/interfaces

On va ajouter la ligne suivante :

post-up ip route add 176.16.9.0/24 via 10.10.0.1 dev ens37

Attention à bien ajouter la ligne sur la carte qui a 10.10.0.2 comme IP !

On peut redémarrer la machine pour s'assurer que la route est bien fixée. On aurait également pu passer la commande pour redémarrer le service networking comme vu lorsqu'on a fixé les IPs de Deb02.

B.4 Cos01


  • Mettre en place les routes nécessaires pour que toutes nos machines puissent communiquer

Pour Cos01 on va ajouter deux routes :

  • une pour joindre le réseau 10.10.0.0/30
  • une pour joindre le réseau de notre carte qui accède à internet sur Deb01, ici 172.16.9.0/24

A chaque fois on passera par la carte de Deb02 en 10.10.0.5 car c'est celle qui est accessible depuis la carte de Cos01 (10.10.0.6).

Afin de rendre ses routes permanentes, on va utiliser nmtui. (uniquement valable sur les distribution RedHat)

nmtui

Une fois dans l'interface semi-graphique, on se rend sur la carte qui nous intéresse, et la modifier (comme vu lorsqu'on a fixer l'IP sur Cos01).

On va se rendre sur la ligne concernant le routage et faire "Modifier".

Une fois ici on va ajouter nos routes, les métriques ne sont pas nécessaire dans notre cas. Mais, elles permettraient de rendre des routes prioritaires comparées à d'autres, ce qui peut être utile pour de l'équilibrage de charge, par exemple.

On oublie pas de valider les routes, puis les moficiation apportées à la connexion. Une fois de retour dans l'interface en ligne de commande, on vérifie nos routes : elles ne sont pas encore actives.

On pourrait passer dans nmtui par le menu "Activer une connexion" pour désactiver/activer la carte, on peut également passé la commande :

nmcli networking off && nmcli networking on

B.5 Machine hôte


  • Mettre en place les routes nécessaires pour que toutes nos machines puissent communiquer

On veut pouvoir pinger l'ensemble des cartes réseaux depuis la machine hôte, on va donc ajouter les routes nécessaires sous la machine hôte. Pour ma part j'utilise un OS Unix (Linux Mint), pour Windows, les commandes sont différentes.

Etant donné que c'est ma machine hôte, je ne souhaite pas que les routes soient permanentes, je ne vais donc pas "fixer" les routes avec un méthode vu ci-dessus. De plus, la passerelle utilisée sur ces routes est la carte NAT de Deb01. Or elle est configurée en DHCP et peut donc être modifiée au redémarrage.

Pour repérer le nom de la carte qu'on va viser avec nos routes peux faire un ip et trouver ma carte via son adresse MAC ou son IP qui est ici dans le réseau 172.16.9.0/24. Si on a beaucoup de cartes sur l'hôte on peut faire un grep sur les trois premiers octets de l'adresse du réseau.

ip a | grep 172.16.9

On voit donc que ma carte sur laquelle ajouter les routes est la carte nommée "vmnet8".

On ajoute les route pour accéder aux réseaux 10.10.0.0/30 et 10.10.0.4/30, à chaque fois via ma carte NAT sur notre Deb01. Contrairement à nos machines de labs, je ne me connecte pas directement en root sur ma machine hôte, je n'oublie donc pas de "sudo".

sudo ip route add 10.10.0.0/30 via 172.16.9.130 dev vmnet8 
sudo ip route add 10.10.0.4/30 via 172.16.9.130 dev vmnet8 

NB : Si vous redémarrez Deb01, que son IP sur la carte NAT est modifiée et que vous ne redémarrez pas la machine hôte ; il faudra supprimer les routes pour les recréer :

sudo ip route del 10.10.0.0/30  
sudo ip route del 10.10.0.4/30  

Puis on repasse les "ip route add" en choisissant la nouvelle IP comme passerelle.


  • Fixer les IPs de nos machines virtuelles
  • Configurer nos trois machines de labs pour qu'elles puissent router
  • Mettre en place les routes nécessaires pour que toutes nos machines puissent communiquer

C Tests de pings

Afin de valider cette séquence, on va pinger l'ensemble des cartes réseaux du lab, depuis toutes les machines concernées, y compris la machine hôte.


  • Fixer les IPs de nos machines virtuelles
  • Configurer nos trois machines de labs pour qu'elles puissent router
  • Mettre en place les routes nécessaires pour que toutes nos machines puissent communiquer
  • Pinger les trois VMs depuis notre machine hôte et toutes les machines virtuelles entre elles

C.1 Pings depuis l'hôte


  • Pinger les trois VMs depuis notre machine hôte et toutes les machines virtuelles entre elles

On va tenter de ping l'ensemble des IP du mon lab depuis la machine hôte soit : 10.10.0.1 et 10.10.0.2 pour le réseau RD1.D2, ainsi que 10.10.0.5 et 10.10.0.6 pour le réseau RD2.C1. On ping également la carte NAT de Deb01, ici 172.169.9.130

C.2 Pings depuis Deb01


  • Pinger les trois VMs depuis notre machine hôte et toutes les machines virtuelles entre elles

Depuis Deb01 on va ping les autres cartes de notre lab, soit les IPs de Deb02 (10.10.0.2 et 10.10.0.5) ainsi que celle de Cos01 (10.10.0.6)

C.3 Pings depuis Deb02


  • Pinger les trois VMs depuis notre machine hôte et toutes les machines virtuelles entre elles

Depuis Deb02 on va ping les cartes de Deb01 (172.16.9.30 et 10.10.0.1) ainsi que celle de Cos01 (10.10.0.6)

C.4 Pings depuis Cos01


  • Pinger les trois VMs depuis notre machine hôte et toutes les machines virtuelles entre elles

Depuis Cos01 on va ping les cartes de Deb01 (172.16.9.30 et 10.10.0.1) ainsi que celles de Deb02 (10.10.0.2 et 10.10.0.5)


  • Fixer les IPs de nos machines virtuelles
  • Configurer nos trois machines de labs pour qu'elles puissent router
  • Mettre en place les routes nécessaires pour que toutes nos machines puissent communiquer
  • Pinger les trois VMs depuis notre machine hôte et toutes les machines virtuelles entre elles

On a rempli les objectifs de la séquence ! Dans celles à venir on va utiliser IPTables pour permettre à nos machines d'accéder aux internets grâce au NAT et on va sécuriser nos réseaux toujours grâce à IPTables