3. Configuration du routeur Linux

 

 

3.1 INSTALLATION D'UNE DISTRIBUTION LINUX ET COMPILATION DU NOYAU

 

On a choisi arbitrairement de travailler sous Mandrake Linux 9.0. Cette distribution comporte déjà un noyau 2.4 (en fait, 2.4.19). Il suffit donc de le recompiler en validant les options de routage avancé (cf. section 3.1), en particulier :

 

CONFIG_IP_ADVANCED_ROUTER=y

CONFIG_IP_MULTIPLE_TABLES=y

CONFIG_IP_ROUTE_FWMARK=y

CONFIG_IP_ROUTE_TOS=y

 

Ainsi que celles de gestion des files d’attente :

 

#

# QoS and/or fair queueing

#

 

CONFIG_NET_SCH_CBQ=y

CONFIG_NET_SCH_HTB=y

CONFIG_NET_SCH_CSZ=y

CONFIG_NET_SCH_PRIO=y

CONFIG_NET_SCH_RED=y

CONFIG_NET_SCH_SFQ=y

CONFIG_NET_SCH_TEQL=y

CONFIG_NET_SCH_TBF=y

CONFIG_NET_SCH_GRED=y

CONFIG_NET_SCH_DSMARK=y

CONFIG_NET_SCH_INGRESS=y

CONFIG_NET_QOS=y

CONFIG_NET_CLS=y

CONFIG_NET_CLS_TCINDEX=y

CONFIG_NET_CLS_ROUTE4=y

CONFIG_NET_CLS_ROUTE=y

CONFIG_NET_CLS_FW=y

CONFIG_NET_CLS_U32=y

CONFIG_NET_CLS_RSVP=y

CONFIG_NET_CLS_RSVP6=y

CONFIG_NET_CLS_POLICE=y

 

 

3.2 CONFIGURATION DE L'INTERFACE RESEAU (CARTE ETHERNET)

 

Il est nécessaire d’avoir les droits de super utilisateur root pour effectuer les configurations de la machine. Pour toute la suite de ce document, on supposera que l’on est en root (commande su par exemple). On attribue à la carte Ethernet l’adresse IP 192.168.0.2 en modifiant le fichier /etc/sysconfig/network-scripts/ifconfig_eth0 :

 

DEVICE = eth0

BOOTPROTO = static

IPADDR = 192.168.0.2

NETMASK = 255.255.255.0

NETWORK = 192.168.0.0

BROADCAST = 192.168.0.255

ONBOOT = yes

 

On réactive l’interface eth0 :

 

# ip link set eth0 up

 

On obtient alors la table de routage suivante :

 

# ip route show

 

192.168.0.0/24 via 192.168.0.2 dev eth0  scope link

192.168.0.0/24 dev eth0  scope link

127.0.0.0/8 dev lo  scope link

default via 192.168.0.1 dev eth0

default via 192.168.0.1 dev eth0  metric 2

 

 

3.3 CONFIGURATION DU RESEAU VIRTUEL

 

On cherche à simuler une deuxième carte Ethernet sur notre machine, d’adresse IP 192.168.1.2, avec toujours pour destination par défaut l’adresse 192.168.0.1. Pour cela, on utilise le procédé d’IP Aliasing (avec ifconfig) ou de labelisation (iproute2) :

 

# ifconfig eth0:0 192.168.1.2

 

ou encore avec l’outil iproute2 :

 

# ip addr add local 192.168.1.2/24 brd 192.168.1.255 dev eth0 label eth0:0 scope link

 

où l’on spécifie une adresse réseau sur 24 bits, soit l’équivalent d’une classe C, et une adresse de diffusion 192.168.1.255 sur l’interface eth0:0. On vérifie en affichant la configuration de nos interfaces :

 

# ip addr show

 

1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 brd 127.255.255.255 scope host lo

2: eth0: <BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc pfifo_fast qlen 100

    link/ether 00:06:29:a9:d4:30 brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.2/24 brd 192.168.1.255 scope link eth0:0

    inet 192.168.0.2/24 brd 192.168.0.255 scope global eth0

 

On remarque au passage que le gestionnaire de file d’attente (qdisc) par défaut est de type pfifo_fast et que la longueur de la file qlen est de 100.

 

On obtient la table de routage ci-dessous :

 

# ip route

 

192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.2

192.168.0.0/24 via 192.168.0.2 dev eth0  scope link

192.168.0.0/24 dev eth0  scope link

127.0.0.0/8 dev lo  scope link

default via 192.168.0.1 dev eth0

 

qui correspond avec l’outil route à la table qui suit :

 

# route –n

 

Table de routage IP du noyau

Destination   Passerelle      Genmask         Indic Metric Ref   Use  Iface

192.168.1.0   0.0.0.0         255.255.255.0   U     0      0       0  eth0

192.168.0.0   192.168.0.2     255.255.255.0   UG    0      0       0  eth0

192.168.0.0   0.0.0.0         255.255.255.0   U     0      0       0  eth0

127.0.0.0     0.0.0.0         255.0.0.0       U     0      0       0  lo

0.0.0.0       192.168.0.1     0.0.0.0         UG    0      0       0  eth0

 

 

3.4 CONFIGURATION RESEAU DU NOYAU

 

Il ne reste plus qu’à indiquer au noyau qu’il doit transmettre les paquets, ici du réseau 192.168.0.0 au réseau 192.168.1.0 et vice versa, ce que l’on effectue avec la commande suivante :

 

echo 1 > /proc/sys/net/ipv4/ip_forward

 

 

3.5 VERIFICATIONS D'USAGE

 

Une fois le routeur configuré, on vérifie si tout s’est bien déroulé en envoyant des ping sur ses deux adresses IP :

 

# ping -c 3 192.168.0.2

 

PING 192.168.0.2 (192.168.0.2) from 192.168.0.3 : 56(84) bytes of data.

 

64 bytes from 192.168.0.2: icmp_seq=1 ttl=128 time=0.370 ms

64 bytes from 192.168.0.2: icmp_seq=2 ttl=128 time=0.239 ms

64 bytes from 192.168.0.2: icmp_seq=3 ttl=128 time=0.251 ms

 

--- 192.168.0.2 ping statistics ---

 

3 packets transmitted, 3 received, 0% loss, time 1998ms

rtt min/avg/max/mdev = 0.239/0.286/0.370/0.062 ms

 

 

# ping -c 3 192.168.1.2

 

PING 192.168.1.2 (192.168.1.2) from 192.168.1.2 : 56(84) bytes of data.

64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.048 ms

64 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=0.034 ms

64 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=0.034 ms

 

--- 192.168.1.3 ping statistics ---

 

3 packets transmitted, 3 received, 0% loss, time 1998ms

rtt min/avg/max/mdev = 0.034/0.038/0.048/0.009 ms

 

ainsi que vers le modem adsl d’adresse IP 192.168.0.1 :

 

# ping -c 3 192.168.0.1

 

PING 192.168.0.1 (192.168.0.1) from 192.168.0.3 : 56(84) bytes of data.

64 bytes from 192.168.0.1: icmp_seq=1 ttl=254 time=1.07 ms

64 bytes from 192.168.0.1: icmp_seq=2 ttl=254 time=0.625 ms

64 bytes from 192.168.0.1: icmp_seq=3 ttl=254 time=0.628 ms

 

--- 192.168.0.1 ping statistics ---

 

3 packets transmitted, 3 received, 0% loss, time 2007ms

rtt min/avg/max/mdev = 0.625/0.776/1.076/0.213 ms

 

On vérifie également que l’on a bien accès à Internet, par exemple, en ouvrant une page web.



Retour au sommaire