[Company Logo Image]  

Home ] Up ] News ] Szukaj ] Index ] NetMapa ] Ankieta ] Sprawy GroszNetu ] Forum ] FAQ ] Download ]

Laczenie 2 sieci?

 

 

Home
Up

Email

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.

Routing

 

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

  Segment pierwszy sieci Segment drugi sieci
Adresy IP X.X.X.1-126
(zalecane 1 - serwer)
X.X.X.129-254
(zalecane 129 - serwer)
Maska podsieci (netmask) 255.255.255.128 255.255.255.128
Broadcast X.X.X.127 X.X.X.255
Sieµ (network) X.X.X.0 X.X.X.128

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"
IPADDR="192.168.0.1" ; adres IP serwera
NETWORK="192.168.0.0" ; sieµ [0-127]
NETMASK="255.255.255.128" ; mamy tylko po│owΩ sieci wiΩc 128 zamiast 0
BROADCAST="192.168.0.127" ; w po│owicznej sieci broadcast ma siΩ tak
ONBOOT="yes"
BOOTPROTO="none"

I analogiczny plik dla eth1:

DEVICE="eth1"
IPADDR="192.168.0.129" ; adres IP serwera (pierwszy dostΩpny w sieci 128)
NETWORK="192.168.0.128" ; sieµ [128-255]
NETMASK="255.255.255.128"
BROADCAST="192.168.0.255" ; w tej po│owicznej sieci broadcast ma siΩ inaczej
ONBOOT="yes"
BOOTPROTO="none"

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≤w

Aby 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
alias eth1 3c509
options ne irq=5 io=0x300
options ne irq=10 io=0x220

lub gdy mamy karty takiego samego typu:

alias eth0 ne
alias eth1 ne
options ne io=0x300,200

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'a

Aby 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
ifconfig promisc eth1
itd

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
brcfg -port 1 -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
tcpdump -i eth1

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
"ioctl(SIOCGIFBR) failed: Package not found"
to znaczy, ┐e zapomnieli£my wkompilowaµ w j╣dro opcji bridge.

Autorzy:
GORO goro@vc.pl
Melun melun@friko2.onet.pl




 

 

Wyślij E-mail MMalinow@bigfoot.com z pytaniami lub komentarzem.
Copyright ⌐ 2000 GroszNet Osiedlowa Sieµ Komputerowa
Ostatnia modyfikacja: March 01, 2000