Previous Contents

20   Corrigé du DS du 6 décembre 2007

Durée de l'examen : 2h00. Tous documents autorisés.

20.0.56   Scénario réseau

Le thème de cet exercice est le partage d'une liaison ADSL par les occupants d'une résidence universitaire. Les résidents font leurs études dans une école d'ingénieurs publique qui n'a plus les moyens de leur payer une connexion Internet (mettons que le scénario se passe dans les années 2010). Les résidents décident de se cotiser pour louer une connexion ADSL. La connexion est liée à l'une des chambres de la résidence et le modem ADSL se trouve dans cette chambre. Le modem est aussi relié via la prise réseau de la chambre au PC faisant office de routeur qui se trouve dans le local technique de la résidence. Ce PC dispose en fait de 4 interfaces réseau.
La liste des interfaces sur le PC routeur est donnée ci-dessous.
1: lan0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000
    inet 192.168.0.1/24 brd 192.168.0.255 scope global lan0
2: lan1: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000
3: lan2: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000
    inet 172.17.44.129/24 brd 172.17.44.255 scope global lan2
4:vlan2: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000
5:vlan3: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000
    inet 192.168.11.1/24 brd 192.168.11.255 scope global vlan3
6:wlan0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000
7:  br0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000
    inet 192.168.10.1/24 brd 192.168.10.255 scope global vlan2
8:   lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
    inet 127.0.0.1/8 scope host lo
Sans surprise le PC est sous Debian. On donne le fichier de définition des interfaces.
auto lan0 lan1 lan2
iface lan0 inet static
  address 192.168.0.1
  netmask 255.255.255.0
  gateway 192.168.0.254
iface lan1 inet manual
  up ifconfig lan1 up
iface lan2 inet static
  address 172.17.44.129
  netmask 255.255.255.0
auto vlan2 vlan3
iface vlan2 inet manual 
  vlan-raw-device lan1
  up ifconfig vlan2 up
iface vlan3 inet static
  vlan-raw-device lan1
  address 192.168.11.1
  netmask 255.255.255.0
auto wlan0
iface wlan0 inet manual
  wireless-mode master
  wireless-channel 10
  wireless-essid ELBARIO
  wireless-key 1234-1234-1234-1234-1234-1234-12
auto br0
iface brO inet static
  bridge-ports wlan0 vlan2
  address 192.168.10.1
  netmask 255.255.255.0
Partager une liaison ADSL pour un immeuble entier demande de mettre en place quelques restrictions. Ces restrictions sont définies au lancement du système par le fichier ci-dessous.
iptables -P FORWARD DROP
iptables -A FORWARD -i lan0 -j ACCEPT
iptables -A FORWARD -o lan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i lan2 -o br0 -j ACCEPT
iptables -A FORWARD -i lan2 -o vlan3 -j ACCEPT
iptables -A FORWARD -i br0 -o lan2 -j ACCEPT
iptables -A FORWARD -i vlan3 -o lan2 -j ACCEPT
iptables -A FORWARD -i br0 -o vlan3 -j ACCEPT
iptables -A FORWARD -i vlan3 -o br0 -j ACCEPT
iptables -A FORWARD -i br0 -o lan0 -p tcp -m tcp --dport 3128 -j ACCEPT
iptables -A FORWARD -d pop.polytech-lille.fr -i br0 -o lan0 -p tcp -m tcp --dport 110 -j ACCEPT
iptables -A FORWARD -d pop.free.fr -i br0 -o lan0 -p tcp -m tcp --dport 110 -j ACCEPT
iptables -A FORWARD -d pop3.orange.fr -i br0 -o lan0 -p tcp -m tcp --dport 110 -j ACCEPT
iptables -A FORWARD -d mail.polytech-lille.fr -i br0 -o lan0 -p tcp -m tcp --dport 2525 -j ACCEPT
iptables -A POSTROUTING -d pop.polytech-lille.fr -i br0 -o lan0 -p tcp -m tcp --dport 110 \
         -j MASQUERADE
iptables -A POSTROUTING -d pop.free.fr -i br0 -o lan0 -p tcp -m tcp --dport 110 -j MASQUERADE
iptables -A POSTROUTING -d pop3.orange.fr -i br0 -o lan0 -p tcp -m tcp --dport 110 -j MASQUERADE
iptables -A POSTROUTING -d mail.polytech-lille.fr -i br0 -o lan0 -p tcp -m tcp --dport 2525 \
         -j MASQUERADE
