Zdob▒d╝ konfigurator do bridge'a BRCFG.tgz.
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.
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.
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µ.
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.
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
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.
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.
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)
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.
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.