Bridging mini-Howto Christopher Cole cole@coledd.com v1.21, 7 maart 2001 In dit document wordt beschreven hoe een ethernet bridge op te zetten. Wat is een ethernet bridge? Een ethernet bridge is een device dat gegevenspakketjes beheert binnen een subnet in een poging de hoeveelheid verkeer te beperken. Een bridge wordt gewoonlijk tussen aparte groepen computers geplaatst die daarbinnen communiceren, maar niet zoveel als met de computers in de andere groep. Een goed voorbeeld hiervan is te zien als een cluster Macintoshes en een cluster unix computers. Beide groepen computers neigen nogal babbelziek onder elkaar te zijn, en het verkeer dat ze op het netwerk produceren veroorzaakt aanvaringen voor de andere computers die proberen met elkaar te communiceren. Een bridge zou tussen deze groepen computers worden geplaatst. De taak van de bridge bestaat dan hieruit de bestemming van de gegevenspakketjes één voor één te bestuderen en te beslissen wel of niet de pakketjes naar de andere kant van het ethernet segment door te geven. Het resultaat is een sneller, stiller netwerk met minder aanvaringen. ______________________________________________________________________ Inhoudsopgave 1. Setup 2. Gebruikelijke problemen ______________________________________________________________________ 1. Setup 1. Haal ``Bridge Config'' op van: <ftp://ftp.tux.org/people/alan-cox/BRCFG.tgz> BRCFG is ook te vinden op: <http://coledd.com/networking/bridge/> 2. Activeer meerdere ethernet devices op je computer door het volgende toe te voegen aan /etc/lilo.conf, en door lilo daarna opnieuw op te starten: append = "ether=0,0,eth1" Als je drie interfaces op je bridge hebt, voeg je in plaats daarvan de volgende regel toe: append = "ether=0,0,eth1 ether=0,0,eth2" Er kunnen meerdere interfaces worden gevonden door meer ether statements toe te voegen. Standaard onderzoekt de Linux kernel het systeem op een enkele ethernetkaart, en zodra er één wordt gevonden houdt het onderzoeken ernaar op. Het append statement hierboven vertelt de kernel naar meer ethernet devices te blijven zoeken nadat de eerste werd gevonden. Als alternatief kan hiervoor in de plaats de bootparameter worden gebruikt: linux ether=0,0,eth1 Of in het geval van 3 interfaces gebruik je: linux ether=0,0,eth1 ether=0,0,eth2 3. Hercompileer de kernel met BRIDGING geactiveerd. 4. Aan een bridge hoeft geen IP-adres toegekend te worden. Het KAN wel, maar een plain bridge heeft dit niet nodig. Ga voor het verwijderen van het IP-adres dat aan je bridge is toegekend naar /etc/sysconfig/network-scripts/ (voor een RedHat systeem) en kopieer ifcfg-lo0 naar ifcfg-eth0 & ifcfg-eth1. Vervang in deze 2 eth bestanden de regel ``DEVICE=lo'' door ``DEVICE=eth0'' en ``DEVICE=eth1''. Andere distributies kunnen hiervan afwijken, doe wat je moet doen! Als er meer dan 2 interfaces naar deze bridge zijn, maak dan bovendien de corresponderende configuraties. 5. Herstart het systeem, zodat je de nieuwe kernel met bridging activeert en ook om er zeker van te zijn dat er geen IP-adres aan de netwerkinterfaces is gekoppeld. 6. Zodra het systeem weer "in de lucht" is, plaats je de ethernetkaarten in promiscuous mode, zodat ze ieder pakketje dat de interface passeert bekijken: ifconfig eth0 promisc ; ifconfig eth1 promisc Alle interfaces verbonden met netwerksegmenten voor de bridge moeten in promiscuous mode worden gezet. 7. Zet bridging AAN met behulp van het programma brcfg: brcfg -ena 8. Verifieer dat er ander verkeer is op iedere interface: tcpdump -i eth0 (in een venster) tcpdump -i eth1 (in een ander venster) 9. Start op een andere computer een sniffer of tcpdump ter verificatie dat de bridge het segment correct afzondert. 2. Gebruikelijke problemen 1. Vraag Ik kreeg de melding ioctl(SIOCGIFBR) failed: Package not installed Wat betekent dit? Antwoord Je hebt geen ondersteuning voor bridging in je kernel. Zorg dat je aan kernel 2.0 of nieuwere versie komt, en hercompileer het met de BRIDGING optie geactiveerd. 2. Vraag Computers aan de ene kant kunnen de computers aan de andere kant niet pingen! Antwoord · Heb je bridging geactiveerd met behulp van ``brcfg -ena''? (brcfg zou als antwoord terug moeten geven ``bridging is ENABLED'') · Heb je de interfaces in promiscuous mode gezet? (voer de opdracht ``ifconfig'' uit. De ``PROMISC'' vlag zou voor beide interfaces aan moeten staan). · Als je gebruik maakt van multiple-media interface adapters, zorg er dan voor dat de juiste is geactiveerd. Misschien dat je het config/setup programma nodig hebt dat met de netwerk interfacekaart werd meegeleverd. 3. Vraag Ik kan niet telnetten/ftp-en vanaf de bridge! Waarom niet? Antwoord Dit komt omdat er met de bridge interfaces geen IP-adres is verbonden. Een bridge is bedoeld als een transparant onderdeel van het netwerk. 4. Vraag Wat heb ik nodig om routing in te stellen? Antwoord Niets! Alle routing intelligentie wordt afgehandeld door de bridging code in de kernel. Gebruik het programma brcfg in debug mode om de ethernetadressen te bekijken zoals ze aan de bridge zijn opgegeven. brcfg -deb 5. Vraag De bridge schijnt te werken, maar waarom laat ``traceroute'' de bridge niet zien als onderdeel van het path? Antwoord Vanwege de eigenschappen van een bridge, laat een ``traceroute'' de bridge NIET als onderdeel van het path zien. Een bridge is bedoeld als een transparante component van het netwerk. 6. Vraag Is het nodig IP_FORWARD in de kernel te compileren? Antwoord Nee. De bridging code in de kernel zorgt voor het transport van de pakketjes. IP_FORWARD is voor een gateway waar een IP-adres met de interfaces is verbonden. 7. Vraag Waarom zijn de fysieke ethernetadressen voor poort 1 en poort 2 hetzelfde volgens het ``brcfg'' programma? Zouden ze niet verschillend moeten zijn? Antwoord Nee. Aan elke poort op een bridge is doelbewust hetzelfde ethernetadres toegekend door de bridging code. 8. Vraag Bridging verschijnt niet als een optie bij het uitvoeren van een make config op de kernel. Hoe activeert men dit? Antwoord Antwoord tijdens de kernelconfig 'Y' op de vraag, ``Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) [Y/n/?]''. 9. Vraag Te veel hubs (4 of meer) achtereenvolgens in een keten (in serie) veroorzaakt tijdsproblemen op een ethernet. Welk effect heeft een bridge in een subnet dat met hubs in lagen werkt? Antwoord Een bridge reset de 3/4/5 hubs regel. Een bridge gaat niet zo met pakketjes om zoals een hub dat doet, en draagt daarom niet bij aan tijdsproblemen op een netwerk. 10. Vraag Is een bridge interface naar zowel 10Mb als 100Mb ethernetsegmenten mogelijk? Zal een dergelijke configuratie de rest van het verkeer op de hoge snelheidszijde vertragen? Antwoord Ja, een bridge kan een 10Mb segment verbinden met een 100Mb segment. Zolang als de netwerkkaart op het snelle netwerk 100Mb capabel is, zorgt TCP voor de rest. Ondanks dat het klopt dat de pakketjes van een host communicerend in het 100Mb netwerk verplaatst worden in slechts 10Mb/s, zal de rest van het verkeer op het snelle ethernet daardoor niet worden vertraagd.