Routeur Debian GNU Linux

Faire son serveur dhcp avec translation d’adresse sous Debian

Cet article va vous présenter comment créer une passerelle dhcp avec une machine sous Debian.

Avant de commencer il vous faut au minimum deux cartes réseaux.

schéma explicatif :
routage
Mais le dhcp c’est quoi ?

Pour la description complète et générale je vous renvoi sur Wikipedia.

Dans un premier temps on ce munira de café et en deuxième on démarre le serveur après lui avoir installé une Debian

Configuration de eth0

Avec une box qui fait dhcp

L’ip de eth0 sera donc complètement automatique, vous n’aurez rien à configurer sur le serveur lui même, par contre la subtilité et d’aller configurer votre box pour réserver une adresse ip au serveur en fonction de l’adresse mac d’ eth0 comme ça votre serveur aura toujours la même ip.

Selon les box, cette fonction s’appelle dhcp statique, ip réservées, baux permanents, …

Pour savoir l’adresse MAC de votre carte tapez sur le serveur la commande :

ifconfig eth0 |grep HWaddr

la combinaison devra ressembler à cette forme FF:FF:FF:FF:FF:FF

Une fois que vous avez tout configurer votre box, pour ceci rechercher dans votre interface routeur/options réseau etc…

Avec une box qui ne fait pas dhcp

L’ip de eth0 sera donc à configurer.
rien de plus simple en fait
Vous ouvrez le fichier de configuration de vos cartes réseau :

vim /etc/network/interfaces

vous devriez avoir un fichier qui ressemble à :

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

# The loopback network interface

auto lo

iface lo inet loopback

# The primary network interface

auto eth0

#on défini le comportement de la carte reseau static ou dhcp

iface eth0 inet static

#on spécifie sont adresse ip

address 192.168.0.1

netmask 255.255.255.0

broadcast 192.168.0.255

#les ip des serveurs dns de votre FAI

dns-nameservers 212.27.40.240 212.27.40.241

#l'ip de votre box ou modem enfin, de la passerelle pour rejoindre le réseau internet

gateway 192.168.0.254

Si vous avez des lignes qui parlent d’autres connections du type wlan ou eth1, eth2 etc… supprimez les, nous les reconfigureront après.

Configurons la carte réseau eth1 qui sera la carte “serveur”

Pour cela il suffit d’aller faire un saut dans /etc/network

vim /etc/network/interfaces

nous allons donc configurer l’eth1 en 192.168.1.1 statique.

auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0
broadcast 192.168.1.255
dns-nameservers 212.27.40.240 212.27.40.241
gateway 192.168.0.254

L’adresse c’est l’adresse que l’on veut pour la carte
le dns-nameservers c’est les dns de mon FAI gain en rapidité de surfing
La gateway c’est notre box.

Configurons la translation d’adresse

Tout d’abord nous allons modifier deux lignes dans le fichier /etc/sysctl.conf

vim /etc/sysctl.conf

Les deux lignes à modifier sont :

net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.default.forwarding=1

Une fois fait, un point très important est de rentrer la commande :

sysctl net.ipv4.ip_forward=1

Cette commande active le forward au niveau noyau de votre système c’est ce que j’ai lu sur un forum alors… mais la commande de toute manière ne vous fera pas crasher le système au contraire.

Maintenant nous allons créer un script “ip_forward” (que vous pouvez nommer comme bon vous semble mais sans . dans le nom), qui activera la translation à chaque démarrage de votre machine.

vim /etc/init.d/ip_forward

Dans ce script on va insérer tout ce qui est nécessaire :

#!/bin/bash

### BEGIN INIT INFO
# Provides:           ip_forward
# Required-Start:     $network $remote_fs $syslog
# Required-Stop:      $network $remote_fs $syslog
# Default-Start:      2 3 4 5
# Default-Stop:       0 1 6
# Short-Description:  activation du forward des paquets
# Description:        activation du forward des paquets
### END INIT INFO

# Mise en place de la translation d'adresse (NAT)

start()
{
echo "Activation du protocole NAT"
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo "termine avec succes"

}

stop()
{
echo "Desactivation du protocol NAT"
echo 0 > /proc/sys/net/ipv4/ip_forward
echo "termine avec succes"

}

case "$1" in

start)

start

;;

stop)

stop

;;

restart)

stop && start
;;

*)

echo "Usage: $0 {start|stop|restart}"

exit 1
esac

exit 0

Une fois ceci fait il vous suffit de le rendre exécutable :

chmod +x /etc/init.d/ip_forward

Et de l’ajouter au démarrage avec :

avant debian lenny :

update-rc.d ip_forward start 99 2 . stop 00 2 0 1 6 .

après debian lenny :

insserv /etc/init.d/ip_forward

Installation et Configuration du serveur DHCP

Nous allons installer ce petit serveur qui va nous permettre de donner une adresse à chaque machine qui voudra se connecter, nous verrons aussi comment faire des réservations d’ip.
Pour l’installer facile :

aptitude update && aptitude safe-upgrade
aptitude install dhcp3-server

à la fin de l’installation il va vous dire Failed ce qui est tout à fait normal le serveur ne sait pas quelle interface réseau interroger/gérer etc…
Nous allons donc procéder à sa configuration.

Premièrement on va lui indiquer quelle interface réseau il doit écouter.
Ceci ce configure dans /etc/default/dhcp3-server pour moi c’est eth1 qui sera ma carte à écouter.
Donc dans le fichier je lui dit :

vim /etc/default/dhcp3-server
INTERFACES="eth1"

Ensuite ouvrez le fichier /etc/dhcp3/dhcpd.conf :

serveur#:vim /etc/dhcp3/dhcpd.conf

et modifiez les lignes suivantes :
dans cette ligne vous mettez ce que vous voulez moi j’ai appelé mon réseau passerelle mais pourquoi pas beurresalé ou autre 😀

option domain-name "Passerelle";

Attention ici mettez les DNS de votre FAI pour gagner de la rapidité pour le surfing 😛
Ceci sont de free et google après vous pouvez en mettre d’autres

option-domain-name-servers 212.27.40.240, 212.27.40.241, 8.8.8.8, 8.8.4.4;

Pour que votre configuration serve à quelque chose 😛
Décommenter la ligne :

authoritative;

Après il vous suffit d’insérer après ces lignes :

# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.

Ceci :

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.2 192.168.1.100;
option routers 192.168.1.1;
}

Le subnet sera le réseau que vous allez administrer avec votre serveur dhcp.
Le range est la plage d’adresse à modifier selon vos envies.
L’option routeur comme adresse de routage. (je sais pas si c’est bien dit mais c’est compréhensible non ?)

Ce que nous venons de configurer interdit les adresses ip fixes.

Nous allons réserver deux IP pour le ToToNe-PC et l’Adeline-PC en fonction des adresses mac pour effectuer ceci rien de plus simple :
Ajouter /etc/dhcpd.conf

host ToToNe-PC {
hardware ethernet 08:00:07:26:c0:a5;
fixed-address 192.168.1.13;
}

host Adeline-PC {
hardware ethernet 08:23:07:56:a9:d2;
fixed-address 192.168.1.15;
}

Une fois ceci fait on sauvegarde.

et on relance le serveur dhcp.

/etc/init.d/dhcp3-server restart

Pensez à jeter un coup d’oeil dans /var/lib/dhcp3/dhclient.leases pour savoir qui est connecté.

Le mieux une fois que tout est fait est un redémarrage de la machine mais ce n’est pas du tout obligatoire.

reboot

Les sources qui on aidées à la rédaction de cet article :

giroll.org

Wikipédia