Ceci est une procédure permettant d'installer un serveur DHCP sur une machine Debian ainsi qu'une passerelle réseau.
Son nom sera: netgateway.
Cette machine comportera :
vmnet différentsOn désigne par vmnet une carte réseau virtuelle.
Dans ce cas précis, on utilise une VM qui comporte deux cartes (et donc connectée à deux vmnet différents) :
eth0 peut changer selon la machine).eth1 peut changer selon la machine).Vous devrez sans doute adapter les noms des interfaces.
Pour en connaître les noms réelles, utilisez:
ip a
Vous devez impérativement gérer ces deux réseaux sur deux vmnet différents.
Prenez un papier et un crayon et préparez votre travail en amont afin d'éviter les erreurs.
Faites vérifier votre préparation (schémas) par le formateur.
Ceci est aussi à adapter aux besoins (c'est-à-dire au plan d'adressage que vous auriez mis en place)
Toute configuration ne respectant pas ce qui précède risque de provoquer des dysfonctionnements sur le réseau local. Il est de votre responsabilité de configurer correctement vos cartes vmnet.
Dans ce qui suit, vous allez devoir modifier les fichiers en adaptant le nom de l'interface réseau :
eth0 doit être remplacé par ensXX;eth1 doit être remplacé par ensYY.Exercice: vous allez adapter le nom de cette interface selon le nom de l'interface donné par le système d'exploitation.*
IMPORTANT: faites des sauvegardes de votre configuration ou utilisez etckeeper
Ecrivez un script qui édite /etc/network/interfaces en rajoutant les informations nécessaires, et surtout en adaptant les identifiants des interfaces réseau.
Les paramètres suivants sont à utiliser:
INTERFACE_WAN=eth0
INTERFACE_LAN=eth1
LAN_IP=172.16.81.2
LAN_NET=172.16.81.0
LAN_MASK=255.255.255.0
LAN_BROADCAST=172.16.81.255
Pour cela, utilisez l'exemple suivant:
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet static
address 172.16.81.2
dns-nameservers 172.16.81.2
network 172.16.81.0
netmask 255.255.255.0
broadcast 172.16.81.255
Note: il n'y a pas de gateway (eth1 n'est pas la passerelle vers Internet)
On redémarre:
sudo systemctl restart networking
On installe isc-dhcp:
sudo apt-get install isc-dhcp-server
On fait une copie de sauvegarde du fichier de configuration:
sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak
Editer le fichier /etc/default/isc-dhcp-server
Modifier la valeur de INTERFACES:
INTERFACES="eth1"
On édite ce fichier /etc/dhcp/dhcpd.conf:
ddns-update-style none;
# option definitions common to all supported networks...
option domain-name "exemple.cesi";
option domain-name-servers 172.16.81.2;
default-lease-time 600;
max-lease-time 7200;
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;
# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;
# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.
subnet 192.168.0.0 netmask 255.255.255.0 {
}
On ajoute le paragraphe suivant:
subnet 172.16.81.0 netmask 255.255.255.0 {
authoritative;
range 172.16.81.13 172.16.81.50;
option domain-name-servers 172.16.81.2 ;
option domain-name "example.com";
option routers 172.16.81.2;
default-lease-time 3600;
max-lease-time 3600;
option subnet-mask 255.255.255.0;
option broadcast-address 172.16.81.255;
}
On ajoute le paragraphe suivant pour permettre à un hôte de se connecter et obtenir une adresse IP:
host debiantsr {
hardware ethernet 00:0c:29:be:f9:93;
fixed-address 172.16.81.11;
}
Une fois le réseau redémarré et isc-dhcp configuré on peut le démarrer (ou redémarrer avec restart):
sudo systemctl start isc-dhcp-server
Le fichier /var/lib/dhcp/dhcpd.leases contient les réservations en cours:
less /var/lib/dhcp/dhcpd.leases
Les journaux permettent d'afficher les informations renvoyées par le serveur:
sudo journalctl -f -u isc-dhcp-server
Enlever -f pour un affichage normal (c'est-à-dire qui utilise la commande less).
Le paramètre -f permet d'avoir le même comportement que tail -f
Voir cette page: https://www.isc.org/community/tools/
sudo ne /etc/sysctl.conf
On décommente les lignes suivantes:
net.ipv4.ip_forward=1
# ...
net.ipv6.conf.all.forwarding=1
On met à jour le système par rapport à cette nouvelle configuration
sudo sysctl -p
Et on vérifie que l'on obtient 1 en appelant cette commande:
$ cat /proc/sys/net/ipv4/ip_forward
1
Ecrire un script qui remplace:
net.ipv4.ip_forward=1 par net.ipv4.ip_forward=0net.ipv6.conf.all.forwarding=1 par net.ipv6.conf.all.forwarding=1Afin de permettre à une machine se connectant à cette passerelle d'accéder à Internet, il faut ajouter la règle suivante (n'oubliez pas d'adapter l'identifiant réseau):
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Cependant, cette règle sera perdue au prochain redémarrage de la machine.
Pour éviter cela, on va installer un paquet qui permet de sauvegarder la configuration iptables et de la restaurer automatiquement au démarrage.
sudo apt-get install iptables-persistent
Au moment de l'installation, l'installeur nous demande si nous souhaitons sauvegarder les règles. Ce qui est ici le cas.
Imaginons que nous effectuions un changement temporaire. Par exemple une règle de NAT qui redirige le port 80 vers le port 8080:
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
Si on veut rendre cette nouvelle règle permanente (c'est-à-dire active au prochain redémarrage de la machine), il suffit de relancer la commande suivante pour sauvegarder à nouveaux les règles iptables:
sudo dpkg-reconfigure -p critical iptables-persistent
Cette dernière commande (dpkg-reconfigure) est l'équivalent de l'exécution des commandes suivantes:
iptables-save >/etc/iptables/rules.v4
ip6tables-save >/etc/iptables/rules.v6
Au redémarrage, on a l'équivalent des commandes suivantes qui est exécuté par iptables-persistent
iptables-restore < /etc/iptables/rules.v4
ip6tables-restore < /etc/iptables/rules.v6
Voir cette réponse sur StackOverflow
Les commandes suivantes permettent de supprimer toutes les règles iptables:
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
Ecrivez un script qui vérifie qu'il est lancé par root et qui lance ces commandes.
Vous devez tester que vos machines clientes se connectent à Internet.
Vous devez que vos scripts fonctionnent (par exemple qu'ils désactivent l'accès Internet puis le réactivent).