Poprzednia NastΩpna Spis Tre╢ci

2. Bridge.

2.1 Oprogramowanie.

Zdob▒d╝ konfigurator do bridge'a BRCFG.tgz.

2.2 Najpierw poczytaj.

Przeczytaj Multiple-Ethernet, ┐eby siΩ dowiedzieµ jak rozpoznaµ i skonfigurowaµ wiΩcej kart sieciowych.

WiΩcej szczeg≤│≤w na temat magii startowania, kt≤re mo┐esz potrzebowaµ jest w BootPrompt-HOWTO.

Mo┐e obΩdzie siΩ bez NET-3-HOWTO. Jest to dobry i d│ugi dokument i bΩdziesz musia│ wybraµ sobie to czego potrzebujesz.

2.3 Konfiguracja startu systemu.

Po przeczytaniu powy┐szego dowiesz siΩ, ┐e musisz skompilowaµ j▒dro, ┐eby rozpozna│o drugie urz▒dzenie ethernet-owe podczas startu oraz, ┐e musisz dodaµ liniΩ do pliku /etc/lilo.conf i uruchomiµ lilo:

	append = "ether=0,0,eth1"

Zauwa┐, ┐e jest tu eth1. eth0 jest pierwsz▒ kart▒ a eth1 jest drug▒ kart▒. Zawsze mo┐esz podaµ parametry podczas startu kiedy lilo ich oczekuje. Oto przyk│ad dla trzech kart:

	linux ether=0,0,eth1 ether=0,0,eth2

Ja u┐ywam loadlin.exe, aby uruchomiµ Linux-a:

	loadlin.exe c:\vmlinuz root=/dev/hda3 ro ether=0,0,eth1 ether=0,0,eth2

Zauwa┐, ┐e to zmusza j▒dro do szukania podczas startu. Nie bΩdzie to mia│o miejsca je╢li za│adujesz sterowniki ethernet-owe jako modu│y (ze wzglΩd≤w bezpiecze±stwa poniewa┐ kolejno╢µ szukania nie mo┐e byµ okre╢lona). WiΩc je╢li u┐ywasz modu│≤w, to bΩdziesz musia│ dodaµ parametry okre╢laj▒ce IRQ i port w pliku /etc/conf.modules - to jest m≤j przyk│ad:

	     alias eth0 3c509
	     alias eth1 de620
	     options 3c509 irq=5 io=0x210
	     options de620 irq=7 bnc=1

Mo┐esz sprawdziµ czy u┐ywasz modu│≤w przez ps -aux i zobaczenie czy jest proces kerneld i czy w katalogu /lib/modules/`uname -r` s▒ pliki *.o. (w miejsce uname -r wstaw wynik tego polecenia). Je╢li masz proces kerneld albo w podanym katalogu s▒ pliki *.o, to wyedytuj plik /etc/conf.modules i przeczytaj uwa┐nie stronΩ podrΩcznika systemowego na temat depmod.

Zauwa┐ te┐, ┐e do niedawna (2.0.25) sterownik 3c509 nie m≤g│ byµ u┐yty jako modu│ dla wiΩcej ni┐ jednej karty. Widzia│em gdzie╢ │atΩ, kt≤ra naprawia tΩ niedogodno╢µ. Mo┐e on byµ w j▒drze kiedy to czytasz.

2.4 Konfiguracja j▒dra.

Skompiluj j▒dro z w│▒czon▒ opcj▒ bridge.

 CONFIG_BRIDGE=y

Ja skompilowa│em tak┐e z w│▒czonymi opcjami firewalling, IP-forwarding, IP-masquerading i reszt▒. Ale tylko je╢li chcesz mieµ tak┐e firewall.

CONFIG_FIREWALL=y
CONFIG_NET_ALIAS=y
CONFIG_INET=y
CONFIG_IP_FORWARD=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_FIREWALL=y
CONFIG_IP_FIREWALL_VERBOSE=y
CONFIG_IP_MASQUERADE=y

Nie potrzebujesz tego wszystkiego. To czego potrzebujesz, to standardowa konfiguracja sieci:

CONFIG_NET=y

i nie s▒dzΩ, ┐eby╢ siΩ musia│ przejmowaµ innymi opcjami zwi▒znymi z sieci▒. Wszystkie opcje, kt≤rych w│a╢ciwie nie wkompilowa│em w j▒dro mam dostΩpne jako modu│y i mogΩ je dodaµ p≤╝niej.

Zainstaluj nowe j▒dro, uruchom lilo i zresetuj z nowym j▒drem. W tym momencie nic siΩ nie powinno zmieniµ.

2.5 Adresy sieciowe.

Chris twierdzi, ┐e bridge nie powinien mieµ adresu IP, ale to nie jest to ustawienie opisane tutaj.

