|
|
@@ -1,332 +0,0 @@
|
|
|
-# Installation de serveur DNS sous Debian
|
|
|
-
|
|
|
-## Introduction
|
|
|
-
|
|
|
-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 :
|
|
|
-
|
|
|
-* 256 Mo de RAM
|
|
|
-* 3 Go de disque dur
|
|
|
-* 2 cartes réseau montées sur deux `vmnet` différents
|
|
|
-* aucune carte son, ni imprimante
|
|
|
-
|
|
|
-## Configuration du réseau
|
|
|
-
|
|
|
-On 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) :
|
|
|
-
|
|
|
-* une dont le réseau est le réseau externe (le nom `eth0` peut changer selon la machine).
|
|
|
-* une dont le réseau est 172.16.81.0/24 (le nom `eth1` peut changer selon la machine).
|
|
|
-
|
|
|
-Vous **devrez** sans doute **adapter les noms des interfaces**.
|
|
|
-
|
|
|
-Pour en connaître les noms réelles, utilisez:
|
|
|
-
|
|
|
-```bash
|
|
|
-ip a
|
|
|
-```
|
|
|
-
|
|
|
-**Vous devez impérativement gérer ces deux réseaux sur deux *vmnet* différents.**
|
|
|
-
|
|
|
-### Préparation obligatoire
|
|
|
-
|
|
|
-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)
|
|
|
-
|
|
|
-### Avertissement
|
|
|
-
|
|
|
-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`.
|
|
|
-
|
|
|
-### Configuration spécifique pour une machine avec deux cartes réseau
|
|
|
-
|
|
|
-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`.
|
|
|
-
|
|
|
-#### Carte réseau eth1
|
|
|
-
|
|
|
-**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:
|
|
|
-
|
|
|
-```conf
|
|
|
-# 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:
|
|
|
-
|
|
|
-```bash
|
|
|
-sudo systemctl restart networking
|
|
|
-```
|
|
|
-
|
|
|
-## Installation des services
|
|
|
-
|
|
|
-### Serveur DHCP
|
|
|
-
|
|
|
-#### Installation
|
|
|
-
|
|
|
-On installe `isc-dhcp`:
|
|
|
-
|
|
|
-```bash
|
|
|
-sudo apt-get install isc-dhcp-server
|
|
|
-```
|
|
|
-
|
|
|
-On fait une **copie de sauvegarde** du fichier de configuration:
|
|
|
-
|
|
|
-```bash
|
|
|
-sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak
|
|
|
-```
|
|
|
-
|
|
|
-#### Interface réseau
|
|
|
-
|
|
|
-Editer le fichier `/etc/default/isc-dhcp-server`
|
|
|
-
|
|
|
-Modifier la valeur de INTERFACES:
|
|
|
-```conf
|
|
|
-INTERFACES="eth1"
|
|
|
-```
|
|
|
-
|
|
|
-#### Configuration des adresses
|
|
|
-
|
|
|
-On édite ce fichier `/etc/dhcp/dhcpd.conf`:
|
|
|
-
|
|
|
-```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:
|
|
|
-
|
|
|
-```conf
|
|
|
-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;
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
-```
|
|
|
-
|
|
|
-### Ajout d'un hôte
|
|
|
-
|
|
|
-On ajoute le paragraphe suivant pour permettre à un hôte de se connecter et obtenir une adresse IP:
|
|
|
-
|
|
|
-```conf
|
|
|
-host debiantsr {
|
|
|
- hardware ethernet 00:0c:29:be:f9:93;
|
|
|
- fixed-address 172.16.81.11;
|
|
|
-}
|
|
|
-```
|
|
|
-
|
|
|
-#### Redémarrage du serveur
|
|
|
-
|
|
|
-Une fois le réseau redémarré et isc-dhcp configuré on peut le démarrer (ou redémarrer avec `restart`):
|
|
|
-
|
|
|
-```bash
|
|
|
-sudo systemctl start isc-dhcp-server
|
|
|
-```
|
|
|
-
|
|
|
-#### Affichage de la liste des réservations d'adresse
|
|
|
-
|
|
|
-Le fichier `/var/lib/dhcp/dhcpd.leases` contient les réservations en cours:
|
|
|
-
|
|
|
-```bash
|
|
|
-less /var/lib/dhcp/dhcpd.leases
|
|
|
-```
|
|
|
-
|
|
|
-
|
|
|
-#### Journaux
|
|
|
-Les journaux permettent d'afficher les informations renvoyées par le serveur:
|
|
|
-
|
|
|
-```bash
|
|
|
-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`
|
|
|
-
|
|
|
-### Autres outils associés
|
|
|
-
|
|
|
-Voir cette page:
|
|
|
-https://www.isc.org/community/tools/
|
|
|
-
|
|
|
-## Mise en place de la passerelle réseau
|
|
|
-
|
|
|
-### IP Forwarding
|
|
|
-
|
|
|
-```bash
|
|
|
-sudo ne /etc/sysctl.conf
|
|
|
-```
|
|
|
-
|
|
|
-On décommente les lignes suivantes:
|
|
|
-
|
|
|
-```conf
|
|
|
-net.ipv4.ip_forward=1
|
|
|
-# ...
|
|
|
-net.ipv6.conf.all.forwarding=1
|
|
|
-```
|
|
|
-
|
|
|
-On met à jour le système par rapport à cette nouvelle configuration
|
|
|
-
|
|
|
-```bash
|
|
|
-sudo sysctl -p
|
|
|
-```
|
|
|
-
|
|
|
-Et on vérifie que l'on obtient 1 en appelant cette commande:
|
|
|
-
|
|
|
-```bash
|
|
|
-$ cat /proc/sys/net/ipv4/ip_forward
|
|
|
-1
|
|
|
-```
|
|
|
-
|
|
|
-
|
|
|
-#### Exercice
|
|
|
-
|
|
|
-Ecrire un script qui remplace:
|
|
|
-
|
|
|
-- `net.ipv4.ip_forward=1` par `net.ipv4.ip_forward=0`
|
|
|
-- `net.ipv6.conf.all.forwarding=1` par `net.ipv6.conf.all.forwarding=1`
|
|
|
-
|
|
|
-### Règles iptables
|
|
|
-
|
|
|
-#### Définition
|
|
|
-
|
|
|
-Afin 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):
|
|
|
-
|
|
|
-```bash
|
|
|
-sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
|
|
-```
|
|
|
-
|
|
|
-Cependant, cette règle sera perdue au prochain redémarrage de la machine.
|
|
|
-
|
|
|
-#### Sauvegarde
|
|
|
-
|
|
|
-Pour éviter cela, on va installer un paquet qui permet de sauvegarder la configuration iptables et de la restaurer automatiquement au démarrage.
|
|
|
-
|
|
|
-```bash
|
|
|
-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.
|
|
|
-
|
|
|
-#### Sauvegarde en cas de modification
|
|
|
-
|
|
|
-
|
|
|
-Imaginons que nous effectuions un changement temporaire. Par exemple une règle de NAT qui redirige le port 80 vers le port 8080:
|
|
|
-
|
|
|
-```bash
|
|
|
-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:
|
|
|
-
|
|
|
-```bash
|
|
|
-sudo dpkg-reconfigure -p critical iptables-persistent
|
|
|
-```
|
|
|
-
|
|
|
-#### Information complémentaire
|
|
|
-
|
|
|
-Cette dernière commande (`dpkg-reconfigure`) est l'équivalent de l'exécution des commandes suivantes:
|
|
|
-
|
|
|
-```bash
|
|
|
- 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`
|
|
|
-
|
|
|
-```bash
|
|
|
-iptables-restore < /etc/iptables/rules.v4
|
|
|
-ip6tables-restore < /etc/iptables/rules.v6
|
|
|
-```
|
|
|
-
|
|
|
-Voir [cette réponse sur StackOverflow](https://stackoverflow.com/a/30819095/1011366)
|
|
|
-
|
|
|
-#### Effacement des règles iptables
|
|
|
-
|
|
|
-Les commandes suivantes permettent de supprimer toutes les règles iptables:
|
|
|
-
|
|
|
-```bash
|
|
|
-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.
|
|
|
-
|
|
|
-### Tests
|
|
|
-
|
|
|
-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).
|