Bridging mini HOWTO Christopher Cole Version française : Samuel Tribehou v1.11, 7 Septembre 1998. Ce document décrit l'installation d'un pont ethernet. Un pont est une machine qui contrôle des paquets de données à l'intérieur d'un sous- réseau dans le but de réduire le trafic. Un pont est généralement plaçé entre deux groupes différents d'ordinateurs qui peuvent communi­ quer entre eux, mais pas avec les ordinateurs de l'autre groupe. Un bon exemple est de considérer un groupe de Macintosh et un autre de machines Unix. Ces groupes de machines tendent à beaucoup communiquer entre eux, et le trafic qu'ils produisent sur le réseau engendre des collisions pour les autres machines qui tentent de communiquer. Un pont sera plaçé entre ces groupes d'ordinateurs. Son rôle sera alors d'examiner la destination des paquets de données un par un et de décider de passer ou non les paquets de l'autre côté du segment ether­ net. Le résultat est un réseau plus rapide, «silencieux», et engen­ drant moins de collisions. ______________________________________________________________________ Table des matières 1. Installation 2. Questions fréquemment posées. ______________________________________________________________________ 11.. IInnssttaallllaattiioonn · Se procurer «Bridge Config» : · Authoriser de multiples interfaces ethernet sur la machine en ajoutant ceci à votre /etc/lilo.conf, et en relançant lilo : append = "ether=0,0,eth1" Si vous avez trois interfaces sur votre pont, utilisez cette ligne à la place : append = "ether=0,0,eth1 ether=0,0,eth2" D'autres interfaces pourront être trouvées en rajoutant plus de décla­ rations ether. Par défaut le noyau ne cherche à détecter qu'une seule carte ethernet, et dès qu'il en a trouvé une la détection cesse. La déclaration append ci-dessus indique au noyau de continuer à chercher d'autres cartes ethernet une fois la première trouvée. Alternative­ ment, les paramètres de boot peuvent être utilisés à la place : linux ether=0,0,eth1 ou, avec 3 interfaces, utilisez : linux ether=0,0,eth1 ether=0,0,eth2 · Recompilez le noyau en rajoutant l'option BRIDGING. · Un pont ne devrait pas avoir d'adresse IP. Il PEUT, mais un véritable pont n'en a pas besoin. Pour enlever l'adresse IP de votre pont, allez dans /etc/sysconfig/network-scripts/ (pour une RedHat) et copiez ifcfg-lo0 dans ifcfg-eth0 et ifcfg-eth1. Dans ces deux fichiers, changez la ligne contenant «DEVICE=lo» en «device=eth0» et «DEVICE=eth1». Les autres distributions peuvent dériver sur ce point. Faites ce que vous devez faire ! S'il y a plus de 2 interfaces sur ce pont, soyez sûr de faire les configurations correspondantes pour les autres aussi. · Rebootez, de façon à utiliser le nouveau noyau avec l'option bridging, et pour être sûr que des adresses IP ne sont pas attachées aux interfaces reseau. · Une fois que le système est prêt, mettez les cartes ethernet en mode «promiscuous», de façon à ce qu'elles regardent chaque paquet qui passe par leur interface : ifconfig eth0 promisc; ifconfig eth1 promisc Toutes les interfaces qui sont connectées aux segments réseau à relier doivent être mises en «promiscuous mode». · Mettez le pont en route en utilisant le programme brcfg : brcfg -ena · Vérifiez qu'il y a un trafic différent pour chaque interface : tcpdump -i eth0 (dans une fenêtre). tcpdump -i eth1 (dans une autre fenêtre). · Lancez un sniffer ou tcpdump sur une autre machine pour vérifier que le pont sépare les segments correctement. 22.. QQuueessttiioonnss ffrrééqquueemmmmeenntt ppoossééeess.. · QQ :: _J_'_a_i _l_e _m_e_s_s_a_g_e _: ioctl(SIOCGIFBR) failed~: Package not installed. Qu'est-ce que ça veut dire ? RR :: Le support du pontage n'est pas intégré dans votre noyau. Utilisez un noyau 2.0 ou supérieur, et recompilez-le avec l'option BRIDGING. · QQ :: _L_e_s _m_a_c_h_i_n_e_s _q_u_i _s_o_n_t _d_'_u_n _c_ô_t_é _d_u _p_o_n_t _n_e _p_e_u_v_e_n_t _p_a_s _«_p_i_n_g_e_r_» _l_e_s _a_u_t_r_e_s _! RR :: 1. Avez vous activé le pontage en utilisant «brcfg -ena» ? (brcfg devrait répondre «bridging is ENABLED» ) 2. Avez vous mis l'interface en «promiscuous mode» ? (Tapez la commande «ifconfig». Le drapeau (flag) devrait être mis sur les deux interfaces.) 3. Si vous utilisez des cartes pouvant gérer plusieurs sortes d'interface, vérifiez que c'est la bonne qui est utilisée. Il se peut que vous ayez besoin d'utiliser le programme de configuration qui est livré avec votre carte réseau. · QQ :: _J_e _n_e _p_e_u_x _p_a_s _u_t_i_l_i_s_e_r _t_e_l_n_e_t _o_u _f_t_p _d_e_p_u_i_s _l_e _p_o_n_t _! _p_o_u_r_q_u_o_i _? RR :: C'est parce que le pont n'a d'adresse IP pour aucune de ses interfaces. Un pont doit être une partie transparente d'un réseau. · QQ :: _Q_u_e _d_o_i_s_-_j_e _c_o_n_f_i_g_u_r_e_r _p_o_u_r _q_u_e _l_e _r_o_u_t_a_g_e _s_e _f_a_s_s_e _b_i_e_n _? RR :: Rien ! Tout le méchanisme de routage est délégué au code de pontage du noyau. Pour voir les adresses ethernet telles qu'elles sont comprises par le noyau, utilisez le programme brcfg en mode debug : bbrrccffgg --ddeebb · QQ :: _L_e _p_o_n_t _s_e_m_b_l_e _m_a_r_c_h_e_r_, _m_a_i_s _p_o_u_r_q_u_o_i traceroute ne montre pas le pont comme faisant partie du chemin ? RR :: À cause de la nature d'un pont, traceroute ne devrait PAS montrer le pont comme faisant partie du chemin. Un pont doit être transparent pour le reste du réseau. · QQ :: _E_s_t_-_i_l _n_é_c_e_s_s_a_i_r_e _d_e _c_o_m_p_i_l_e_r _l_e _n_o_y_a_u _a_v_e_c _l_'_o_p_t_i_o_n IP_FORWARD ? RR :: Non. Le code de pontage dans le noyau se charge du transport des paquets. IP_FORWARD sert pour une passerelle qui a des adresses IP associées à ses interfaces. · QQ :: _P_o_u_r_q_u_o_i _e_s_t_-_c_e _q_u_e _l_e_s _a_d_r_e_s_s_e_s _e_t_h_e_r_n_e_t _p_h_y_s_i_q_u_e_s _p_o_u_r _l_e _p_o_r_t _1 _e_t _2 _s_o_n_t _l_e_s _m_ê_m_e_s _s_e_l_o_n brcfg ? Ne devraient-elles pas être différentes ? RR :: Non. Chaque port sur un pont est intentionellement assigné à la même adresse ethernet physique par le code de pontage. · QQ :: _B_r_i_d_g_i_n_g _n_'_a_p_p_a_r_a_i_t _p_a_s _d_a_n_s _l_e_s _o_p_t_i_o_n_s _l_o_r_s_q_u_e _j_e _f_a_i_s _u_n_/ make config sur les sources du noyau. Comment faire pour pouvoir le sélectionner ? RR :: Pendant la configuration du noyau, répondez Y à la question«Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) Y/n/?». · QQ :: _T_r_o_p _d_e _h_u_b_s _(_4 _o_u _p_l_u_s_) _c_h_a_î_n_é_s _l_'_u_n _a_p_r_è_s _l_'_a_u_t_r_e _(_e_n _s_é_r_i_e_) _p_o_s_e_n_t _d_e_s _p_r_o_b_l_è_m_e_s _d_e _t_i_m_i_n_g _s_u_r _u_n _e_t_h_e_r_n_e_t_. _Q_u_e_l _e_f_f_e_t _a _u_n _p_o_n_t _d_a_n_s _u_n _s_o_u_s_-_r_é_s_e_a_u _a_c_c_é_d_é _p_a_r _d_e_s _h_u_b_s _? RR :: Un pont annule la règle des 3/4/5 hubs. Un pont ne gère pas les paquets de la même façon qu'un hub, et ne contribue donc pas aux problèmes de timing dasns un réseau. · QQ :: _E_s_t_-_c_e _q_u_'_u_n _p_o_n_t _p_e_u_t _ê_t_r_e _i_n_t_e_r_f_a_ç_é _a_v_e_c _d_e_s _s_e_g_m_e_n_t_s _e_t_h_e_r_n_e_t _d_'_u_n _c_ô_t_é _d_e _1_0_M_b _e_t _d_e _l_'_a_u_t_r_e _d_e _1_0_0_M_b _? RR :: Oui, un pont peut joindre entre eux un segment de 10Mb avec un autre de 100Mb. Du moment que la carte réseau du côté rapide du réseau est une 100Mb, TCP prendra en charge le reste. Bien qu'il soit vrai que les paquets d'un hôte dans le réseau à 100Mb communiquant avec un autre du réseau à 10Mb se déplaceront à seulement 10Mb/s, le reste du trafic sur l'ethernet rapide n'est pas ralenti. .