BΩdziesz chcia│ u┐ywaµ tej maszyny do │▒czenia siΩ z sieci▒ wiΩc potrzebujesz adresu i musisz siΩ upewniµ, ┐e masz skonfigurowane poprawnie urz▒dzenie "loopback", tak ┐eby twoje oprogramowanie mog│o komunikowaµ siΩ z miejscamu, z kt≤rymi spodziewa siΩ, ┐e bΩdzie siΩ mog│o porozumieµ. Je╢li nie bΩdzie tego urz▒dzenia, to serwis nazw albo inny serwis sieciowy mo┐e nie dzia│aµ. Przeczytaj NET-3-HOWTO, ale twoja standardowa konfiguracja powinna ju┐ to za ciebie zrobiµ:

   ifconfig lo 127.0.0.1
   route add -net 127.0.0.0

BΩdziesz musia│ nadaµ adres obojgu kartom. Ja dopasowa│em sw≤j /etc/rc.d/rc.inet1 w Slackware 3.x, aby ustawiµ moje dwie karty. A ty powiniene╢ tak┐e poszukaµ gdzie jest konfiguracja sieci u ciebie i podwoiµ instrukcje. Za│≤┐my, ┐e masz ju┐ adres: 192.168.2.100 (jest to prywatny zarezerwowany adres sieciowy, ale niewa┐ne - nikomu nie zaszkodzi je╢li uzyjesz tego adresu przez pomy│kΩ) wtedy masz ju┐ pewnie liniΩ:

  ifconfig eth0 192.168.2.100 netmask 255.255.255.0 metric 1

w swojej konfiguracji. Pierwsze co pewnie bΩdziesz chcia│ zrobiµ to podzieliµ przestrze± adresow▒ na p≤│, tak ┐e mo┐esz potem te dwie po│owy bridge'owaµ. WiΩc dodaj liniΩ. kt≤ra zredukuje maskΩ tak, ┐e bΩdzie ona adresowaµ mniejsz▒ ilo╢µ maszyn:

  ifconfig eth0 netmask 255.255.255.128

Spr≤buj tego te┐. Powoduje to obciΩcie przestrzeni adresowej do zakresu od .0 do .127.

Teraz mo┐esz ustawiµ swoj▒ drug▒ kartΩ w drugiej po│owie adres≤w. Upewnij siΩ, ┐e nikt jeszcze takiego adresu nie ma. Dla symetrii ja ustawi│em j▒ na 228 (128+100=228). Ka┐dy adres bΩdzie siΩ tak zachowywa│ dop≤ki nie znajdzie siΩ w masce tej pierwszej karty - a nawet wtedy, no mo┐e. Unikaj adres≤w specjalnych takich jak .0, .1, .128 o ile naprawdΩ wiesz co robisz.

  ifconfig eth1 192.168.2.228 netmask 255.255.255.128 metric 1

To powoduje zmniejszenie zakresu adres≤w drugiej karty do .128 do .255.

2.6 Ruting sieci.

Powy┐sze mo┐e byµ wystarczaj▒c▒ konfiguracj▒ dla dzia│aj▒cego bridge'a, ale ja bΩdΩ mia│ tak┐e firewall i chcΩ kontrolowaµ fizyczne przeznaczenie niekt≤rych pakiet≤w. Nawet wtedy trzeba siΩ pilnowaµ przed spoofingiem.

Mam ma│▒ sieµ maszyn do│▒czonych do hub-a na eth0, wiΩc konfigurujΩ tam sieµ:

  route add -net 192.168.2.128 netmask 255.255.255.128 dev eth0

128 by│oby 0 gdybym mia│ pe│n▒ klasΩ C. "dev eth0" nie jest tu potrzebne poniewa┐ adres karty zalicza siΩ do tej sieci, ale mo┐e byµ potrzebne dla ciebie.

Na drugiej karcie mam liniΩ id▒c▒ prosto do du┐ego rutera, kt≤remu ufam.

					    client 129
	 __					   |	 __
client 1   \	.0		      .128	   |   /   net 1
client 2 --- Hub - eth0 - Kernel - eth1 - Hub - Router --- net 2
client 3 __/	   .100 	   .228 	.2 |   \__ net 3
						   |
					    client 254

Do│▒czam adres tego rutera do tej karty jako statyczny poniewa┐ inaczej zalicza│by siΩ on do maski tej pierwszej karty i j▒dro ╝le kierowa│oby pakiety do tego du┐ego rutera.

  route add 192.168.2.2 dev eth1

