La d�marche g�n�rale est la suivante�:
installer le mat�riel (et v�rifier son bon fonctionnement)�;
patcher et configurer le noyau�;
configurer le r�seau (ifconfig, route, bridging)�;
configurer le pare-feu.
Tout le long de la proc�dure, je consid�rerai une installation avec deux cartes ethernet (NIC), un lien ext�rieur DSL (o� le modem DSL est connect� � une des deux cartes r�seau) et un r�seau local connect� � l'autre carte r�seau. Arbitrairement, je d�signerai la carte connect�e au modem DSL par ��eth1�� et la carte sur le r�seau local par ��eth0��. Le nommage des p�riph�riques par le noyau d�pend des connecteurs sur lesquels ils sont enfich�s.
Je supposerai que l'on vous a assign� un sous-r�seau d'adresses IP � 192.168.2.128-191, c'est � dire avec un masque de r�seau de 255.255.255.192, et que le routeur fourni par le fournisseur DSL est � l'adresse 192.168.2.129. Ces valeurs sont des exemples arbitraires pour illustrer l'installation. J'utiliserai l'adresse 192.168.2.130 pour le pare-feu (les deux cartes), bien, qu'en fait, vous pouvez utiliser des adresses diff�rentes pour chacune des deux cartes si vous le souhaitez.
Vous aurez besoin de deux cartes ethernet pour faire fonctionner les choses. Le plus grand probl�me que j'ai eu �tait que j'avais choisi un connecteur au hasard sur ma carte m�re pour le seconde carte r�seau et qu'il s'est av�r� que ce slot (PCI) partageait une interruption avec celui de la premi�re carte r�seau. Je ne croyais pas que c'�tait un probl�me (en fait il y a peu d'informations sur ceci et je supposais que �a fonctionnerait correctement). Cela entra�nait que les deux cartes r�seau se d�sactivaient silencieusement (sans indiquer d'erreur) et arr�taient d'�mettre et de recevoir des paquets. Naturellement, quand vous proc�dez � toutes sortes de changements de configuration, c'est bien la derni�re des choses dont vous avez besoin. Je ne sais pas si c'est un probl�me avec toutes les cartes r�seau PCI ou seulement avec les n�tres mais j'aurais tendance � alerter sur les interruptions partag�es. Le driver tulip, que nous utilisons, note l'IRQ de chaque carte dans le syslog au d�marrage. Il y a une quantit� d'informations ailleurs (reportez-vous au Ethernet-HOWTO � la section Utiliser plus d'une carte r�seau par machine) � propos de la reconnaissance de deux cartes ethernet par le noyau en utilisant des options de d�marrage�; n�anmoins, je n'ai pas besoin de ceci (mon noyau reconna�t les deux cartes sans argument).
Ensuite, vous devez connecter la deuxi�me carte r�seau au modem DSL (ou quoi que ce soit d'autre qui vous relie au monde ext�rieur) et vous assurer que cela fonctionne. Vous devriez �tre en mesure ��d'ifconfigurer�� la seconde carte ethernet sur une adresse IP adhoc et pinguer le routeur de l'autre c�t� du lien. Ceci permet de v�rifier que vous pouvez envoyer et recevoir des paquets au travers du lien DSL. Par exemple, pour le r�seau pris en illustration vous faites�:
ifconfig eth1 192.168.2.130 netmask 255.255.255.192 broadcast 192.168.2.191 |
pour configurer la carte. Et puis
ifconfig eth0 down # juste pour s'assurer que cela n'interf�re pas avec autre chose ping 192.168.2.129 |
pour tester que vous pouvez bien atteindre le routeur. Pour bien faire, vous pourriez aussi v�rifier que vous pouvez atteindre les machines sur votre r�seau local par l'autre carte�:
ifconfig eth1 down # juste pour s'assurer que cela n'interf�re pas avec autre chose ifconfig eth0 up ping 192.168.2.x # o� x est l'adresse d'un machine sur votre r�seau local |
� ce point, vous vous �tes assur� que l'ensemble du mat�riel fonctionne.
En fonction de la version de votre noyau, vous aurez besoin soit de l'ancien outil de configuration de pont (BRCFG) pour les noyaux ant�rieurs � la version 2.2.14, soit du nouvel outil de configuration (bridgex) pour les noyaux ult�rieurs�; ces utilitaires vous permettent de contr�ler la fonction de pontage � l'int�rieur du noyau quand CONFIG_BRIDGE est activ�. BRCFG est distribu� sous forme de source avec des ex�cutables pr�-compil�s. Je ne sais pas sous quel noyau les ex�cutables ont �t� compil�s mais j'ai obtenu des r�sultats diff�rents apr�s une recompilation avec les fichiers include de mon noyau (2.2.13). Malheureusement, pour ce faire, j'ai d� les patcher l�g�rement. Voici les rustines�:
diff -C 3 -r /tmp/BRCFG/brcfg.c ./brcfg.c *** /tmp/BRCFG/brcfg.c Wed Feb 21 19:11:59 1996 --- ./brcfg.c Wed Dec 8 12:52:23 1999 *************** *** 1,6 **** ! #include <sys/types.h> ! #include <sys/socket.h> #include <skbuff.h> #include "br.h" --- 1,6 ---- ! #include <types.h> ! #include <socket.h> #include <skbuff.h> #include "br.h" |
Appliquez la rustine, recompilez brcfg et installez-le dans un endroit convenable (j'ai choisi /usr/bin).
Pour les noyaux ult�rieurs � la version 2.2.13, vous devez d�finitivement utiliser l'utilitaire bridgex. Je ne sais pas s'il fonctionne ou non avec des noyaux plus anciens. Remarquez que l'URL pour cet utilitaire peut �tre trouv�e dans l'aide de la configuration du noyau /usr/src/linux/Documentation/Configure.help ainsi, si l'URL mentionn�e ici est erron�e, jetez un coup d'œil dans le fichier d'aide (c'est l'aide pour l'item CONFIG_BRIDGE. L'archive bridgex contient un ex�cutable d�j� compil� mais vous devrez probablement le reconstruire en utilisant le Makefile �galement pr�sent. Remarquez que l'utilitaire bridgex prend des arguments l�g�rement diff�rents de ceux que prend le paquet BRCFG (qui seront d�taill�s plus tard quand je traiterai de la configuration du pont).
Vous devrez patcher et configurer votre noyau pour le pontage et le pont filtrant (de la m�me mani�re que pour le pare-feu, le r�seau, etc. si vous n'avez pas d�j� ces fonctionnalit�s). Les items de configuration suivants seront n�cessaires (au minimum)�:
CONFIG_EXPERIMENTAL=y CONFIG_BRIDGE=y CONFIG_FIREWALL=y CONFIG_IP_FIREWALL=y |
Vous devriez mettre la main sur la rustine ��Bridge Filter�� et l'appliquer � votre noyau. Recompilez, installez votre noyau puis red�marrez.
� ce niveau, vous devriez avoir vos deux cartes r�seau en �tat de fonctionner, un noyau nouvellement reconfigur� et brcfg install�. Maintenant, vous devez construire un script de d�marrage pour assembler le tout. J'ai fait cela en utilisant les scripts ��fa�on RedHat�� (/etc/rc.d). J'ai d�clar� les adresses et masques r�seau sp�cifiques dans /etc/sysconfig/network�:
GATEWAY=192.168.2.129 # adresse du routeur DSL GATEWAYDEV=eth1 # carte r�seau � laquelle le routeur est reli� ETH0_ADDR=192.168.2.130 # adresse IP de la carte sur le r�seau local ETH0_MASK=255.255.255.192 # masque du r�seau local ETH0_BROAD=192.168.2.191 # adresse de diffusion du r�seau local ETH1_ADDR=192.168.2.130 # adresse IP de la carte c�t� DSL ; peut �tre # diff�rente de ETH0_ADDR si vous voulez ETH1_MASK=$ETH0_MASK # masque r�seau c�t� DSL, devrait �tre le m�me # que sur eth0 ETH1_BROAD=$ETH1_BROAD # idem pour l'adresse de diffusion |
Ensuite, j'ai cr�� un script dans /etc/rc.d/init.d/bridge pour installer le pont. J'inclus deux scripts ici. Le premier est utilis� par le vieil outil BRCF l'autre pour le plus r�cent bridgex. D'abord, celui pour BRCFG�:
#!/bin/sh # # bridge Ce script installe le pontage pour DSL avec BRCFG # # description: utilise brcfg pour activer le pontage et configure les cartes # ethernet # nom du processus: bridge # config: # localisation de la biblioth�que de fonctions . /etc/rc.d/init.d/functions # localisation de la configuration du r�seau . /etc/sysconfig/network # voyons comment nous sommes appel� case "$1" in start) echo -n "configuration du pont: " ifconfig eth0 $ETH0_ADDR netmask $ETH0_MASK broadcast $ETH0_BROAD ifconfig eth1 $ETH1_ADDR netmask $ETH1_MASK broadcast $ETH1_BROAD route add $GATEWAY dev $GATEWAYDEV route add default gw $GATEWAY dev $GATEWAYDEV ifconfig eth0 promisc ifconfig eth1 promisc brcfg -enable echo ;; stop) # arr�t des d�mons brcfg -disable ifconfig eth0 down ifconfig eth1 down ;; restart) $0 stop $0 start ;; status) ifconfig eth0 ifconfig eth1 brcfg ;; *) echo "utilisation: bridge {start|stop|restart|status}" exit 1 esac exit 0 |
Le script qui suit est � utiliser avec l'utilitaire de configuration de pont bridgex. Notez que bridgex est bien plus configurable que le moins jeune BRCFG et que vous devriez jeter un coup d'œil � la page de manuel incluse dans l'archive de bridgex et adapter ce script�:
#!/bin/sh # # bridge Ce script installe le pontage pour DSL avec bridgex # # description: utilise bridgex pour d�marrer le pontage et configurer les # cartes ethernet # nom du processus: bridge # configuration: # localisation de la biblioth�que de fonctions . /etc/rc.d/init.d/functions # localisation de la configuration du r�seau . /etc/sysconfig/network # voyons comment nous sommes appel� case "$1" in start) echo -n "configuration du pont: " ifconfig eth0 $ETH0_ADDR netmask $ETH0_MASK broadcast $ETH0_BROAD ifconfig eth1 $ETH1_ADDR netmask $ETH1_MASK broadcast $ETH1_BROAD route add default gw $GATEWAY dev $GATEWAYDEV ifconfig eth0 promisc ifconfig eth1 promisc brcfg start brcfg device eth0 enable brcfg device eth1 enable echo ;; stop) # arr�t des d�mons brcfg stop ifconfig eth0 down ifconfig eth1 down ;; restart) $0 stop $0 start ;; status) ifconfig eth0 ifconfig eth1 brcfg ;; *) echo "utilisation: bridge {start|stop|restart|status}" exit 1 esac exit 0 |
Le script est ex�cut� lors du d�marrage. Il attribue les adresses � chacune des cartes r�seau, ajoute une route par d�faut qui pointe vers le routeur DSL, ajoute une route sp�cifique vers le routeur DSL, positionne chaque carte en mode ��promiscuous�� et puis active le pontage. J'ai cr�� des liens vers ce script dans les r�pertoires suivants dans /etc/rc.d�:
/etc/rc.d/rc0.d/K90bridge /etc/rc.d/rc1.d/K90bridge /etc/rc.d/rc2.d/S11bridge /etc/rc.d/rc3.d/S11bridge /etc/rc.d/rc4.d/S11bridge /etc/rc.d/rc5.d/S11bridge /etc/rc.d/rc6.d/K90bridge |
Ceci fait en sorte qu'il s'ex�cute apr�s le script de d�marrage du r�seau. Vous devez d�sactiver les autres configurations de eth0 (ou eth1) telles que celles qui sont faites dans le script /etc/rc.d/init.d/network (en supprimant les fichiers ifcfg-eth? de /etc/sysconfig/network-scripts/ dans la RedHat).
Pour tester les choses, je sugg�re de red�marrer en mode mono-utilisateur (en sp�cifiant ��single�� comme argument du noyau, par exemple, dans lilo ��lilo: linux single��) et en ex�cutant les scripts de d�marrage de /etc/rc.d/rc3.d un par un jusqu'� ce que vous arriviez au d�marrage du pont. D�marrez le pont et alors v�rifiez si vous pouvez atteindre des machines (vous utiliserez certainement ��ping -n�� pour ceci, afin de maintenir le serveur de noms hors jeu)�:
pinguez le routeur DSL�;
pinguez une machine locale�;
pinguez une machine sur le r�seau global.
Si vous pouvez pinguer toutes ces localisations, il y a de fortes chances que tout se passe bien. Remarquez que le pont met un petit moment � d�marrer. Vous pouvez contr�ler son �tat en utilisant la commande brcfg sans option.
Vous aurez besoin d'installer un pare-feu (en supposant que vous en voulez un) pour vous prot�ger des acc�s non autoris�s. La rustine ��Bridge Filter�� vous permet d'utiliser une nouvelle r�gle int�gr�e ��bridgein�� avec ipchains. Cette r�gle est utilis�e � chaque fois qu'un paquet doit �tre redirig� de eth0 vers eth1 ou inversement. La r�gle bridgein n'est pas utilis�e quand le paquet est destin� au pare-feu lui m�me�; vous devez utiliser la r�gle input pour cela. Je ne tenterai pas de rentrer en d�tail dans l'installation du pare-feu. R�f�rez-vous au IPCHAINS HOWTO pour ceci.
Pour chacune des machines de votre r�seau local, vous devez simplement lui indiquer une adresse IP, un masque de r�seau et utiliser le routeur DSL comme une passerelle (route par d�faut) le pont filtrant transf�rera les paquets vers et depuis le routeur DSL.
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:34