Laczenie 2 sieci?
|
|
Jak po│╣czyµ 2 sieci (routing w Linuxie)Pewnie wielu z Was, posiadaczy sieci lokalnych, zastanawia│o siΩ, jak mo┐na po│╣czyµ dwie sieci tak, by przekroczyµ barierΩ 185 m bez stosowania kart firmy 3Com. Ot≤┐ niezbΩdnym akcesorium do takiej pracy jest wolnostoj╣cy serwer, kt≤ry musia│by chodziµ non-stop. Lokalizacja takiego serwera to najlepiej koniec sieci, by maksymalnie m≤g│ j╣ wyd│u┐yµ. Poza tym serwer nie musi mieµ ani klawiatury, ani monitora - wystarczy go tylko raz skonfigurowaµ i zostawiµ na pastwΩ losu. Co do mocy takiego komputera to wszystko zale┐y od systemu operacyjnego. Do prostego rozwi╣zania na Linuxie wystarczy jakie£ 486 i 8 MB RAMu choµ to absolutne minimum. Poza tym pewnie u┐ytkownicy sieci chcieliby, aby serwer opr≤cz │╣czenia sieci obs│ugiwa│ tak┐e wewnΩtrzny e-mail, WWW, FTP i inne us│ugi. Dlatego rozs╣dna praca zaczyna siΩ od 486 DX2/4, 16 MB RAM i 200 HDD. Gdy ju┐ z│o┐ycie serwer ze starych czΩ£ci nale┐y kupiµ do niego dwie karty sieciowe (do ka┐dej sieci jedna). Konfiguracja Linuxa dla niedo£wiadczonego u┐ytkownika jest do£µ trudna, wiΩc zak│adam, ┐e czytaj╣cy ten artyku│ ma o tym pojΩcie.
Podstaw╣ │╣czenia dw≤ch sieci jest transmisja pakiet≤w z jednej karty sieciowej do drugiej. Nosi to nazwΩ tzw. routingu. Tabela routingu jest automatycznie tworzona na podstawie parametr≤w kart sieciowych. Mo┐na j╣ obejrzeµ poleceniem /sbin/route. Jednak routing za│atwia jedynie sprawΩ pakiet≤w adresowanych. Jednak wiele pakiet≤w to tzw. broadcasty, czyli adresowane do wszystkich (np. Microsoft Network, r≤┐ne gierki u┐ywaj╣ tego do znajdywania serwer≤w, programy do rozmawiania przez sieµ, np. LANChat). Spraw╣ przenoszenia takich pakiet≤w zajmuje siΩ tzw. bridging. S╣ dwie mo┐liwo£ci │╣czenia sieci ze wzglΩdu na adres IP. Mo┐na zmieniµ przedostatni╣ warto£µ w adresie sieci, np. 192.168.0.X i 193.168.1.X lub podzieliµ sieµ 192.168.0.X na dwie sieci - 193.168.0.(0-127) oraz 193.168.0.(128-255). Drugie rozwi╣zanie jest bardziej uniwersalne poniewa┐ nie zmienia siΩ klasa adresowa C w ca│ej po│╣czonej sieci, a niekt≤re programy nie toleruj╣ klasy B (np. LANChat). Podzia│ klasy C IP na dwie czΩ£ci
By skonfigurowaµ karty sieciowe edytujemy pliki /etc/sysconfig/network-scripts/ifcfg-eth0 i ifcfg-eth1 (w dystrybucji Red Hat). Oto przyk│adowy plik ifcfg-eth0 dla sieci z rozdzielon╣ klas╣ C: DEVICE="eth0" I analogiczny plik dla eth1: DEVICE="eth1" W komputerach w sieci trzeba ustawiµ bramkΩ (gateway) i tu wpisaµ KONIECZNIE adres IP karty sieciowej serwera z naszej sieci, np. dla komputera o adresie 192.168.0.7 nale┐y wpisaµ 192.168.0.1 (je£li akurat .1 jest serwerem), a dla komputera 192.168.0.163 wpisaµ 192.168.0.129 (je£li .129 to druga sieci≤wka serwera). Oczywi£cie adresy, kt≤re tu przytaczam s╣ przyk│adowe i nie narzucam adresu rozpoczynaj╣cego siΩ 192.168.0, poniewa┐ mo┐e byµ inny, lecz ostatnia warto£µ w adresie IP jest niesamowicie wa┐na. Nale┐y te┐ pamiΩtaµ by w pliku /etc/sysconfig/network wpisaµ GATEWAYDEV="lo" i GATEWAY="127.0.0.1" by nie wystΩpowa│y inne problemy. Po poprawnym skonfigurowaniu wszystkie pakiety (zar≤wno normalne jak i broadcasty) powinny byµ poprawnie kierowane. Poprawno£µ dzia│ania mo┐na sprawdziµ z poziomu systemu Windows za pomoc╣ polecenia tracert (lub traceroute w Linuxie), kt≤re powinno pokazaµ trasΩ pakiet≤w do drugiej sieci poprzez serwer. Uruchamianie dw≤ch interfejs≤wAby kernel szuka│ nastΩpnego interfejsu sieciowego gdy ju┐ znajdzie jeden do pliku /etc/lilo.conf dopisujemy nastΩpuj╣c╣ linijkΩ append = "ether=0,0,eth1" lub ewentualnie gdy chcemy zrobiµ bridge'a obs│uguj╣cego trzy karty sieciowe: append = "ether=0,0,eth1
ether=0,0,eth2" zwiekszaj╣c liczbΩ parametr≤w ether mo┐na dodaµ wiΩksz╣ liczbΩ urz╣dze± sieciowych. Je┐eli sterowniki kart sieciowych mamy skompilowane jako modu│y wtedy edytujemy plik /etc/conf.modules odpowiednio go modyfikuj╣c np: alias eth0 ne lub gdy mamy karty takiego samego typu: alias eth0 ne Warto zaznaczyµ, ┐e adresy IP s╣ przydzielane dla urz╣dze± sieciowych, a nie dla host≤w, tzn. ┐e komputer z 3 kartami sieciowymi ma trzy adresy IP a jest jeden jako fizyczny host. Zar≤wno adresy sieci jak i adresy broadcast s╣ specjalnymi adresami, kt≤rych hosty nie mog╣ przyjmowaµ. Uruchamianie Bridge'aAby uruchomiµ bridge'a j╣dro systemu musimy skompilowaµ wraz z opcj╣ CONFIG_BRIDGE=y (jak na razie opcja ta jest w fazie eksperymentalnej) i oczywi£cie CONFIG_NET=y. Aby uruchomiµ bridge'a musimy zdobyµ jego konfigurator, kt≤ry mo┐na £ci╣gn╣µ z ftp://shadow.cabi.net/pub/Linux. Poniewa┐ mamy bridge'a na interfejsach musimy nas│uchiwaµ wszystkich pakiet≤w, tak┐e tych nie przeznaczonych dla danej karty, aby to zrobiµ prze│╣czmy interfejsy w tryb 'promisc': ifconfig promisc eth0 Bridge'a uruchamiamy poprzez jego konfigurator wpisuj╣c brcfg -enable Mo┐na tak┐e poeksperymentowaµ w│╣czaj╣c lub wy│╣czaj╣c porty: brcfg -port 0 -disable / -enable Samo polecenie brcfg pokazuje w danej chwili raport. Je┐eli wszystko jest OK to na ka┐dym z interfejs≤w powinien byµ inny ruch - sprawdzamy to poleceniem tcpdump -i eth0 Je┐eli chcemy zobaczyµ pakiety, kt≤re przesz│y przez bridge'a do drugiej karty z wewnΩtrznej sieci uruchamiamy: tcpdump -i eth1 -e host (adres IP hosta) Teraz je┐eli wy£lemy jakis pakiet do podanego hosta informacje o nim poda nam tcpdump. Polecenia inicjalizuj╣ce bridge'a i prze│╣czaj╣ce karty w odpowiedni tryb mo┐na dodaµ do rc.local aby uruchamia│y sie za ka┐dym razem po boocie. Je┐eli przy uruchamianiu brcfg zobaczymy komunikat Autorzy:
|
Wyślij E-mail MMalinow@bigfoot.com z pytaniami lub
komentarzem.
|