Répondez aux questions suivantes en vous appuyant sur les documents ci-dessus et en justifiant vos réponses.
  1. Quand une machine connectée sur le réseau sans fil ELBARIO contacte une machine du VLAN vlan2 quel rôle réseau le PC routeur joue-t-il ?
    Les deux interfaces wlan0 et vlan2 sont pontées au travers du bridge br0. Dans la communication le PC joue donc le rôle de commutateur et non pas de routeur.
  2. Pouvez-vous intuiter les informations IP données par le serveur DHCP hébergé sur le PC routeur aux machines des résidents ?
    Ces machines ne peuvent sortir de leurs VLANs que par les interfaces du PC routeur donc le DHCP va leur envoyer les adresses de passerelle 192.168.10.1 pour br0 et 192.168.11.1 pour vlan3. En ce qui concerne le DNS, les adresses envoyées par le serveur DHCP sont celles fournies par l'opérateur louant la liaison ADSL.
  3. Pour que le PC routeur puisse fonctionner, quelle valeur le drapeau système /proc/sys/net/ipv4/ip_forward doit-il avoir ?
    Une machine sous Linux ne peut faire transister des paquets IP d'une interface réseau à l'autre que si ce drapeau est à 1.
  4. Les machines de la résidence mitoyenne peuvent-il utiliser le PC routeur pour sortir sur la liaison ADSL des élèves nécessiteux ?
    Non, la règle par défaut de la chaîne FORWARD est d'interdire le passage des paquets. Et les seules règles d'autorisation concernant les paquets venant de l'interface lan2 ne permettent que d'atteindre les machines des élèves nécessiteux (VLANs vlan2 et vlan3 et réseau sans fil ELBARIO).
  5. A quelles machines, les élèves ne participant pas à la location de la liaison ADSL, peuvent-ils accéder ?
    Leurs paquets vont et viennent de l'interface vlan3. Les seules règles liées à ces paquets permettent le passage vers les interfaces br0 et vlan3. Ces élèves peuvent donc contacter les machines des autres élèves nécessiteux (que ce soient ceux participant à la location de la liaison ADSL ou les autres) et les machines des élèves de l'école privée.
  6. Quels indices laissent présager de la présence d'un serveur proxy web sur le PC routeur ? A quelle adresse IP ce serveur proxy est-il lié (au sens du bind de la bibliothèque des sockets) ?
    Une commande iptables permet de laisser passer des paquets vers l'interface lan0 du PC à condition que le port destination soit 3128. Ce port est traditionnellement utilisé par le proxy web squid. Comme le filtre ne concerne que les paquets partant par l'interface lan0, le serveur squid doit écouter sur l'IP 192.168.0.1.
  7. Les élèves participant à la location de la liaison ADSL peuvent-il accéder directement aux sites web d'Internet ? Sinon comment peuvent-ils surfer ?
    Il n'y a aucune régle permettant de laisser passer via le modem ADSL un paquet TCP à destination d'un port 80. Donc le surf direct n'est pas possible. Par contre il est possible de passer par le proxy web.
  8. Un élève participant à la location de la liaison ADSL peut-il relever sa boite de courriers electroniques ?
    Ca dépend. Par exemple si l'élève a sa boite aux lettres hébergée chez free, c'est possible. Une règle permet le passage du paquet de l'interface IP br0 à l'interface lan0 (vers le modem ADSL). Cela ne suffirait pas vu que les adresses des élèves ne sont pas des adresses publiques. Le PC routeur fait donc de la mascarade pour prêter son adresse IP (ce qui ne suffit pas non plus, voir question suivante).
  9. Expliquez comment un paquet IP partant du VLAN vlan2 et autorisé à se propager sur Internet est modifié et par quels éléments réseaux la modification est effectuée.
    Le paquet IP commence par passer par le PC routeur (la passerelle étant donnée par le serveur DHCP comme étant le PC routeur). A ce niveau une mascarade est appliquée, le paquet emprunte une adresse IP du PC routeur. Comme la route par défaut du PC est le modem ADSL (192.168.0.254), l'adresse empruntée sera celle de l'interface lan0 soit (192.168.0.1). Le paquet est ensuite envoyé au modem ADSL. A ce niveau il y a une seconde mascarade et le paquet part avec l'adresse IP routée allouée par le fournisseur. Le paquet est donc doublement mascaradé.

20.0.57   Scénario système

Ce scénario tourne autour de la mise en place d'un service de proxy web. La machine audomarois a été installée avec une Debian/Linux. Les services sont installés sur la machine, en particulier le serveur proxy web squid. Le serveur squid réalise aussi une fonction de cache; les pages web statiques sont stockées dans le répertoire /var/squid/cache pour être reservies plus tard à la demande. Lors de la configuration initiale de la machine seul un disque a été utilisé.

