Table des matières

Interfaces

Pré-requis

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.

Installation

Câblage réseau 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…

Retrouver ses billes

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 :

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.

Configuration Ethernet

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.

Côté LAN

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.

Vérifications

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.

Côté modem

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 :

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.

DHCP ?

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

PPPoE ?

Le fichier « pap-secrets »

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 « dsl-provider »

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"

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 :

Le fichier « interfaces »

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

Vérifications

DHCP

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.

PPPoE

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

Question subsidiaire

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.

DHCP

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.

PPPoE

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.

Conclusions

Résumé de la situation

Vous disposez maintenant d'une machine qui possède deux connexions réseaux:

Mises en garde

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