Ja go nie potrzebujΩ poniewa┐ nie mam wiΩcej maszyn w tej po│≤wce przestrzeni adresowej, ale deklarujΩ sieµ tak┐e na tej drugiej karcie

  route add -net 192.168.2.128 netmask 255.255.255.128 dev eth1

MuszΩ tak┐e wys│aµ wszystkie nie lokalne pakiety w ╢wiat, wiΩc informujΩ j▒dro, ┐eby wysy│a│o je do du┐ego rutera:

  route add default gw 192.168.2.2

2.7 Konfiguracja karty.

To tyle odno╢nie standardowego ustawiania sieci, ale my mamy bridge wiΩc musimy na obydwu (?) kartach s│uchaµ pakiet≤w, kt≤re nie s▒ przeznaczone dla nas. NastΩpuj▒ce dwie linie powinny siΩ znale╝µ w pliku konfiguruj▒cym sieµ:

  ifconfig promisc eth0
  ifconfig promisc eth1

Na stronie podrΩcznika systemowego napisane jest, ┐e allmulti=promisc, ale u mnie to nie dzia│a│o.

2.8 Dodatkowy ruting.

Jedno co zauwa┐y│em, to to, ┐e musia│em przynajmniej drug▒ kartΩ ustawiµ w tryb, w kt≤rym odpowiada│aby ona du┐emu ruterowi jakie maszyny chowam w swojej sieci.

  ifconfig arp eth1

Na wszelki wypadek zrobi│em to samo dla pierwszej karty.

  ifconfig arp eth0.

2.9 Konfiguracja Bridge'a.

Umie╢µ w│▒czanie bridge'owania w swoim pliku konfiguracyjnym:

    brcfg -enable

Powieniene╢ to pr≤bowaµ w czasie rzeczywistym ca│y czas oczywi╢cie! Konfigurator bridge'a poda parΩ liczb. Mo┐esz poeksperymentowaµ w│▒czaj▒c i wy│▒czaj▒c porty - jeden za ka┐dym razem.

   brcfg -port 0 -disable/-enable
   brcfg -port 1 -disable/-enable

Polecenie brcfg poka┐e ci raport w ka┐dej chwili. Zobaczysz, ┐e bridge s│ucha, dowiaduje siΩ i potem przekazuje pakiety. (Nie rozumiem dlaczego kod powtarza te same adresy sprzΩtowe dla obu moich kart, ale niewa┐ne ... HOWTO Chrisa m≤wi, ┐e to dobrze)

2.10 Wypr≤buj.

Je╢li ca│y czas wszystko u ciebie dzia│a, to wypr≤buj swoj▒ konfiguracjΩ w rzeczywisto╢ci - wy│▒cz obie karty i uruchom sw≤j plik konfiguracyjny:

    ifconfig eth0 down
    ifconfig eth1 down
    /etc/rc.d/rc.inet1

Je╢li masz szczΩ╢cie, to r≤┐ne podsystemy (nfs, ypbind, itp) nie zauwa┐▒ tej zmiany. Nie pr≤buj tego o ile nie siedzisz przy klawiaturze.

Je╢li chcesz byµ bardziej ostro┐ny ni┐ teraz, powiniene╢ wy│▒czyµ tyle demon≤w ile siΩ da i odmontowaµ katalogi nfs. Najgorszym co mo┐e siΩ staµ, to to, ┐e bΩdziesz musia│ zrestartowaµ komputer w trybie jednego u┐ytkownika (parametr "single" dla lilo lub loadlin) i zmieniµ wszystko na stan taki jaki by│ przed zmian▒ konfiguracji.

2.11 Sprawdzenia.

Sprawd╝ czy na ka┐dym interfejsie jest inny ruch:

	tcpdump -i eth0    (w jednym oknie)
	tcpdump -i eth1    (w drugim oknie)

Powieniene╢ siΩ przyzwyczaiµ do u┐ywania tcpdump do szukania przyczyn niekt≤rych zdarze±, kt≤re nie powinny mieµ miejsca a maj▒.

Na przyk│ad szukanie pakiet≤w, kt≤re przesz│y przez bridge do drugiej karty z wewnΩtrznej sieci. W tym przyk│adzie szukam pakiet≤w z maszyny o adresie .22:

       tcpdump -i eth1 -e host 192.168.2.22

Potem wy╢lij ping-a z maszyny .22 do rutera. Powiniene╢ zobaczyµ raport o tym pakiecie.

W tym momencie powiniene╢ mieµ w pe│ni dzia│aj▒cy bridge z dwoma adresami. Sprawd╝ czy mo┐esz je pingowaµ z zewn▒trz i z wewn▒trz sieci oraz, ┐e mo┐esz siΩ │▒czyµ z jednej sieci do drugiej i z zewn▒trz.


Poprzednia NastΩpna Spis Tre╢ci