Virtual Box 3
Réseau et Linux adresses statiques , routage, et forwarding et partage internet
Réseau et Linux adresses statiques , routage, et forwarding et partage internet
15/03/2023
Administration réseau Linux, adresses statiques , routage, et forwarding et partage internet
Pré-requis
Virtual box 1
VirtualBox X dernière mouture de préférence.
cours réseau IPV4
commandes: ip , ping
But
Savoir administrer les machines linux pour le réseau (commande ip add et link)
2 reseaux R0(m1,m2,m3) 192.168.0.0 et R1(m4,m5,m6) 192.168.1.0
les masques réseaux /16 et /32
1 passerelle appartenant à R0 (192.168.0.254) et R1 (192.168.1.254)
configurations des fichiers réseau
gestion du partage à internet dans les réseaux.
installation d'un service http (apache2)
client/serveur ssh
machine de base disponible pour éviter de la refaire ( sur linux3 plus rapide )
! attention login de votre compte sur linux3
(c'est toujours la même machine)
scp login@172.22.1.3:/Data/Outils_Logiciels/Linux/virtualbox_machines/Debian_11.2/Debian11_20032024.ova .
Pour les étudiants qui ne sont pas au lycée , mais disposant d'internet :
Ceci n'est utile que si vous êtes au lycée.
Quand vous allez avoir besoin d'internet sur vos machines .
Le fichier /etc/environment doit être adapté au lycée.
export http_proxy="http://10.0.0.1:3128"
export https_proxy="https://10.0.0.1:3128"
export ftp="ftp://10.0.0.1:3128"
export no_proxy="127.0.0.1,192.168.1.254,192.168.0.254"
il faudra adapter ce fichier en fonction de vos machines.
/etc/hosts : associer des adresses IP à des noms d'hôtes
/etc/networks : associer des noms d'hôtes à des adresses IP
/etc/services : noms des services tcp/udp ainsi que leur numéro de port
expliquer leur contenu
Pour réaliser vos schémas on utilisera de préférence Libre Office Draw
installer cette extension:
https://extensions.libreoffice.org/en/extensions/show/vrt-network-equipment
(double clic sur ce fichier)
Et vous retrouverez dans gallerie les symboles réseaux
Exemple du schéma attendu pour le TP (réalisé par Anthony avec Libre Office Draw)
Présentation des interfaces réseaux sur virtualbox
Création de la machine de base m1 à m6 puis la passerelle
m1 sera réalisée puis cloné pour m2 ..à m6 car elle se ressemble .
interface 1 (ici désactiver)
Donner le nom de cette interface et ses caractéristiques dans votre système.
Pour placer votre machine virtuelle dans le même réseau que la machine hôte
interface 4 (désactiver) ou qui n'existe pas.
Donner le nom de cette interface et ses caractéristiques dans votre système.
c'est une carte qui est sur un même switch (virtuel) que les autres machines virtuelle sur interne.
Permet de faire des réseaux isolés (du monde réel)
cette interface va nous servir à faire ce tp
ici Adapter 2 (interface 2)
Donner le nom de cette interface et ses caractéristiques dans votre système.
pour les 6 machines garder seulement l'interface interne (plus de nat)
en fait ici on va utiliser le masque '/16' ou 255.255.0.0 de sorte que toutes les machines vont se voire.
on va réaliser un réseau 0 , 192.168.0.0/16 (3 machines)
les machines m1,m2,m3
et un autre réseau 1 , 192.168.1.0/16 (3 machines)
les machines m4,m5,m6
les 6 machines en question n'auront plus besoin du pont ni nat , on garde que l'interface interne (sur un même switch toutes nos machines)
Sauf la passerelle qui sera la machine " passerelle " un peu linux1 chez nous !
seul la passerelle à accès a internet par une carte (nat)
plaçant les machines sur un switch , avec dia ou draw de libre-office ou packet tracer online ou non , ou à la main et photo pour joindre dans le pdf
Il est préférable d'utiliser draw libre-office , plus simple surtout l'outil est libre et open source.
m1 à m3 , m4 à m6 et la machine passerelle le tout relié par un seul switch interne.
et la passerelle qui aura une carte pour internet avec (nat)
de la machine virtuelle m1.
La machine m1 va permettre de faire les 5 autres après en la clonant (quand elle se sera terminée en tant que m1) dans la partie 2.
installer msdns , ce service va nous permettre l'identification avec le nom.loca
en étant root
apt update
apt upgrade
apt install avahi-daemon
ip --color address
# ainsi que la commande
lspci | grep Ethernet
# juste la pour faire la liaison avec les noms des interfaces
ip address add (ip a a)
ip link set (ip l s)
pour voir la configuration avec la commande :
ip -c a
par exemple : pour ajouter une adresse ip à l'interface enp0s8 : a pour addresse et a pour add! plus rapide à saisir.
ip a a 192.168.0.1 dev enp0s8
pour voir la configuration avec la commande :
ip -c a
on constate que l'interface possède son ip mais elle est down et pour la passer up
ip l s enp0s8 up
pour voir la configuration avec la commande :
ip -c a
/16 c'est quoi ? quel est le réseau de cette adresse avec ce masque?
exécuter la commande et vérifier.
exécuter la commande et vérifier.
Ce protocole va permettre de donner un nom a la machine que vous allez réaliser. Le nom sera associé à l'ip de la machine sur votre réseau. (ici m1.local , pour la tester ping m1.local)
attention :
il faut avoir activer le service msdns (normalement déjà fait)
apt update
apt upgrade
apt install avahi-daemon
# on peut verifier que le service est bien actif [ + ]
service --status-all
...
[ + ] avahi_daemon
...
on va pouvoir renommer la m1
/etc/hostname
/etc/hosts #à adapter
remplacer son nom actuel par m1
et la rebooter pour continuer..
Comment est la configuration de cette machine à chaque démarrage ?
pour ne pas refaire le travail précèdent à chaque fois (on a tester la configuration) maintenant on va la figer.
modifier le fichier (man interfaces)
bien le sauvegarder avant de le modifier !! interfaces.bak
vi /etc/network/interfaces
en exemple ici le fichier interfaces de m1
etudiant@m1:~$ more /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface / qu'on a enlevé depuis le début
# allow-hotplug enp0s3
# iface enp0s3 inet dhcp
# réseau interne
auto enp0s8
allow-hotplug enp0s8
iface enp0s8 inet static
address 192.168.0.1
netmask 255.255.0.0
broadcast 192.168.255.255
etudiant@m1:~$
pour tester votre nouveau fichier de configuration
attention ! la carte réseau doit être libre de configuration pour tester votre fichier!
par exemple pour effacer une ip déjà attribuée sur une interface :
ip a d 192.168.0.1/16 dev enp0s8
ou (même commande , d pour del delete)
ip a del 192.168.0.1/16 dev enp0s8
une fois la carte libre :
service networking restart
si pas de pb ! on peut rebooter et verifier que m1 fonctionne bien
nous sommes en possession d'une machine Debian correspondant au machine type du TP.
m2,m3,m4,m5,m6
terminer les autres machines en les clonant et en les modifiants ensuite .
les machines se voient toutes?
tester msdns
ping m1.local
vérifier les configurations et ping des machines !
expliquer la procédure et vérifier que cela fonctionne bien.
Refaire un plan de routage , (schéma avec les IP les masques et les machines)
a partir d'ici on possède 6 machines , sur 2 réseaux !
m1 , m2 , m3 et m4 , m5 , m6
justifier .
Réaliser une machine un peu comme les précédentes mais on garde l'interface nat et l'interface interne qui aura 2 ip.
192.168.0.254 et 192.168.1.254
fichier interfaces de la passerelle.
# réseau passerelle
auto enp0s8
allow-hotplug enp0s8
# acces internet nat
allow-hotplug enp0s3
iface enp0s3 inet dhcp
#pour le réseau 0
iface enp0s8 inet static
address 192.168.0.254
netmask 255.255.255.0
broadcast 192.168.0.255
#pour le réseau 1
iface enp0s8 inet static
address 192.168.1.254
netmask 255.255.255.0
broadcast 192.168.1.255
avec ping tester la visibilité des réseaux entre eux! (nos réseaux sont en classe C )
est il possible d'accéder au reseau 1 depuis le reseau 0 et réciproquement ?
lancer des ping pour savoir
mettre une route par défaut permet de renvoyer sur la passerelle pour "forwarder" transmettre les messages ...
pour faire une passerelle chaque machine devra avoir une route par défaut vers la machine passerelle
je donne la commande car elle n'est pas évidente à trouver .. mais bon ;)
ip route # liste les routes
ip route del 192.168...... # pour effacer une à une
ip route flush all # pour effacer les routes
ip route # pour vérifier
ip route add default via 192.168.0.254 dev enp0s8 onlink #on ajoute la route vers la passerelle
il va falloir mettre la bonne route pour chaque machines (on teste le routage) si on les redémarres elles vont oubliées vos lignes de commandes.
une seule route par défaut par machine
sachant que gateway en anglais c'est passerelle !
man interfaces
trouver le moyen d'ajouter la passerelle dans ce fichier pour qu'a chaque démarrage cela soit mis.
ajouter une passerelle pour chaque machine ! attention il y a 2 passerelles!
on va apprendre à la passerelle de faire l'ip forward !
la commande est
echo 1 > /proc/sys/net/ipv4/ip_forward
on va "forwarder" les ipv4 (on active avec un 1 et 0 pour désactiver)
ce qui va s'exprimer par la passerelle qui va renvoyer dans l'autre réseau les requêtes d'un autre réseau.
m1 ping m6 et jouer avec la passerelle pour activer ou non le "forward" !
avec des ping..
La passerelle fait elle sont travail ?
on édite le fichier /etc/sysctl.conf en créant la ligne comme ci-dessous. L'avantage de cette méthode c'est qu'elle est définitive. A chaque redémarrage, le routage sera activé.
net.ipv4.ip_forward = 1
on pourra redémarrer la machine passerelle elle va garder la configuration
ou pour valider la nouvelle config sans redémarrer la commande :
sysctl -p
Utilisation de iptables (pare-feu)
petit script permettant d'enlever les règles de iptables. (pas nécessaire mais peut éviter de relancer une machine)
Dans le répertoire de root (/root)
flush.sh
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
la machine m1 va "bombarder de ping" la passerelle.
Depuis la passerelle lancer une commande ping sur passerelle.local
qui doit répondre si elle est allumée , n'est ce pas (passerelle.local permet d’accéder à l'ip de la machine passerelle)
sur la machine passerelle on va lancer la commande
rejetter la demande !
iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT
iptables -nvL
root@debian:~# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
4 336 REJECT 1 -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 8 reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
#pour effacer la regle REJECT
iptables -F # Nettoie
vous verrez le ping répondre car la règle est enlevée.
iptables -nvL
root@debian:~# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
root@debian:~#
Autre facon de ne pas repondre !
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
root@debian:~# iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT
root@debian:~# iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
root@debian:~# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
8 672 REJECT 1 -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 8 reject-with icmp-port-unreachable
0 0 DROP 1 -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 8
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
root@debian:~#
on va effacer la règle ligne 2 avec
iptables -D INPUT 2
root@debian:~# iptables -D INPUT 2
root@debian:~# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
132 11088 REJECT 1 -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 8 reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
plus de règle INPUT !!
root@debian:~# iptables -D INPUT 1
root@debian:~# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
cette commande peut bloquer l'accés avec ssh !
iptables -A INPUT -j REJECT
Pour le partage d'internet maintenant (faire un flush avant de tenter)
Les commandes à saisir pour configurer iptables entre l’interface intranet0 et l’interface internet0 sont données ci-dessous. Attention, vous devez remplacer dans le code le nom des interfaces par leur nom sous linux !
ici
internet0 est surement enp0s3 (la nat) (accès à internet)
intranet0 est surement enp0s8 (la carte sur notre réseau)
Script autorisant le partage internet de la passerelle !
dans l'espace de /root
share_internet.sh :
iptables -t nat -A POSTROUTING -o internet0 -j MASQUERADE
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i intranet0 -o internet0 -j ACCEPT
vérifier que vos machines des réseaux ont maintenant accès à internet.
à chaque redémarrage de la passerelle il faudra relancer ce script (l'administrateur qui autorise ou pas internet à l'aide du Firewall)
on peut sauvegarder les règles iptables avec la commande iptables-save
iptables-save > iptables.rules
et pour récupérer une configuration
iptables-restore < iptable.rules
tester si on peut se connecter avec ssh de la passerelle a m1, m2, m3 ,m4, m5, m6 ?
et de m1 vers la passerelle?
A l'aide la commande ip relever les ipv6 de la machine M1 à M6 et celle de la passerelle.
Justifier leur valeur , on y retrouve l'adresse MAC des interfaces
tester cette commande , expliquer qui reponds
ping ::1
ping ipV6 de m1 depuis la passerelle.
installer nmap sur la passerelle , les autres machines doivent aussi être dans le réseau.
en root :
apt update
apt install nmap
A quoi sert nmap?
tester :
nmap -sS 192.168.0.1
nmap -sS 192.168.1.1
nmap -sS 192.168.1.254
nmap -sS 192.168.0.254
depuis la passerelle on va taper:
nmap -sS 192.168.0.1
on va arrêter le service ssh de la machine m1
service ssh stop
puis
nmap -sS 192.168.0.1
nmap 192.168.1.*
puis
nmap 192.168.0.*
pour approfondir :
Le broadcast avec ping peut se faire depuis la passerelle .
ping 192.168.0.255 -b
et
ping 192.168.1.255 -b
mais ici personne ne répond car
sous linux le broadcast est ignoré par défaut depuis quelques années, pour éviter de polluer ...
il faut pour ne pas l'ignorer ajouter cette ligne dans /etc/sysctl.conf
net.ipv4.icmp_echo_ignore_broadcasts = 0 #1 si on veut ignorer
et pour la valider , taper
sysctl -p
il va falloir faire cela sur les 6 machines de m1 a m6
Depuis la passerelle testons le broadcast
retester ..
donner les résultats des 2 commandes (ping)
pourquoi ?
sur notre passerelle on va installer un serveur web
apt update
apt install apache2
si tout se passe bien !
vérifier ensuite la présence du service web
avec nmap vérifier aussi quel port est ouvert pour ce service avec cette commande
nmap 127.0.0.1
quel est le port qui va nous servir donc ?
on va installer sur m1 et m4 le client lynx , qui est ni plus ni moins un client web en texte (ancêtre de chromium)
Attention a bien partager internet avec m1 (la passerelle doit partager !)
apt update
apt install lynx
attention au réglage du proxy , et du no_proxy vu en début de TP
sur la passerelle nous avons notre serveur http , il contient déjà une page html mais bien trop compliqué pour débuter !
le site web démarre toujours par le fichier index.html
mv /var/www/html/index.html /var/www/html/index.html.bak
et le remplacer par:
cet index.html
<!DOCTYPE html>
<html>
<head>
<title>bonjour</title>
</head>
<body>
<h1>Bonjour le monde.</h1>
</body>
</html>
sur m1 et m4
avec lynx qui est client web (comme firefox, chrome.. mais en mode texte)
en étant étudiant et pas de proxy ...
lynx 192.168.0.254
sur m1 , avec etudiant dans un repertoire ~/Works/siteweb
(installer si pas encore fait )
apt update
apt install wget
wget 192.168.0.254
Expliquez ce que vous venez de faire.
les fichiers .ova
chez vous sur linux3
sur linux3 dans un ~/Works/Virtualbox3