Présentation
Le but de ce projet
est de faire tenir sur une disquette de 1.44 MO la totalité d’une
distribution Linux orientée réseau. Ce projet a donc été
réaalisé avec succés par des organismes chargés
du développement de Linux, ainsi il existe des sites internet qui
mettent à disposition des copies de leurs distributions. Dans
notre cas, on s’intéressera à la distribution LRP 2.9.6 qui
copie l’organisation générale d’une distribution Debian.
Des paquetages compacts associés aux principaux services et pilotes
réseau complète à la demande une base réduite
aux commandes essentielles. Ce système (LRP) réside uniquement
en mémoire vive et donc pour faire tourner un routeur, serveur,
firewall, il ne suffit d’avoir qu’un simple PC obsolète n’ayant
qu’un lecteur de disquette, pas de disque dur et peu de mémoire
vive, d’où un bon moyen pour ne pas dépenser l’argent inutilement.
Mise en place de LRP
La première chose
à faire est la recherche du site permettant de télécharger
la distribution souhaitée. Le site officiel : www.linuxrouter.org
étant inacessible, certainement en maintenance, je me suis connecté
à un site mirroir se trouvant à l’adresse : http://ftp.incas.de/pub/mirror/linuxrouter.org/
Une fois arrivé sur le site, on télécharge
les utilitaires permettant de préparer la disquette dans «
utils ».
On télécharge :
· mkdosfs
–vgg-0.3c.tar.gz
qui permet le formattage de la disquette
· syslinux-1.48.tar.gz
qui est le chargeur permettant de booter à
partir de la disquette
· 2.0.36pre15-1.tar.gz
qui est le noyau de cette distribution.
Ensuite, on les décompresse à l’aide
de la fonction tar :
tar –xvzf
mkdosfs –vgg-0.3c.tar.gz
tar –xvzf
syslinux_1.48.tar.gz
tar –xvzf
2.0.36pre15-1.tar.gz
on télécharge ensuite, tous les éléments
de base : syslinux.dpy, syslinux.cfg, root.lrp, etc.lrp, local.lrp, modules.lrp.
Formattage :
On utilise l’utilitaire mkdosfs
pour formatter la disquette :
mkdosfs
–cv /dev/fd0 –n lr
Amorçage :
L’amorcage se fait grâce
à l’utilitaire syslinux :
syslinux-1.48/syslinux
/dev/fd0
Copie des composants LRP:
On doit donc copier le noyau ainsi que les élément
de base de la distribution sur la disquette.
On renomme le noyau :
mv
2.0.36pre15-1/2.0.36pre15-1-LRP-zImage linux
On monte la disquette :
mount
-t msdos /dev/fd0 /mnt/floppy
On copie les fichier que l’on a téléchargé
auparavant :
cp syslinux.cfg
syslinux.dpy /mnt/floppy
cp linux /mnt/floppy
cp root.lrp
etc.lrp log.lrp local.lrp modules.lrp /mnt/floppy
On effectue ensuite le premier essai en
« rebootant »la machine :
shutdown
–r now
La machine reboot bien sur la disquette , et
l’on obtient l’écran suivant :
Linux Router project
Embedding the bird
for the sake of all humanity
Suivie du login:
Login :root
On accède donc au menu
principal lrcfg dans lequel on peut configurer le routeur à notre
façon et en quittant : q , on accède au même système
de fichier que sous une distribution normale mais avec beaucoup moins de
fichiers. Toute cette arborescence de fichier est en fait contenu dans
la mémoire vive à ce moment là .
Installation des pilotes:
Sachant que le but de ce projet
étant de réaliser une passerelle, il faut maintenant que
le système reconnaisse les deux cartes réseaux que l’on utilise
pour faire la passerelle. Pour cela, on doit charger les modules servant
de pilotes pour les cartes réseau.
On revient donc sur la machine
nous servant de développement, on va dans le noyau téléchargé
car il contient toute une série de modules, on fait :
cd 2.0.36pre15-1
cd /modules/net
On met la disquette dans le lecteur, on la monte :
mount –t msdos
/dev/d0 /mnt/floppy
On charge les modules utiles selon la marque et le
modèle de nos cartes réseau :
cp 3c59x.o
3c5x9.o 8390.o ne.o /mnt/floppy
On démonte la disquette :
umount
/mnt/floppy
Enfin, on reboot la machine :
shutdown
–r now
On se retrouve donc au menu de configuration, on quitte
ce menu : q
On monte la disquette :
mount
-t msdos /dev/fd0 /mnt
cp /mnt/3c509.o
/lib/modules
cp /mnt/3c59x.o
/lib/modules
cp /mnt/8390.o
/lib/modules
cp /mnt/ne.o
/lib/modules
On démonte la disquette:
umount
/mnt
On revient dans le menu de configuration
lrcfg
Dans ce menu, on va dans :
1) Package
setting
2) Modules
3) Modules
kernel to load at boot
Dans ce fichier, on décommente les lignes à
partir de 3c5x9
Il faut ensuite enregistrer ces modifications afin
qu’elles soit prise en compte lors du redémarrage de la machine.
On fait :
CTRL –S
CTRL –J
CTRL –K
A ce stade la modification du fichier est prise en
compte mais pas encore au niveau de la disquette et donc lors du redémarrage.
On revient au menu du début , on fait :
Q
Q
A ce niveau on entredans le menu :
b) Backup
puis
5) Modules
pour que les modifications effectuées au niveau
des modules soit prises en compte.
On peut maintenant « rebooter » la machine
:
Q
shutdown –r
now
Maintenant que les modules des cartes réseau
sont installés, les cartes réseau sont automatiquement reconnues
:
On fait :
lsmod
et l’on obtient une réponse de la forme :
Module
Pages Used by
3c509
2 2
8390
2 0
qui montre bien que les cartes réseau sont
reconnues par le système.
Configuration réseau:
Il nous maintenant configurer
la disquette afin qu’elle puisse faire office de passerelle, pour cela
il faut configurer les deux cartes réseau avec les adresses adéquates.
On utilise pour cela la commande
ifconfig de la manière suivante :
ifconfig
eth0 192.9.101.254 up
et
ifconfig eth1
10.1.13.1 up
Par contre, contrairement à
la configuration de la passerelle sur un PC (cf chapitre 1), la configuration
de la table de routage n’est pas automatique et c’est à nous d’installer
les routes necessaires.
Il nous faut donc automatiser ce
réseau , pour cela on édite le fichier /etc /network.conf,
on va dans le menu de configuration, on fait :
lrcfg
On va dans le menu :
1)Network
setting
2)Network
Configuration (auto)
et l’on change les lignes suivantes:
# Default setting
............
CONFIG_HOSTNAME=YES
CONFIG_HOSTFILE=YES
............
# Interfaces
IF0_IFNAME=eth0
IF0_IPADDR=192.9.101.254
IF0_NETMASK=255.255.255.0
IF0_BROADCAST=192.9.101.255
IF0_IF_SPOOF=YES
IF1_IFNAME=eth1
IF1_IPADDR=10.1.13.1
IF1_NETMASK=255.255.0.0
IF1_BROADCAST=10.1.255.255
IF1_IF_SPOOF=YES
.............
# Networks
NET0_NETADDR=192.9.101.0
NET0_NETMASK=$IF0_NETMASK
NET0_GATEWAY_IF=default
NET0_GATEWAY_IP=default
NET0_IPMASQ=YES
NET0_IP_MASQ_IF=default
NET1_NETADDR=10.1.0.0
NET1_NETMASK=$IF1_NETMASK
NET1_GATEWAY_IF=default
NET1_GATEWAY_IP=default
NET1_IPMASQ=YES
NET1_IP_MASQ_IF=default
Il faut maintenant activer
l’ip_forwarding afin que les pacquets ip transittent à travers la
passerelle. Pour cela on peut l’activer par le biais de la commande :
echo 1 > /proc/sys/net/ipv4/ip-forward
que l’on peut rajouter dans un sccript de démarrage
ou alors on peut activer l’option dans un des scripts du menu de configuration.
On fait :
lrcfg
1) Network
settings
2) Network
configuration
Et l’on active l’ip_forwarding en mettant:
# Default setting
........
IPFWDING_KERNEL=YES
IPFWDING_FW=YES
........
L’ip_forwarding est ainsi activé, si on fait:
cat /proc/sys/net/ipv4/ip-forward
on obtient: 1
On remarque que la table de routage
n’est pas encore complètement configurée et qu’il manque
des routes et notamment celle qui permet d’avoir l’accés à
internet via le proxy. Il faut donc rajouter ces routes que l’on place
dans un script de démarrage comme Lrp.conf. On fait donc :
lrcfg
3) System setting
Master LRP
settings (Lrp.conf)
Et dans ce fichier, on rajoute les lignes suivantes:
route add –net 192.168.10.4
netmask 255.255.255.255 gw 10.1.12.2 dev eth1
route add –net 192.9.101.254
netmask 255.255.255.255 dev eth0
route add –net 10.1.13.1
netmask 255.255.255.255 dev eth1
route add –net 0.0.0.0
netmask 0.0.0.0 gw 10.1.12.2 dev eth1
il nous faut maintenant enregistrer ces
changements afins que ceux ci soient pris en compte lors du rebootage de
la machine. On fait :
b) back
up ramdisk
2) etc
et enfin on reboot:
shutdown –r
now
Maintenant, la passerelle est correctement
configurer et l’on peut refaire les test effectués lors du chapitre
2 pour voir son bon fonctionnement. Il faut donc mainenant installer sur
cette passerelle un firewall filtrant comme on a pu voir au chapitre
précedent.
Mise en place du firewall
La distribution LRP que l’on a téléchargé
est basée sur un noyeau de Linux de type 2.0.36 et donc un noyeau
assez ancien, or dans le chapitre précédent on avait un noyeau
plus récent 2.2.15 qui intégrait un outils de firewall appelé
ipchains. Ce noyeau ne contient pas cet outil mais a un outils similaire
qui s’appelle ipfwadm.
Nous allons donc utiliser cet outil pour configurer
le même outil que précédement.
Les règles de ipfwadm
s’applique au démarrage de la machine et rest gravé dans
le système si on enregistre le script correspondant dans un fichier
de démarrage. On fait donc :
lrcfg
1) Network
setting
2) Network
configuration (direct)
Et l’on enregistre le script souhaité
dans ce fichier.
On enregistre le script suivant :
# CONFIGURATION
DU FIREWALL
# Initialisation
# Adresse du
proxy
IPPROX= «
192.168.10.4 »
# Adresses
du réseau
ADNET= «
192.9.101.0/24 »
# Toutes les
adresses ip
ANY= «
0.0.0.0/0 »
#On supprime
toutes les règles
ipfwadm –I
–f
ipfwadm –O
–f
ipfwadm –F
–f
# Les règles
de la chaine d’entrée
# On rejète
tout ce qui veut entrer
ipfwadm –I
–p reject
# On accepte
les entrées à partir du proxy
ipfwadm –I
–a accept –D $IPPROX
# On accepte
les entrées http
ipfwadm –I
–a accept –P tcp –S $ANY 80
ipfwadm –I
–a accept –P tcp –D $ANY 80
#On accepte
les entrées telnet
ipfwadm –I
–a accept –P tcp –S $ANY 23 –D $ADNET
ipfwadm –I
–a accept –P tcp –D $ADNET –S $ANY 23
#On accepte
les entrées smtp
ipfwadm –I
–a accept –P tcp –S $ANY 25 –D $ADNET
ipfwadm –I
–a accept –P tcp –D $ADNET –S $ANY 25
#On accepte
les entrées pop2 et pop3
ipfwadm –I
–a accept –P tcp –S $ANY 109:110 –D $ADNET
ipfwadm –I
–a accept –P tcp –D $ADNET –S $ANY 109:110
#On accepte
les entrées pour le protocole icmp
ipfwadm –I
–a accept –P icmp –S $ANY –D $ADNET
ipfwadm –I
–a accept –P icmp –D $ADNET –S $ANY
# Les règles
de la chaine de sortie
# On rejète
tout ce qui veut entrer
ipfwadm –O
–p reject
# On accepte
les sorties à partir du proxy
ipfwadm –O
–a accept –S $IPPROX
# On accepte
les sorties http
ipfwadm –O
–a accept –P tcp –S $ANY 80
ipfwadm –O
–a accept –P tcp –D $ANY 80
#On accepte
les sorties telnet
ipfwadm –O
–a accept –P tcp –S $ADNET –D $ANY 23
ipfwadm –O
–a accept –P tcp –S $ANY 23 –D $ADNET
#On accepte
les sorties smtp
ipfwadm –O
–a accept –P tcp –S $ADNET –D $ANY 25
ipfwadm –O
–a accept –P tcp –S $ANY 25 –D $ADNET
#On accepte
les sorties pop2 et pop3
ipfwadm –O
–a accept –P tcp –S $ADNET –D $ANY 109:110
ipfwadm –O
–a accept –P tcp –S $ANY 109:110 –D $ADNET
#On accepte
les sorties pour le protocole icmp
ipfwadm –O
–a accept –P icmp –S $ADNET –D $ANY
ipfwadm –O
–a accept –P icmp –S $ANY –D $ADNET
# Les règles
de la chaine de transmission
# On rejète
tout ce qui veut transiter
ipfwadm –F
–p deny
# On accepte
la transmission vers l’adresse du proxy
ipfwadm –F
–a accept –S $IPPROX
ipfwadm –F
–a accept –D $IPPROX
# On accepte
la transmission à l’intérieur du réseau
ipfwadm –F
–a accept –S $ADNET
ipfwadm –F
–a accept –D $ADNET
# On active
l’ masquerading, l’adresse ip de l’expéditeur
# est masquée
ipfwadm –F
–a masq –S $ADNET
ipfwadm –F
–a masq –D $ADNET
#On rejète
toutes les autres sortes de transmission
ipfwadm –F
–a reject
On enregistre maintenant ce
firewall sur la disquette comme on a vu précedement et l’on reboot
la machine.
Mise en place de LRP sur une
machine ne comprenant pas de coprocesseur
Pour les besoin du projet,
nous avons fait l’acquisition d’une machine assez vétuste ne comprenant
pas de coprocesseur. Ainsi, sur une telle machine l’installation précédente
ne fonctionnait pas et le système répondait :
no coprocessor
found
En fait, pour faire fonctionner
la distribution LRP sur une machine sans coprocessseur il faut lui intégrer
un noyeau différent :
Je lui intègre le noyau
FPU. Je garde les mêmes composants que j’ai utilisé pour la
configuration précédente en lui remplaçant le noyau
original par le noyau FPU :
On fait :
mv 2.0.36pre15-1-LRP.FPU-zImage
linux
cp linux /mnt/floppy
ainsi que le chargeur permettant de démarrer
à partir de la disquette :
syslinux-1.48/syslinux
/dev/fd0
On installe la disquette dans la
nouvelle machine et l’on vérifie que cette disquette fonctionne
bien à l’aide des ping et des telnet.
Configuration des cartes réseau
Il arrive parfois, sous linux, que
les cartes réseau ne soient pas bien configurées ou alors
qu’ elles prennent des IRQ identiques, ce qui fait que le système
ne peut pas fonctionner. Pour éviter cela, il existe des des programmes
permettant deconfigurer ces cartes. Ces programmes se trouvent sur internet.
Cependant, on ne peut configurer ces carte qu’à partir de Windows.
La solution est la suivante :
On utilise tout d’abord une disquette
permettant la création d’un disque virtuel sous windows 98 qui n’est
en fait présent que sur la mémoire vive du système.
Celle ci nous permet d’avoir l’accés au DOS, on obtient l’écran
suivant :
1) Demarrer
avec prise en charge du CD-Rom
2) Demarrer
sans prise en charge du CD-Rom
3) Afficher
fichier d’aide
On choisit :
2)
Une fois arrivé dans les commandes
DOS, on met une autre disquette contenant les drivers des cartes réseau
3c509b que l’on a téléchargé sur internet à
l’adresse :
http://Support.3com.com/infodeli/tools/nic/3c509/3c509b.1.htm
On fait dir
/w ( on voit ce qui se trouve sur la disquette )
Puis on fait : 3c5x9cfg
pour démarrer le programme de configuration des cartes.
On choisit maintenant la carte que l’on
veut configurer :
Install
Configure
NIC ... F4
Pour celle ci, on peut changer
l’IRQ ( on met 10), l’adresse (on met 300h ), le tranceiver type (qui permet
de diresi on est connecté en RJ45 ou en Coaxial) on met On board
TP ( RJ45 ) car on n’utilise pas de BNC, et enfin on active le full Duplex
(Enable) permettant au packet IP de transiter dans un sens ou dans l’autre.
Ok
On choisit ensuite la deuxième carte réseau
que l’on configure comme on veut.
Quit
Exit...F3
Les cartes réseau sont ainsi configurer comme
on le souhaite et peuvent être utilisées pour notre passerelle.
Les tests
Il faut ensuite effectuer toutes
une série de tests afin de véifier si la passerelle ainsi
configurée, on utilise de la même façon qu’au chapitre
2 des outils comme ping ou telnet
pour s’assurer du bon fonctionement de la passerelle
que ce soit avec ou sans coprocesseur. On fait donc :
depuis notre réseau :
ping
192.9.101.7
ping
10.1.12.2
telnet
192.9.101.7
telnet
101.12.2
et l’on teste ensuite la connexion internet (http)
ainsi que le système de transfert de fichier (ftp) à l’aide
de Netscape à partir d’un poste client.
et depuis le réseau de l’hopital :
ping
192.9.101.7
telnet
192.9.101.7
Et l’on essaie de transférer
un fichier appartenant au réseau de la radiologie à l’aide
de ftp, cela ne doit pas fonctionner en principe.
Au cas où tous les tests
précédents sont passés avec succés, on peut
en conclure que cette passerelle/firewall fonctionne bien.
|