Votre réseau privé est déjà installé, les postes disposent de leur adresse IP et ont un nom de machine. Le réseau est testé et tout fonctionne. (Nous supposerons que les clients sont sous Windows, toutes versions confondues. Si ce n'est pas le cas, il vous faudra traduire). Nous supposerons que le modem est utilisé avec une connexion Ethernet. C'est aussi possible d'utiliser USB, mais plus compliqué, surtout sur Linux, à cause des difficultés à trouver les drivers du modem.
Il va falloir deux interfaces réseaux:
Nous allons installer deux interfaces Ethernet dans notre future passerelle, afin de disposer de deux nœuds eth0 et eth1. Une difficulté éventuelle sera de savoir qui sera eth0 et qui sera eth1. Les distributions « modernes » savent reconnaitre automatiquement les interfaces et leur attribuer un nom. C'est le gestionnaire de périphériques udev
qui se charge de l'affaire. Comme c'est automatique, ça se passe dans votre dos…
La commande lspci
vous indiquera où sont placées les interfaces réseau sur votre bus PCI :
~# lspci
00:00.0 Host bridge: Intel Corporation 430VX - 82437VX TVX [Triton VX] (rev 01)
00:07.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] (rev 01)
00:07.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:09.0 Ethernet controller: Accton Technology Corporation SMC2-1211TX (rev 10)
00:0a.0 Ethernet controller: Accton Technology Corporation SMC2-1211TX (rev 10)
00:0b.0 Ethernet controller: 3Com Corporation 3c905C-TX/TX-M [Tornado] (rev 74)
Ici nous sommes servis, il y a 3 interfaces dont deux sont identiques.
Ceci est bien beau, mais ne nous dit pas comment ces interfaces sont appelées par le système. Nous devons trouver les informations fournies par udev.
Nous sommes sur Debian etch, ce que nous cherchons se trouve dans le fichier /etc/udev/rules.d/z25_persistent-net.rules
:
~# cat /etc/udev/rules.d/z25_persistent-net.rules # This file was automatically generated by the /lib/udev/write_net_rules # program, probably run by the persistent-net-generator.rules rules file. # # You can modify it, as long as you keep each rule on a single line. # MAC addresses must be written in lowercase. # PCI device 0x1113:0x1211 (8139too) SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:00:e8:8e:cb:b7", NAME="eth0" # PCI device 0x1113:0x1211 (8139too) SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:10:b5:4d:55:a0", NAME="eth1" # PCI device 0x10b7:0x9200 (3c59x) SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:50:da:07:dc:76", NAME="eth2"
Notez deux choses :
139too
pour eth0 et eth1, 3c59x
pour eth2 ;Cet exemple nous montre clairement que si nous utilisons plusieurs interfaces de même type, donc utilisant le même module pour leur gestion, le seul moyen de s'y retrouver est de connaitre l'adresse MAC de chaque interface. Une bonne pratique est donc de noter cette adresse, normalement indiquée sur la carte, avant de la monter dans la boite.
Nous allons procéder par étapes, en configurant d'abord l'interface côté LAN.
S'il existe un domaine où les distributions GNU/Linux diffèrent grandement entre elles, c'est bien dans la configuration du réseau. Nous sommes avec Debian, où tout se passe dans /etc/network/interfaces
. Pour d'autres distributions, il vous faudra adapter.
Nous écrivons dans /etc/network/interfaces :
auto eth0 iface eth0 inet static address 192.168.0.253 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255
Nous aurons ainsi eth0 configuré de façon statique, pour notre réseau local.
Notez qu'il n'est pas indiqué de passerelle par défaut gateway
. Cette information devra venir du côté configuré par notre fournisseur d'accès.
Commençons par redémarrer le réseau :
~# /etc/init.d/networking restart
Puis vérifions qu'eth0 est correctement configuée :
~# ifconfig eth0 eth0 Lien encap:Ethernet HWaddr 00:20:18:2D:D2:91 inet adr:192.168.0.253 Bcast:192.168.0.255 Masque:255.255.255.0 ...
Constatez que l'IP, le masque de sous réseau sont corrects.
Il nous faut connecter eth1 au modem. Pour la configuration IP, nous avons deux cas de figure, suivant que notre fournisseur a choisi d'utiliser DHCP ou PPPoE. Ces deux méthodes ne sont pas du tout comparables.
Le premier cas considère que vous êtes sur un réseau Ethernet (comme sur votre LAN) et votre configuration sera fournie grâce au protocole DHCP. Il n'y a pas dans ce cas d'identification du client (rassurez-vous, elle est faite autrement). Le fournisseur Free par exemple, utilise cette méthode.
Le second cas, le plus fréquent, établit un lien ppp entre vous et un équipement de votre fournisseur. Cette méthode ressemble beaucoup à ce qu'il se fait avec un modem téléphonique simple, mais ici, le lien ppp est construit sur la couche Ethernet. PPPoE utilise RADIUS pour :
Configurer une connexion ppp est un peu moins simple, puisque déjà, il nous faut connaitre :
fti/epikoi@fti
par exemple, pour Orange ;Il y aura également trois fichiers à modifier sans se tromper…
Sous Debian Etch, il y a un utilitaire : pppoeconf
(à installer éventuellement) qui aidera à opérer. Nous allons tout de même voir rapidement ce qu'il y a à faire.
Dans ce cas c'est facile, il suffit d'ajouter dans /etc/network/interfaces
le paragraphe suivant :
auto eth1 iface eth1 inet dhcp
Au total, vous devriez avoir dans /etc/network/interfaces
auto eth0 iface eth0 inet static address 192.168.0.253 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 auto eth1 iface eth1 inet dhcp
N'oublions pas de relancer le réseau de relancer le réseau :
/etc/init.d/networking restart
Editez le fichier /etc/ppp/pap-secrets
pour y placer les informations d'identification données par le fournisseur d'accès. Ce fichier est de la forme :
"<nom d'utilisateur>" "<domaine>" "<mot de passe">
Le domaine sera avantageusement remplacé par une astérisque *
. Exemple :
"fti/epikoi@fti" * "password"
Dans certains cas, un fichier identique, mais nommé /etc/ppp/chap-secrets
pourra être nécessaire. Son contenu est exactement le même.
Le fichier /etc/ppp/peers/dsl-provider
installé par défaut contient beaucoup de commentaires explicatifs. Il y a deux lignes qu'il faut modifier :
user "fti/3fdyg6v@fti" pty "/usr/sbin/pppoe -I eth1 -T 80 -m 1452"
user
doit contenir le nom d'utilisateur tel qu'écrit dans pap-secrets
;pty
doit être modifiée en fonction de l'interface connectée au modem (ici eth1).Au total, nous devrions avoir un fichier proche de ceci :
~# cat /etc/ppp/peers/dsl-provider user "fti/epikoi@fti" pty "/usr/sbin/pppoe -I eth1 -T 80 -m 1452" noipdefault defaultroute hide-password lcp-echo-interval 60 lcp-echo-failure 3 connect /bin/true noauth persist mtu 1492 noaccomp default-asyncmap
Je vous laisse retrouver par vous-même la signification exacte des divers paramètres. Notons tout de même :
defaultroute
qui permettra de placer automatiquement la route par défaut sur cette connexion ;mtu 1492
qui évitera une fragmentation toujours peu souhaitable. Voir les détails sur le fonctionnement de PPPoE.
Nous devons ajouter dans /etc/network/interfaces
les lignes suivantes :
auto ppp0 iface ppp0 inet ppp provider dsl-provider
Notez que dans le cas de PPPoE, le lien ppp se faisant sur Ethernet, l'interface eth1 n'a pas besoin d'être configurée au niveau IP. Vous n'aurez besoin de configurer au niveau IP que si votre modem propose un accès IP pour sa configuration, ou simplement pour la lecture de son état, mais cette configuration IP n'est absolument pas nécessaire à PPPoE.
Au final, vous devriez avoir dans /etc/network/interfaces
:
auto eth0 iface eth0 inet static address 192.168.0.253 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 auto ppp0 iface ppp0 inet ppp provider dsl-provider
Les interfaces :
~# ifconfig eth0 Lien encap:Ethernet HWaddr 00:20:18:54:5A:E9 inet adr:192.168.0.253 Bcast:192.168.0.255 Masque:255.255.255.0 ... ... eth1 Lien encap:Ethernet HWaddr 00:50:DA:07:DC:76 inet adr:82.243.80.13 Bcast:82.243.80.255 Masque:255.255.255.0 ...
Les routes :
~# route -n
Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
82.243.80.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
0.0.0.0 82.243.80.254 0.0.0.0 UG 0 0 0 eth1
Traceroute pour voir :
:~# traceroute -n mir1.ovh.net
traceroute to mir1.ovh.net (213.186.33.37), 30 hops max, 40 byte packets
1 82.243.80.254 37.080 ms 36.893 ms 36.931 ms
2 213.228.20.254 37.204 ms 47.425 ms 37.225 ms
...
9 213.186.33.37 48.645 ms 48.504 ms 50.597 ms
Nous identifions bien la passerelle par défaut, aussi bien dans la table des routes que dans le traceroute
.
Les interfaces :
~# ifconfig eth0 Lien encap:Ethernet HWaddr 00:20:18:54:5A:E9 inet adr:192.168.0.253 Bcast:192.168.0.255 Masque:255.255.255.0 ... ... ppp0 Lien encap:Protocole Point-à-Point inet adr:82.127.57.95 P-t-P:193.253.160.3 Masque:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1 ...
Les routes :
~# route -n Table de routage IP du noyau Destination Passerelle Genmask Indic Metric Ref Use Iface 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 193.253.160.3 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0 0.0.0.0 0.0.0.0 0.0.0.0 UG 0 0 0 ppp0
Notez surtout que la route du LAN est sur eth0 et la route par défaut est bien sur ppp0
Traceroute, pour voir :
~# traceroute -n mir1.ovh.net
traceroute to mir1.ovh.net (213.186.33.37), 30 hops max, 40 byte packets
1 193.253.160.3 52.392 ms 53.781 ms 53.367 ms
2 80.10.215.249 54.146 ms 53.199 ms 52.268 ms
...
11 213.186.33.37 53.750 ms 55.160 ms 53.864 ms
Notez que dans cet exemple, nous retrouvons l'adresse 193.253.160.3
dans la route où mène ppp0 et comme premier « hop » dans le traceroute. Un lien ppp n'a que deux bouts il ne relie que deux nœuds entre eux. Dans cet exemple, il relie 82.127.57.95
à 193.253.160.3
(ce que nous savions déjà grâce à la commande ifconfig
qui, pour ppp0, nous a donné :
inet adr:82.127.57.95 P-t-P:193.253.160.3 Masque:255.255.255.255
Les clients de notre LAN vont avoir besoin de connaitre des adresses de DNS. DHCP comme PPPoE fournissent ces informations, mais elles ne seront pas communiquées aux clients du LAN. Il faut pour l'instant savoir les retrouver.
Si nous utilisons le client par défaut de Debian qui est dhclient
, il écrit tout dans les logs /var/lib/dhcp/dhclient.eth1.leases
:
# cat /var/lib/dhcp/dhclient.eth1.leases
...
lease {
interface "eth1";
fixed-address 82.243.80.13;
server-name ".dslg.proxad.net";
option subnet-mask 255.255.255.0;
option routers 82.243.80.254;
option domain-name-servers 212.27.54.252,212.27.53.252;
option broadcast-address 82.243.80.255;
option dhcp-lease-time 604800;
option dhcp-message-type 5;
option dhcp-server-identifier 82.243.80.254;
renew 1 2008/5/26 20:46:25;
rebind 4 2008/5/29 11:46:25;
expire 5 2008/5/30 08:46:25;
}
Ici, nous avons deux DNS : 212.27.54.252
et 212.27.53.252
. Il nous suffit de renseigner nos clients avec ces informations qui normalement ne changent que très rarement, voire jamais.
Ici, c'est ppp qui laisse des traces dans /etc/ppp/resolv.conf :
# cat /etc/ppp/resolv.conf
nameserver 80.10.246.1
nameserver 80.10.246.132
Deux DNS: 80.10.246.1
et 80.10.246.132
à indiquer à nos clients.
Vous disposez maintenant d'une machine qui possède deux connexions réseaux:
A ce stade, même si votre machine LINUX est connectée aux deux réseaux, elle ne fonctionnera pas encore en tant que passerelle pour votre réseau privé. Il faut encore:
Tout ce que vous pouvez faire pour l'instant, c'est:
Ne vous attendez pas à “voir” la machine LINUX dans votre voisinage réseau Windows! LINUX n'utilise pas NetBIOS. Si vous voulez le faire, il vous faudra installer SAMBA sur LINUX, qui crée une couche de dialogue avec NetBIOS, mais ceci est une autre histoire… Si vous voulez le faire et ne savez pas comment, consultez au moins le SMB HOWTO, mais ne faites pas tout en même temps