Voici la liste des partitions des disques :
audomarois:~# fdisk -l
Disk /dev/sda: 36.4 GB, 36401479680 bytes
144 heads, 6 sectors/track, 82287 cylinders
Units = cylinders of 864 * 512 = 442368 bytes
Disk identifier: 0x074dff4e

Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1       11304     4883325   83  Linux
/dev/sda2           11305       15826     1953504   82  Linux swap / Solaris
/dev/sda3           15827       61038    19531584   83  Linux
/dev/sda4           61039       82287     9179568    5  Extended
/dev/sda5           61039       72342     4883325   83  Linux
/dev/sda6           72343       82287     4296237   83  Linux

Disk /dev/sdb: 36.4 GB, 36401479680 bytes
255 heads, 63 sectors/track, 4425 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table

Disk /dev/sdc: 36.4 GB, 36401479680 bytes
255 heads, 63 sectors/track, 4425 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000

Disk /dev/sdc doesn't contain a valid partition table
Voici la liste des systèmes de fichiers montés :
audomarois:~# mount
/dev/sda1 on / type reiserfs (rw)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
procbususb on /proc/bus/usb type usbfs (rw)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/sda3 on /var type reiserfs (rw)
/dev/sda5 on /tmp type reiserfs (rw)
/dev/sda6 on /var/squid/cache type reiserfs (rw)
Maintenant que le système tourne nous allons faire en sorte de donner plus de place disque au cache de squid. Procédez suivant les étapes ci-dessous.
  1. Donnez la taille maximale du cache de squid dans la configuration courante.
    Le cache se trouve dans le répertoire /var/squid/cache et ce répertoire se trouve sur la partition /dev/sda6. Le cache ne pourra pas dépasser la taille de cette partition (il est même recommendé de n'utiliser que 80% de la taille de la partition). La partition se compose de 82287-72343=9944 cylindres de 442368 octets, soit 4,1G.
  2. Réalisez un groupe de volumes avec les deux disques restant (donnez les commandes nécessaires).
    Un exemple de commandes :
    # pvcreate /dev/sdb /dev/sdc
    # vgcreate system /dev/sdb /dev/sdb
    
  3. Créez maintenant une partition virtuelle prenant la totalité de l'espace disponible dans le groupe de volumes.
    Les deux disques sont de 36,4G, donc a défaut de connaitre exactement le nombre de PE disponibles, on peut tabler sur 70G disponibles :
    # lvcreate -L70G -n cache system
    
  4. Donnez la commande pour arrêter le serveur squid.
    # /etc/init.d/squid stop
    
  5. Donnez les commandes pour transférer les anciens fichiers présents dans le répertoire du cache de squid sur la nouvelle partition (installez un système de fichier ext3 sur cette partition).
    # mkfs -t ext3 /dev/system/cache
    # mount /dev/system/cache /mnt
    # ( cd /var/squid/cache ; tar cvpf - * ) | ( cd /mnt ; tar xvpf - )
    # umount /mnt
    
  6. Dans quel fichier faut-il opérer un changement pour que ce soit la partition LVM qui soit utilisée pour le cache plutôt que la partition /dev/sda6 ? Donnez la nouvelle ligne.
    Il faut modifier le fichier /etc/fstab de la manière suivante :
    #/dev/sda6        /var/squid/cache reiserfs defaults               0  1
    /dev/system/cache /var/squid/cache reiserfs defaults               0  1
    
  7. Que faut-il faire maintenant ?
    Relancer squid :
    # /etc/init.d/squid start
    
  8. La société Mc Donald vient de faire don d'un disque de 200Go en échange de l'affichage d'une publicité sur le Mc DéGeuh eXtrem en fond d'écran des machines de TP. Nous souhaitons remplacer un des deux disques de 36.4Go par ce nouveau disque, donnez la marche à suivre.
    On connecte le nouveau disque (il va probablement apparaitre comme /dev/sdd). On migre les données d'un ancien disque vers le nouveau :
    # pvcreate /dev/sdd
    # vgextend volume /dev/sdd
    # pvmove /dev/sdc /dev/sdd
    # vgreduce volume /dev/sdc
    
    On enlève l'ancien disque.
  9. On souhaite utiliser l'espace supplémentaire sur le nouveau disque pour l'ajouter au système de fichier du cache de squid. Comment procéder ?
    On étend la partition virtuelle et le système de fichiers :
    # lvextend -L+160G /dev/system/cache
    # /etc/init.d/squid stop
    # umount /var/squid/cache
    # resize2fs /dev/system/cache
    # mount /var/squid/cache
    # /etc/init.d/squid start
    

Previous Contents