Guide du routeur personnel
1.
Introduction
Mettre votre propre routeur sur pieds à partir de vieilles pièces détachées
présente quelques avantages par rapport aux routeurs vendus dans le commerce
tels que des Linksys ou autres. L'avantage majeur est le contrôle que vous
avez sur la connexion ; les autres avantages dépendent de votre imagination
et de ce que vous allez décider de faire avec votre routeur.
Ce guide va vous montrer comment utiliser NAT (« Network Address
Translation ») qui permet à plusieurs machines d'accéder à Internet à
partir d'une seule adresse IP, vous expliquer comment installer et utiliser des
services courants tels que DNS (avec dnsmasq), DHCP (avec dhcpd), ADSL (avec
ppp) et enfin vous présenter quelques exemples sympas d'utilisation de votre
routeur tels que la redirection de ports.
Avant de poursuivre, veuillez vérifier que vous disposez des éléments requis.
Vous avez besoin d'un ordinateur équipé d'au moins deux cartes réseau. Vous
devez aussi avoir les informations relatives à votre connexion Internet sous la
main (adresses IP, serveurs DNS, passerelle, nom d'utilisateur et mot de
passe). Vous aurez aussi besoin d'un peu de temps et de considération pour
Gentoo.
Ce guide utilise les conventions suivantes :
- eth0 - carte réseau connectée à votre réseau local.
- eth1 - carte réseau connectée à internet.
- Le réseau local utilise des adresses IP 192.168.0.xxx
- L'adresse du routeur est fixée à 192.168.0.1
-
Le routeur utilise Linux 2.4 ou 2.6 ; débrouillez-vous tout seul avec
2.0/2.2
Important :
Pour des raisons de sécurité, vous devriez désactiver tous les services qui ne
sont pas indispensables sur votre routeur jusqu'à ce que le pare-feu soit
configuré et activé. Pour afficher les services actifs, lancez
rc-status.
|
2.
Configuration du noyau
Les pilotes de vos cartes réseau doivent avoir été activés. Pour vérifier si
vos cartes sont activées, utilisez ifconfig. L'affichage sera sans doute
un peu différent, mais l'important est que les deux cartes apparaissent.
Exemple de code 2.1 : Vérifier les cartes réseau |
# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:60:F5:07:07:B8
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:11 Base address:0x9800
eth1 Link encap:Ethernet HWaddr 00:60:F5:07:07:B9
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:10 Base address:0x9400
|
Si vos cartes réseau ne sont pas affichées et que vous ignorez quel type de
carte vous avez, utilisez lspci | grep Ethernet. Cet outil est installé
avec emerge pciutils. Une fois le type de carte déterminé, configurez
votre noyau pour ajouter les pilotes ad hoc.
Vous devez aussi ajouter le support de iptables et du NAT (et la gestion du
trafic si vous le désirez). Les options du noyau requises ci-dessous utilisent
la convention suivante :(*) nécessaire, (a) nécessaire uniquement pour
l'adsl via PPPoE, (x) conseillée, (s) gestion du trafic. Peu importe si vous
compilez les options en dur ou en module pour autant que les modules soient
chargés au moment où la fonctionnalité est utilisée. Le chargement des modules
est laissé à la discrétion du lecteur.
Exemple de code 2.2 : Options réseau du noyau |
Networking options --->
[*] TCP/IP networking
[*] IP: advanced router
[*] Network packet filtering (replaces ipchains)
[*] Socket Filtering
IP: Netfilter Configuration --->
[*] Connection tracking (required for masq/NAT)
[x] FTP protocol support
[x] IRC protocol support
[*] IP tables support (required for filtering/masq/NAT)
[*] IP range match support
[x] MAC address match support
[*] Multiple port match support
[*] Packet filtering
[*] REJECT target support
[x] REDIRECT target support
[*] Full NAT
[*] MASQUERADE target support
[s] Packet mangling
[s] MARK target support
[x] LOG target support
QoS and/or fair queueing --->
[s] QoS and/or fair queueing
[s] HTB packet scheduler
[s] Ingress Qdisc
[a] PPP (point-to-point protocol) support
[a] PPP filtering
[a] PPP support for async serial ports
[a] PPP support for sync tty ports
[a] PPP Deflate compression
[a] PPP BSD-Compress compression
[a] PPP over Ethernet
|
Note :
Certaines options ou leur position peuvent être un peu différentes d'une
version du noyau à l'autre, mais vous devriez pourvoir les retrouver. Y compris
parmi les noyaux 2.6, ces options ont tendance à être déplacées. Bonne
chance !
|
3.
Connectez-vous à Internet
Introduction
Il y a de nombreuses façons de vous connecter à Internet. L'auteur a
sélectionné les méthodes qui lui sont familières, c'est-à-dire l'ADSL (PPPoE)
et un modem-câble (adresse statique ou dynamique). Si vous voulez ajouter une
méthode, veuillez adresser un courriel à l'auteur (en anglais). Lisez uniquement la
partie relative à votre type de connexion. Ce chapitre est seulement consacré à
la connexion de votre routeur à Internet via eth1.
ADSL et PPPoE
Les logiciels requis pour une connexion ADSL via PPPoE qui étaient rassemblés
dans un paquet nommé Roaring
Penguin (N.d.t. le manchot rugissant) ont maintenant été intégrés dans le
paquet standard PPP. Faites simplement
emerge ppp et il ne vous restera plus qu'à configurer vos login/mots de
passes dans /etc/conf.d/net.
Note :
Pour que le script net fonctionne, vous devez utiliser baselayout-1.12.9 ou une
version plus récente.
|
Exemple de code 3.1 : Configurer eth1 |
# nano /etc/conf.d/net
config_ppp0=( "ppp" )
link_ppp0="eth1"
plugins_ppp0=( "pppoe" )
pppd_ppp0=(
"defaultroute"
"usepeerdns"
)
username_ppp0="vla9h924"
password_ppp0="boogie"
# ln -s net.lo /etc/init.d/net.ppp0
# rc-update add net.ppp0 default
# /etc/init.d/net.ppp0 start
|
Attention :
Quand votre interface ADSL sera activée, elle créera ppp0. Bien que votre carte
réseau s'appelle eth1, l'adresse IP sera liée à ppp0. À partir de maintenant,
vous devrez remplacer eth1 par ppp0 dans tous les exemples
proposés.
|
Attention :
Changez les permissions du fichier /etc/conf.d/net afin que personne d'autre
que root ne puisse lire vos mots de passes.
|
Attention :
Pour les utilisateurs qui migrent depuis le paquet rp-pppoe ou pour ceux
qui ont des problèmes de connexion, voyez la section MTU dans le chapitre des
résolutions de problèmes.
|
Modem câble avec une adresse IP statique ou dynamique
Si votre FAI vous a attribué une adresse statique, vous avez besoin de plus
d'informations que pour une adresse dynamique, c'est-à-dire votre adresse IP et
celles de votre passerelle et des serveurs DNS de votre FAI.
Exemple de code 3.2 : Configurer eth1 |
# emerge dhcpcd
# nano /etc/conf.d/net
config_eth1=( "dhcp" )
# nano /etc/conf.d/net
config_eth1=( "66.92.78.102 broadcast 66.92.78.255 netmask 255.255.255.0" )
routes_eth1=( "default gw 66.92.78.1" )
# nano /etc/resolv.conf
nameserver 123.123.123.123
# ln -s net.lo /etc/init.d/net.eth1
# rc-update add net.eth1 default
# /etc/init.d/net.eth1 start
|
Cela devrait suffire.
4.
Connectez votre réseau local
Cette étape est du gâteau par rapport à la précédente.
Exemple de code 4.1 : Configurer eth0 |
# nano /etc/conf.d/net
ifconfig_eth0=( "192.168.0.1 broadcast 192.168.0.255 netmask 255.255.255.0" )
# rc-update add net.eth0 default
# /etc/init.d/net.eth0 start
|
5.
Services réseau à activer
Serveur DHCP
Ce serait sympa si tous vos ordinateurs pouvaient se connecter à votre réseau
sans rien devoir reconfigurer ni sans devoir mémoriser des adresses IP.
Installons un serveur DHCP pour allouer des adresses IP automatiquement.
Un serveur DHCP, comme son nom l'indique en anglais (« Dynamic Host
Configuration Protocol »), permet de configurer les machines qui se
connectent à votre réseau au moment où elles se connectent. Vous devez
installer un serveur DHCP sur votre router et le configurer en fonction de
votre réseau (adresses IP valides, serveurs DNS, passerelle, etc.). Ensuite,
quand une machine se connecte, elle exécute un programme client qui reçoit une
configuration du serveur et qui l'utilise automatiquement pour définir vos
paramètres réseau. Vous trouverez un article complet à propos de DHCP sur Wikipedia.
Nous allons utiliser un paquet appelé dnsmasq qui fourni à la fois les services
DHCP et DNS. Pour l'instant, concentrons-nous sur le serveur DHCP. Si vous
désirez toutefois utiliser un serveur DHCP différent, vous pouvez trouver un
autre exemple dans le chapitre des options sympas.
De plus, si vous souhaitez manipuler la configuration du serveur DHCP, lisez
simplement les commentaires présents dans /etc/dnsmasq.conf. Les
choix par défaut devraient tous parfaitement fonctionner.
Exemple de code 5.1 : Configurer DHCP |
# emerge dnsmasq
# nano /etc/dnsmasq.conf
dhcp-range=192.168.0.100,192.168.0.250,72h
interface=eth0
# rc-update add dnsmasq default
# /etc/init.d/dnsmasq start
|
Votre routeur est maintenant un serveur DHCP. Connectez d'autres machines sur
votre réseau et observez. Sur un système Windows, vous devez allez dans les
propriétés TCP/IP et sélectionner « Obtain DNS server address
automatically » et « Obtain DNS server address automatically ».
Parfois, les changements ne sont pas pris en compte immédiatement. Dans ce cas,
lancez les commandes ipconfig /release et ipconfig
/renew dans un terminal.
Serveur DNS
Quand vous visitez un site Internet, vous utilisez un nom de site, car c'est
bien plus facile à retenir qu'une adresse IP (vous préférez ebay.com ou
66.135.192.87 ?) Cela implique l'utilisation d'un serveur DNS qui va
rechercher l'adresse IP d'un serveur à partir du nom du site que vous tapez.
Vous trouverez plus d'informations à propos des serveurs DNS sur Wikipedia.
Comme nous utilisons dnsmasq en tant que serveur DHCP et qu'il inclut un
serveur DNS, vous n'avez plus rien d'autre à faire ici ! Votre router
fournit déjà la résolution de noms à ses clients DHCP. Vous aimeriez bien que
tout soit aussi simple, n'est-ce pas ? ;)
Vous pouvez très bien choisir d'autres serveurs DNS si vous êtes plus à
l'aise avec ces derniers, mais la raison pour laquelle dnsmasq est génial est
qu'il a été conçu pour faire exactement ce que nous voulons et rien d'autre.
C'est un petit serveur de cache et de propagation de DNS pour les réseaux
locaux. Nous ne désirons pas fournir un service DNS pour notre propre domaine,
mais simplement offrir un simple service DNS à tous les membres de notre
réseau local.
NAT (ou IP-masquerading ou translation d'adresses)
Désormais, vos utilisateurs peuvent se parler sur votre réseau et ils peuvent
envoyer des requêtes DNS, mais ils ne peuvent pas encore accéder à Internet.
Cela vous laisse plus de bande passante, mais cela n'est sans doute pas votre
but.
Pour pouvoir connecter plusieurs ordinateurs depuis une seule adresse IP (celle
que votre FAI vous a attribuée), nous avons besoin de NAT pour effectuer des
translations d'adresses IP. En effet, lorsqu'une requête est émise par un de
vos ordinateurs, le monde extérieur (Internet) ne voit que votre adresse
publique. Lorsqu'une réponse arrive sur votre routeur, il doit pouvoir
déterminer quelle machine interne attend la réponse. Wikipedia vous en dira
plus à propos du NAT.
Note :
Commencez par vérifier que iptables est installé sur votre routeur. Il devrait
avoir été installé automatiquement, mais mieux vaut vérifier. S'il n'est pas
installé, lancez simplement emerge iptables.
|
Exemple de code 5.2 : Configurer iptables |
# iptables -F
# iptables -t nat -F
# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD DROP
# export LAN=eth0
# export WAN=eth1
# iptables -I INPUT 1 -i ${LAN} -j ACCEPT
# iptables -I INPUT 1 -i lo -j ACCEPT
# iptables -A INPUT -p UDP --dport bootps -i ! ${LAN} -j REJECT
# iptables -A INPUT -p UDP --dport domain -i ! ${LAN} -j REJECT
# iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT
# iptables -A INPUT -p TCP -i ! ${LAN} -d 0/0 --dport 0:1023 -j DROP
# iptables -A INPUT -p UDP -i ! ${LAN} -d 0/0 --dport 0:1023 -j DROP
# iptables -I FORWARD -i ${LAN} -d 192.168.0.0/255.255.0.0 -j DROP
# iptables -A FORWARD -i ${LAN} -s 192.168.0.0/255.255.0.0 -j ACCEPT
# iptables -A FORWARD -i ${WAN} -d 192.168.0.0/255.255.0.0 -j ACCEPT
# iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE
# echo 1 > /proc/sys/net/ipv4/ip_forward
# for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done
# /etc/init.d/iptables save
# rc-update add iptables default
# nano /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.ip_dynaddr = 1
|
Une fois toutes ces commandes effectuées, les autres machines de votre réseau
devraient pouvoir accéder à Internet comme si elles étaient connectées
directement.
L'option ip_dynaddr est utile pour des connexions à la demande ou lorsque votre
FAI vous attribue des adresses dynamiques. Ceci résoud les problèmes recontrés
lorsque l'on tente d'établir une connexion avant que l'interface réseau ne soit
opérationnelle. Cette option évite de nombreux problèmes aux utilisateurs de
votre réseau situés derrière votre routeur.
6.
Options sympas (pour un jour de pluie)
Introduction
Croyez-le ou pas, vous avez terminé ! La suite de ce guide concerne des
sujets qui peuvent vous intéresser, mais tout ce qui suit est facultatif.
Transfert de port
Dans certains cas, vous voudrez permettre un accès depuis Internet à des
services qui tournent sur des machines de votre réseau local au lieu de votre
routeur, par exemple un serveur FTP, HTTP, SSH ou encore VNC. Le transfert de
port permet cela avec la seule restriction qu'un port ne peut être redirigé que
vers une seule machine. Par exemple, pour un serveur FTP, vous ne pourriez pas
rediriger le port 21 en entrée sur votre routeur vers différentes machines. Si
vous voulez permettre l'accès à trois serveurs FTP différents sur votre réseau,
vous devez choisir d'autres ports. Vous pouvez utilisez le port standard 21
pour un serveur, mais vous devez choisir, par exemple, 123 et 567 pour les deux
autres serveurs.
Toutes les règles de transfert de port sont sous la forme iptables -t nat -A
PREROUTING [-p protocole] --dport [port externe sur le routeur] -i ${WAN} -j DNAT
--to [adresse ip et port vers lesquel rediriger]. Malheureusement, l'outil
iptables n'accepte pas des noms de machine dans les règles de redirection. Si vous
redirigez vers le même port que le port d'entrée sur votre routeur, vous n'êtes
pas obligé de la répéter dans la règle. Utilisez man 8 iptables pour
plus d'informations.
Exemple de code 6.1 : Quelques exemples |
# export LAN=eth0
# export WAN=eth1
# iptables -t nat -A PREROUTING -p tcp --dport 2 -i ${WAN} -j DNAT --to 192.168.0.2:22
# iptables -t nat -A PREROUTING -p tcp --dport 21 -i ${WAN} -j DNAT --to 192.168.0.56
# iptables -t nat -A PREROUTING -p tcp --dport 80 -i ${WAN} -j DNAT --to 192.168.0.56
# iptables -t nat -I PREROUTING -p tcp --dport 5900 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p tcp --dport 5901 -i ${WAN} -j DNAT --to 192.168.0.3:5900
# iptables -t nat -I PREROUTING -p tcp --dport 135 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p tcp --dport 139 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p tcp --dport 445 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p udp --dport 137:138 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p udp --dport 445 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -A PREROUTING -p tcp --dport 6881:6889 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -A PREROUTING -p tcp --dport 4662 -i ${WAN} -j DNAT --to 192.168.0.55
# iptables -t nat -A PREROUTING -p udp --dport 4000 -i ${WAN} -j DNAT --to 192.168.0.56
# iptables -t nat -A PREROUTING -p tcp --dport 10070:10080 -i ${WAN} -j DNAT --to 192.168.0.11
# iptables -t nat -A PREROUTING -p udp --dport 10070:10080 -i ${WAN} -j DNAT --to 192.168.0.11
# iptables -t nat -A PREROUTING -p tcp --dport 3074 -i ${WAN} -j DNAT --to 192.168.0.69
# iptables -t nat -A PREROUTING -p udp --dport 3074 -i ${WAN} -j DNAT --to 192.168.0.69
# iptables -t nat -A PREROUTING -p udp --dport 88 -i ${WAN} -j DNAT --to 192.168.0.69
|
Note :
Si vous avez d'autres exemples courants ou intéressants, vous pouvez les
proposer à l'auteur (en anglais).
|
Identd (pour IRC)
IRC utilise beaucoup le service ident. Maintenant que vos utilisateurs de IRC
sont derrière votre routeur, vous devriez utiliser un service ident pour le
routeur et les ordinateurs. Ce service est fourni par le paquet midentd.
Exemple de code 6.2 : Configurer ident |
# emerge midentd
# rc-update add midentd default
# /etc/init.d/midentd start
|
D'autres serveurs ident sont disponibles dans Portage. Selon vos besoins,
l'auteur vous recommande oidentd et fakeidentd.
Serveur de temps
Maintenir un ordinateur à l'heure est important pour garantir la bonne santé
d'un système. Une des méthodes les plus courantes est d'utiliser NTP
(« Network Time Protocol »). Le paquet ntp contient un client et un
serveur.
De nombreux utilisateurs ont installé ntp sur leur ordinateur. Évidemment, plus
il y a de clients, plus les serveurs sont chargés. Dans un réseau local, on
peut alléger la charge des serveurs publics tout en gardant tous les
ordinateurs à l'heure. De plus, toutes les mises à l'heure sur les machines
locales seront plus rapides. Nous avons juste besoin d'un serveur local sur
notre routeur qui se met à l'heure avec un serveur public sur Internet et qui
est utilisé par toutes les autres machines locales. Commencez par faire
emerge ntp sur votre routeur.
Exemple de code 6.3 : Configurer un serveur NTP |
# nano /etc/conf.d/ntp-client
# rc-update add ntp-client default
# nano /etc/ntp.conf
restrict default ignore
restrict 192.168.0.0 mask 255.255.255.0 notrust nomodify notrap
# nano /etc/conf.d/ntpd
# rc-update add ntpd default
# /etc/init.d/ntp-client start
# /etc/init.d/ntpd start
|
Note :
Vous devez autoriser les connexions entrantes et sortantes sur le port ntp
(123/udp) sur le serveur. Les clients se contentent d'une connexion sortante
vers votre serveur.
|
Ensuite, exécutez emerge ntp sur les autres machines aussi, mais nous
n'utiliserons que la partie client, ce qui est plus simple.
Exemple de code 6.4 : Configurer un client NTP |
# nano /etc/conf.d/ntp-client
# rc-update add ntp-client default
# /etc/init.d/ntp-client start
|
Serveur rsync
Ceux qui ont plusieurs machines Gentoo sur le même réseau local souhaitent
souvent éviter d'utiliser emerge sync avec des serveurs distants. En
configurant un serveur rsync local, vous économisez votre bande passante et
celle des serveurs rsync de Gentoo. C'est très simple à mettre en place.
Note :
Pour un guide sur rsync beaucoup plus détaillé, veuillez vous référer au guide rsync officiel.
|
Du fait que chaque machine Gentoo nécessite rsync, il n'est pas nécessaire de
l'installer. Éditez le fichier de configuration par défaut
(/etc/rsyncd.conf), décommentez la section [gentoo-portage]
et assurez-vous que vous avez bien ajouté une option address. Tous les
autres choix par défaut devraient convenir.
Exemple de code 6.5 : Configuration d'un serveur rsync |
pid file = /var/run/rsyncd.pid
use chroot = yes
read only = yes
address = 192.168.0.1
[gentoo-portage]
path = /mnt/space/portage
comment = Gentoo Linux Portage tree
exclude = /distfiles /packages
|
Après cela, vous devez démarrer le service (de nouveau, les choix par défaut
conviennent).
Exemple de code 6.6 : Démarrer le serveur rsync |
# /etc/init.d/rsyncd start
# rc-update add rsyncd default
|
La dernière chose à faire est de dire à vos clients de se synchroniser par
rapport au routeur.
Exemple de code 6.7 : Les options de synchronisation des clients dans make.conf |
SYNC="rsync://192.168.0.1/gentoo-portage"
|
Serveur de courrier
Plusieurs raisons peuvent vous pousser à utiliser votre propre serveur de
courrier (SMTP) sur votre routeur. L'auteur le fait pour que ses utilisateurs
aient l'impression que leurs courriels sont envoyés immédiatement alors que
l'envoi réel et les multiples tentatives éventuelles sont effectués par le
routeur. Notez que certains FAI (comme Verizon) bloquent le relai de courriels
qui ne sont pas destinés à leurs propres abonnés. De plus, vous pouvez aussi
réduire la bande passante utilisée pour l'envoi de courriels de sorte que
l'émission de grosses pièces jointes ne bloquent pas votre accès à Internet
pendant leur envoi.
Exemple de code 6.8 : Configurer un serveur SMTP |
# emerge netqmail
# emerge --config netqmail
# iptables -I INPUT -p tcp --dport smtp -i ! ${LAN} -j REJECT
# ln -s /var/qmail/supervise/qmail-send /service/qmail-send
# ln -s /var/qmail/supervise/qmail-smtpd /service/qmail-smtpd
# cd /etc/tcprules.d
# nano tcp.qmail-smtp
192.168.0.:allow,RELAYCLIENT=""
# rc-update add svscan default
# /etc/init.d/svscan start
|
L'auteur est un inconditionnel de Qmail, mais vous êtes libre d'utiliser un
autre MTA. Quand vous configurez vos ordinateurs, définissez 192.168.0.1 comme
serveur SMTP et tout devrait fonctionner tout seul. Vous trouverez plus
d'informations sur la page d'accueil de
netqmail.
Un serveur DHCP complet
Précédemment, nous avons utilisé dnsmasq pour fournir un service DHCP à nos
clients. Pour la majorité des utilisateurs avec un simple réseau local, c'est
parfait. Mais vous pourriez avoir besoin de plus de fonctionnalités. C'est
pourquoi nous nous tournons vers un serveurs DHCP complet fourni par
ISC.
Exemple de code 6.9 : Configurer DHCP |
# emerge dhcp
# nano /etc/dhcp/dhcpd.conf
authoritative;
ddns-update-style interim;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.250;
default-lease-time 259200;
max-lease-time 518400;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
option domain-name-servers 192.168.0.1;
}
# nano /etc/conf.d/dhcpd
# rc-update add dhcpd default
# /etc/init.d/dhcpd start
|
Ceci est la configuration minimale requise pour remplacer les fonctions DHCP de
dnsmasq que nous avons précédemment mises en place. À propos, vous avez pensé à
désactiver les fonctions DHCP de dnsmasq, n'est-ce pas ? Sinon, vous
devriez le faire maintenant (commentez simplement l'option dhcp-range
dans /etc/dnsmasq.conf et redémarrez le service).
Connecter un autre réseau local (ou deux ou trois ou...)
Vous avez parfois besoin de connecter le routeur à un autre réseau local. Vous
voulez peut-être temporairement vous raccorder à un groupe d'amis, ou alors
vous êtes ordonné et vous voulez séparer différents groupes d'ordinateurs, ou
encore vous vous ennuyez peut-être beaucoup. Quelles que soient vos raisons,
étendre le routeur à d'autre réseaux locaux devrait être simple. Dans les
exemples suivants, je vais considérer que le nouveau réseau est connecté à une
troisième carte ethernet appelée eth2.
Tout d'abord, vous devez configurer l'interface. Utilisez les instructions de
l'exemple de code 4.1 en remplaçant
eth0 par eth2 et 192.168.0 par 192.168.1.
Ensuite, vous devez modifier dnsmasq pour qu'il gère également la nouvelle
interface. Éditez le fichier /etc/conf.d/dnsmasq et ajoutez
-i eth2 aux DNSMASQ_OPTS ; utiliser -i plusieurs fois est autorisé.
Maintenant, éditez /etc/dnsmasq.conf et ajoutez une autre ligne
semblable à l'exemple de code 5.1 en
remplaçant 192.168.0 par 192.168.1. Il est possible d'avoir
plusieurs lignes dhcp-range.
Enfin, regardez les règles dans l'exemple de code
5.2 et dupliquez les règles qui concernent -i ${LAN}. Vous voudrez
sans doute créer une autre variable, par exemple LAN2, pour vous
simplifier le travail.
7.
Troubleshooting
Outils intéressants
Si vous avez de problèmes pour faire communiquer vos ordinateurs, les outils
suivants (tous dans la catégorie net-analyzer) peuvent vous aider à les
résoudre :
| Outils |
Description |
| wireshark |
Outil graphique de visualisation du trafic avec de nombreux filtres |
| tcpdump |
Outil en mode texte qui affiche le trafic et qui permet d'appliquer des
filtres
|
| iptraf |
Outil de contrôle de trafic réseau, utilise ncurses |
| ettercap |
Outil de contrôle de trafic réseau, utilise ncurses |
DHCP ne démarre pas
Lorsque vous démarrer le script init.d de dhcp pour la première fois, il est
possible qu'il échoue mais ne vous donne aucune information utile.
Exemple de code 7.1 : Exemple d'échec de DHCP |
# /etc/init.d/dhcp start
* Setting ownership on dhcp.leases ... [ ok ]
* Starting dhcpd ... [ !! ]
|
L'astuce est de savoir où dhcp envoie ses messages. Naviguez simplement dans
/var/log et lisez les fichiers journaux. Comme le fichier journal
exact dépend du paquet que vous utilisez en tant que système de journalisation,
essayez de lancer grep -Rl dhcpd /var/log pour réduire la liste des
possibilités. Il y a de grandes chances pour que vous ayez laissé une coquille
dans votre fichier de configuration. Vous pouvez également essayer de lancer
dhcpd -d -f (débug en avant-plan) et chercher l'erreur en fonction des
messages affichés.
Valeur MTU incorrecte
Si vous rencontrez des erreurs bizarres (certaines pages web s'affichent,
d'autres pas, par exemple), il est possible que la valeur MTU soit incorrecte.
La commande suivante permet de vérifier rapidement si c'est le cas :
Exemple de code 7.2 : Éviter les problèmes MTU |
# iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
|
Cette commande affectera toutes les nouvelles connexions. Essayer de visiter le
site qui posait problème. Pour votre information, la valeur MTU standard pour
un réseau Ethernet 100mbps est 1500 ; cela vaut aussi pour le PPPoA.
PPPoE, quant à lui, utilise 1492. Vous trouverez des explications
détaillées dans le chapitre 15 du Linux
Advanced Routing & Traffic Control HOWTO.
Impossible de connecter deux machines directement
Si vous désirez connecter deux machines directement sans utiliser de
concentrateur (hub) ou de switch, il est fort probable qu'un câble ethernet
classique (aussi appelé câble droit) ne fonctionne pas, à moins que vous ne
disposiez d'un adaptateur réseau capable de conversion MDI/MDI-X automatique.
Vous aurez besoin d'un autre type de câble appelé câble croisé. Cette page sur
Wikipedia vous
expliquera les détails techniques.
8.
Notes finales
L'auteur n'a pas grand chose à ajouter. Toutefois, si vous avez rencontré des
problèmes avec ce guide, veuillez envoyer un courriel à l'auteur (en anglais) ou soumettre un bug dans
notre système de gestion de bogues.
De plus, si vous avez de bonnes idées pour améliorer ce guide, n'hésitez pas à
en faire part à l'auteur.
Ce document est protégé par la licence Creative
Commons : Paternité - Partage des Conditions Initiales à
l'Identique 2.5.
|