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.
-
L'interface LAN0 est connectée au modem ADSL via la distribution du bâtiment.
Le réseau IP utilisé sur cette interface est 192.168.0.0/24.
- L'interface LAN1 est connectée au nuage de commutateurs deservant les
chambres de la résidence. Sur ce nuage sont implantés deux VLANs : un pour les cotisants
(le VLAN2) et un pour les non cotisants (le VLAN3). Le VLAN des cotisants
utilise le réseau IP 192.168.10.0/24 et celui des non-cotisants utilise le réseau
IP 192.168.11.0/24.
- L'interface LAN2 est relié au réseau de la résidence d'une école privée
mitoyenne. Non pas que l'école privée souhaite offrir un accès réseau à des sous-développés
mais à titre charitable pour pouvoir participer aux jeux en réseau organisés dans la résidence
de l'école privée. Le réseau IP correspondant est imposé par la résidence mitoyenne :
172.17.44.0/24.
- Enfin l'interface WLAN0 offre un accès wifi très limité autour du local technique
(en particulier pour la chambre d'accès ADSL dont la prise filaire est squattée par le
modem ADSL). Il n'y a pas de réseau IP spécifique prévu pour cette interface.
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.
-
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.
- 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.
- 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.
- 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).
- 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.
- 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.
- 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.
- 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).
- 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.
-
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.
- 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
- 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
- Donnez la commande pour arrêter le serveur squid.
# /etc/init.d/squid stop
- 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
- 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
- Que faut-il faire maintenant ?
Relancer squid :
# /etc/init.d/squid start
- 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.
- 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