Zaawansowany Routing

download Zaawansowany Routing

of 162

Transcript of Zaawansowany Routing

Ksztatowanie Ruchu i Zaawansowany Routing HOWTO

Bert HubertNetherlabs BV bert.hubert%netherlabs.nl Thomas Graf (Autor sekcji) tgraf%suug.ch Gregory Maxwell (Autor sekcji) Remco van Mook (Autor sekcji) remco%virtu.nl Martijn van Oosterhout (Autor sekcji) kleptog%cupid.suninternet.com Paul B Schroeder (Autor sekcji) paulsch%us.ibm.com Jasper Spaans (Autor sekcji) jasper%spaans.ds9a.nl Pedro Larroy (Autor sekcji)

piotr%omega.resa.es Polskie tumaczenie: ukasz Bromirski lbromirski%mr0vka.eu.org

Ksztatowanie Ruchu i Zaawansowany Routing HOWTO Bert Hubert Thomas Graf (Autor sekcji) tgraf%suug.ch

Gregory Maxwell (Autor sekcji) Remco van Mook (Autor sekcji) remco%virtu.nl

Martijn van Oosterhout (Autor sekcji) kleptog%cupid.suninternet.com

Paul B Schroeder (Autor sekcji) paulsch%us.ibm.com

Jasper Spaans (Autor sekcji) jasper%spaans.ds9a.nl

Pedro Larroy (Autor sekcji) piotr%omega.resa.es

Polskie tumaczenie: ukasz Bromirski lbromirski%mr0vka.eu.org

Bardzo praktyczne podej cie do iproute2, kontroli ruchu oraz po cz sci do netlter. s e

Historia zmian Zmiana Oryginalna wersja: 1.35 Oryginalna data: 2003/07/26 19:57:49 Wydanie DocBook

Spis tre ci s1. Dedykacja....................................................................................................................................... 1 2. Wprowadzenie............................................................................................................................... 3 2.1. Disclaimer & Licencja ....................................................................................................... 3 2.2. Wymagana wiedza............................................................................................................ 3 2.3. Co Linux moze zrobi dla Ciebie .................................................................................... 4 c 2.4. Notatki gospodyni ............................................................................................................ 4 2.5. Dost p, CVS i wysyanie uaktualnien............................................................................ 5 e 2.6. Lista pocztowa ................................................................................................................... 5 2.7. Ukad tego dokumentu .................................................................................................... 5 3. Wprowadzenie do iproute2......................................................................................................... 7 3.1. Dlaczego iproute2?............................................................................................................ 7 3.2. Przewodnik po iproute2................................................................................................... 7 3.3. Wymagania wst pne......................................................................................................... 7 e 3.4. Badanie obecnej konguracji........................................................................................... 8 3.4.1. ip pokazuje nam poaczenia ............................................................................... 8 3.4.2. ip pokazuje nam nasze adresy IP....................................................................... 8 3.4.3. ip pokazuje nam trasy routingu ......................................................................... 9 3.5. ARP...................................................................................................................................... 9 4. Reguy - baza danych polityki routingu ................................................................................ 13 4.1. Prosty routing na podstawie zrda (ang. source routing) ....................................... 13 4.2. Routing dla wielu acz/do wielu dostawcw usug.................................................. 14 4.2.1. Dost p rozaczny (ang. split access)................................................................. 14 e 4.2.2. Rozkadanie obciazenia (ang. load balancing) ............................................... 16 5. Tunele - GRE i inne .................................................................................................................... 17 5.1. Par oglnych uwag o tunelach: ................................................................................... 17 e 5.2. Tunelowanie IP w IP ....................................................................................................... 17 5.3. Tunelowanie GRE............................................................................................................ 18 5.3.1. Tunelowanie IPv4 ............................................................................................... 18 5.3.2. Tunelowanie IPv6 ............................................................................................... 19 5.4. Tunele w przestrzeni uzytkownika .............................................................................. 20 6. Tunelowanie IPv6 z Cisco i/lub 6bone.................................................................................... 21 6.1. Tunelowanie IPv6............................................................................................................ 21 7. IPsec: bezpieczne IP przez Internet......................................................................................... 25 7.1. Wprowadzenie do R cznej Wymiany Kluczy............................................................. 25 e 7.2. Automatyczna wymiana kluczy ................................................................................... 28 7.2.1. Teoria .................................................................................................................... 29 7.2.2. Przykad ............................................................................................................... 29 7.2.2.1. Problemy i znane usterki ...................................................................... 32 7.2.3. Automatyczna wymiana kluczy przy uzyciu certykatw X.509 .............. 33 7.2.3.1. Tworzenie certykatu X.509 dla twojego hosta ................................. 33 7.2.3.2. Konguracja i uruchomienie................................................................ 34 7.2.3.3. Jak bezpiecznie budowa tunele.......................................................... 35 c 7.3. Tunele IPsec...................................................................................................................... 36 7.4. Inne oprogramowanie IPsec .......................................................................................... 37 7.5. Wsppraca IPsec z innymi systemami........................................................................ 37 7.5.1. Windows .............................................................................................................. 37

v

8. Routing multicastowy................................................................................................................ 39 9. Dyscypliny kolejkowania dla Zarzadzania Pasmem........................................................... 41 9.1. Kolejki i Dyscypliny Kolejkowania wyja nione ......................................................... 41 s 9.2. Proste, bezklasowe Dyscypliny Kolejkowania ........................................................... 41 9.2.1. pfo_fast .............................................................................................................. 42 9.2.1.1. Parametry i ich uzycie ........................................................................... 42 9.2.2. Token Bucket Filter ............................................................................................. 44 9.2.2.1. Parametry i ich uzycie ........................................................................... 45 9.2.2.2. Przykadowa konguracja.................................................................... 46 9.2.3. Sprawiedliwe Kolejkowanie Stochastyczne (ang. Stochastic Fairness Queueing)........................................................................................................... 46 9.2.3.1. Parametry i uzycie ................................................................................. 47 9.2.3.2. Przykadowa konguracja.................................................................... 47 9.3. Kiedy uzywa ktrej kolejki .......................................................................................... 48 c 9.4. Terminologia .................................................................................................................... 48 9.5. Dyscypliny kolejkowania z klasami ............................................................................. 51 9.5.1. Przepyw w qdisc z klasami.............................................................................. 51 9.5.2. Rodzina kolejek z klasami: korzenie, uchwyty, rodzenstwo i rodzice ....... 52 9.5.2.1. Jak ltry uzywane sa do klasykowania ruchu ................................ 52 9.5.2.2. Jak pakiety sa zdejmowane z kolejki przez sprz t............................ 53 e 9.5.3. qdisc PRIO ........................................................................................................... 53 9.5.3.1. Parametry PRIO i ich uzycie ................................................................ 53 9.5.3.2. Przykadowa konguracja.................................................................... 54 9.5.4. Sawna qdisc CBQ .............................................................................................. 55 9.5.4.1. Szczegy ksztatowania ruchu przez CBQ ....................................... 56 9.5.4.2. Zachowanie CBQ z klasami.................................................................. 57 9.5.4.3. Parametry CBQ okre lajace mozliwo ci pozyczania i s s wspdzielenia acza ................................................................................. 58 9.5.4.4. Przykadowa konguracja.................................................................... 59 9.5.4.5. Inne parametry CBQ: split & defmap ................................................. 60 9.5.5. Hierarchiczne Wiadro Zetonw (ang. Hierarchical Token Bucket)......... 62 9.5.5.1. Przykadowa konguracja.................................................................... 62 9.6. Klasykowanie pakietw ltrami ................................................................................ 63 9.6.1. Troch prostych przykadw ltrowania ........................................................ 64 e 9.6.2. Wszystkie komendy ltrujace, ktrych b dziesz normalnie potrzebowa 64 e 9.7. Po rednie urzadzenie kolejkujace (ang. The Intermediate queueing device, IMQ s 65 9.7.1. Przykadowa konguracja ................................................................................ 66 10. Rozkadanie obcia enia na wiele interfejsw .................................................................... 69 z 10.1. Problemy......................................................................................................................... 70 10.2. Inne mozliwo ci............................................................................................................. 70 s 11. Netlter & iproute - oznaczanie pakietw........................................................................... 71 12. Zaawansowane ltry i (re-)klasykowanie pakietw ....................................................... 73 12.1. Klasykator u32............................................................................................................. 74 12.1.1. Selektor U32....................................................................................................... 74 12.1.2. Selektory oglne ............................................................................................... 75 12.1.3. Selektory specyczne ....................................................................................... 76 12.2. Klasykator route ........................................................................................................ 77 12.3. Filtry okre lajace polityk ............................................................................................ 78 s e 12.3.1. Sposoby na okre lenie polityki ....................................................................... 78 s

vi

12.3.1.1. Sposb z estymatorem kernela .......................................................... 78 12.3.1.2. Sposb z Token Bucket Filter.............................................................. 78 12.3.2. Akcje do podj cia przy przekroczeniu pasma ............................................. 79 e 12.3.3. Przykady........................................................................................................... 79 12.4. Filtry mieszajace i bardzo duzo szybkiego ltrowania ........................................... 79 12.5. Filtrowanie ruchu IPv6 ................................................................................................. 81 12.5.1. Dlaczego ltry tc dla IPv6 nie dziaaja? ........................................................ 81 12.5.2. Oznaczanie pakietw IPv6 przez ip6tables .................................................. 81 12.5.3. Zastosowanie selektora u32 do testu pakietu IPv6...................................... 82 13. Parametry sieciowe kernela .................................................................................................... 85 13.1. Filtrowanie trasy powrotnej......................................................................................... 85 13.2. Mao znane ustawienia................................................................................................. 86 13.2.1. Podstawowe IPv4 ............................................................................................. 86 13.2.2. Ustawienia dotyczace urzadzen..................................................................... 91 13.2.3. Polityka dotyczaca sasiadw .......................................................................... 92 13.2.4. Ustawienia dla routingu .................................................................................. 93 14. Zaawansowane i mniej znane kolejki z dyscyplinami ..................................................... 97 14.1. bfifo/pfifo .................................................................................................................. 97 14.1.1. Parametry i uzycie............................................................................................ 97 14.2. Algorytm Clarka-Shenkera-Zhanga (CSZ)................................................................ 97 14.3. DSMARK ........................................................................................................................ 97 14.3.1. Wprowadzenie.................................................................................................. 98 14.3.2. Z czym jest zwiazany Dsmark? ...................................................................... 98 14.3.3. Wskazwki dotyczace Usug Zrznicowanych ........................................... 98 14.3.4. Praca z Dsmark ................................................................................................. 99 14.3.5. Jak dziaa SCH_DSMARK............................................................................... 99 14.3.6. Filtr TC_INDEX .............................................................................................. 100 14.4. Przychodzace qdisc..................................................................................................... 102 14.4.1. Parametry i uzycie.......................................................................................... 103 14.5. Losowe Wczesne Wykrywanie (ang. Random Early Detection, RED)............ 103 14.6. Oglne Losowe Wczesne Wykrywanie (ang. Generic Random Early Detection, GRED)........................................................................................................................... 104 14.7. Emulacja VC/ATM ..................................................................................................... 104 14.8. Wazony Round Robin (ang. Weighted Round Robin, WRR)............................ 104 15. Ksia ka kucharska.................................................................................................................. 107 z 15.1. Praca z wieloma lokalizacjami z rznymi SLA....................................................... 107 15.2. Ochrona komputera przed powodziami SYN ........................................................ 108 15.3. Ograniczenie cz stotliwo ci ICMP by zapobiec atakom DDoS ........................... 109 e s 15.4. Priorytetyzacja ruchu interaktywnego..................................................................... 110 15.5. Przezroczyste cache przy uzyciu netlter, iproute2, ipchains i squida .............. 111 15.5.1. Diagram przepywu ruchu po implementacji............................................ 114 15.6. Unikanie problemw z rozpoznaniem przez MTU trasy a ustawienia MTU dla tras................................................................................................................................. 114 15.6.1. Rozwiazanie .................................................................................................... 115 15.7. Unikanie problemw z rozpoznaniem przez MTU trasy a Zmniejszanie MSS (dla uzytkownikw kablowych ADSL, PPPoE i PPPtP)............................................... 116 15.8. Najlepszy udrazniacz dla ruchu sieciowego: mae op nienia, szybkie z wrzucanie i sciaganie ................................................................................................. 116 15.8.1. Dlaczego nie dziaa to najlepiej w domy lnej konguracji ...................... 117 s 15.8.2. Skrypt (CBQ) ................................................................................................... 119

vii

15.8.3. Skrypt (HTB) ................................................................................................... 120 15.9. Ograniczanie ruchu dla pojedynczego hosta lub podsieci ................................... 122 15.10. Przykad rozwiazania z QoS i NATem................................................................... 123 15.10.1. Zoptymalizujmy cenne pasmo ................................................................... 123 15.10.2. Klasykacja pakietw .................................................................................. 125 15.10.3. Ulepszanie naszej konguracji ................................................................... 127 15.10.4. Niech to wszystko dzieje si samo przy starcie ....................................... 127 e 16. Budowanie mostw i pseudo-mostw z Proxy ARP........................................................ 129 16.1. Stan mostkowania i iptables ...................................................................................... 129 16.2. Mostkowanie i ksztatowanie ruchu ........................................................................ 129 16.3. Pseudo-mosty i Proxy-ARP ....................................................................................... 129 16.3.1. ARP & Proxy-ARP.......................................................................................... 130 16.3.2. Skongurujmy to! ........................................................................................... 130 17. Routing dynamiczny - OSPF i BGP .................................................................................... 133 17.1. Setting up OSPF with Zebra ...................................................................................... 133 17.1.1. Zaozenia.......................................................................................................... 134 17.1.2. Konguracja Zebry......................................................................................... 134 17.1.3. Uruchomienie Zebry ...................................................................................... 136 17.2. Konguracja BGPv4 w Zebrze .................................................................................. 137 17.2.1. Topologia przykadowej sieci ....................................................................... 137 17.2.2. Przykadowa konguracja ............................................................................ 138 17.2.3. Sprawdzanie konguracji.............................................................................. 139 18. Inne mo liwo ci ...................................................................................................................... 141 z s 19. Dalsza lektura.......................................................................................................................... 145 20. Podzi kowania ........................................................................................................................ 147 e 21. Podzi kowania dla polskiego tumaczenia ....................................................................... 153 e

viii

Rozdzia 1. DedykacjaDokument ten dedykowany jest caemu mnstwu ludzi i jest moja prba dania czego w s zamian. By wymieni zaledwie par osb: c e

Rusty Russell Aleksiej N. Kuzniecow dobrzy ludzie z Google Zaoga Casema Internet

1

Rozdzia 1. Dedykacja

2

Rozdzia 2. WprowadzenieWitam, Szanowny Czytelniku. Ten dokument ma nadziej rozja ni troch zagadnienia routingu w Linuksie 2.2/2.4. Wi ke s c e e szo c uzytkownikw nie zdaje sobie nawet sprawy, ze posuguje si narz dziami, ktre pos e e traa naprawd spektakularne rzeczy. Komendy takie jak route czy ifcong sa zaledwie e namiastkami rozbudowanej i pot znej infrastruktur iproute2. e e Mam nadziej , ze to HOWTO b dzie tak czytelne jak te napisane przez Rusty Russella z e e zespou netlter. Mozesz zawsze skontaktowa si z nami, piszac na adres zespou HOWTO. Prosimy jednak c e by rozwazy wysanie postu na list pocztowa (zajrzyj do odpowiedniej sekcji) je li masz s e s pytania nie dotyczace bezpo rednio tego HOWTO. Nie stanowimy darmowego helpdesku, s ale zwykle odpowiadamy na pytania zadawane na li cie. s Zanim zgubisz si czytajac ten dokument, a wszystko co chcesz robi to ksztatowanie e c ruchu, pomin wszystko i przejd bezpo rednio do rozdziau Other possibilities by zapozna z s c si z CBQ.init. e

2.1. Disclaimer & Licencja Dokument ten rozpowszechniany jest w nadziei, ze b dzie uzyteczny, ale BEZ ZADNEJ e GWARANCJI; nawet bez implikowanej gwarancji REKOJMI lub PRZYDATNOSCI DO KONKRETNEGO ZASTOSOWANIA. Krtko mwiac, je li twoja sie STM-64 padnie albo posuzy do rozesania pornograi do s c najbardziej cenionych klientw - to nie bya nasza wina. Przykro nam. Wszystkie prawa zastrzezone (c) 2001 przez bert hubert, Gregory Maxwell, Martijn van Oosterhout, Remco can Mook, Paul B. Schroeder i inni. Materia ten moze by dystrybuowany tylko na zasadach okre lonych w Open Publication c s License, v1.0 lub p niejszej (ostatnia wersja jest obecnie dost pna pod adresem z e http://www.opencontent.org/openpub/). Namawiamy do darmowego kopiowania i dystrybuowania (sprzedawania lub rozdawania) tego dokumentu w dowolnym formacie. Wymagamy jednak by poprawki i/lub komentarze przekazywa do koordynatora dokumentu. c Wymagamy rwniez, zeby w przypadku publikacji tego HOWTO w wersji drukowanej, autorzy otrzymali prbki na potrzeby recenzji :-).

2.2. Wymagana wiedzaTak jak wskazuje tytu, to Zaawansowane HOWTO. O ile nie oznacza to w zadnym przypadku wiedzy z dziedziny technologii rakietowych, zakadamy ze posiadasz pewna wiedz . e Ponizej troch odwoan, ktre moga pomc w nauczeniu si czego : e e s Zagadnienia sieciowe HOWTO, Rusty Russella Bardzo adne wprowadzenie, wyja niajace co to jest sie i jak aczy si z innymi sieciami. s c e

3

Rozdzia 2. Wprowadzenie Sie Linuksa (poprzednio Net-3 HOWTO) c Doskonaa rzecz, cho bardzo szczegowa. Uczy wielu rzeczy, ktre sa juz skonc gurowane je li mozesz poaczy si z Internetem. Powininno znajdowa si w s c e c e /usr/doc/HOWTO/NET3-4-HOWTO.txt, ale mozna je rwniez znale c pod adresem on z line.

2.3. Co Linux mo e zrobi dla Ciebie z cKrtka lista rzeczy, ktre mozna uzyska : c

ksztatowa pasmo sieciowe (ang. bandwidth) dla okre lonych komputerw c s ksztatowa pasmo sieciowe do okre lonych komputerw c s pomc ci sprawiedliwie dzieli twoje pasmo sieciowe c broni sie przed atakami typu DoS c c broni Internet przed twoimi klientami c wykorzystywa wiele serwerw jak jeden, by uzyska rwnowazenie obciazenia i zwi kc c e szona dost pno c e s ograniczy dost p do twoich komputerw c e ograniczy dost p twoich uzytkownikw do innych komputerw c e prowadzi routing w oparciu o identykator uzytkownika (tak!), adres MAC, zrdowy c adres IP, port, typ usugi, czas dnia i zawarto c s

Obecnie niewiele osb uzywa tych zaawansowanych mozliwo ci. Dzieje si tak z wielu s e powodw. O ile dokumentacja jest bardzo szczegowa, nie jest zbyt przyjazna czy zrozumiaa. A ksztatowanie ruchu jest prawie w ogle nieudokumentowane.

2.4. Notatki gospodyniWarto zaznaczy par rzeczy dotyczacych tego dokumentu. Mimo, ze jestem autorem wi kc e e szo ci teksu, nie chc by tak zostao. Jestem wielkim zwolennikiem ruchu Open Source, s e wi c zach cam do nadsyania przemy len, uaktualnien, poprawek i tak dalej. Nie zwlekae e s jcie z informowaniem mnie o literwkach lub po prostu b dach. Je li mj Angielski jest e s troch drewniany, prosz zwrci uwag , ze nie jest to mj j zyk ojczysty. Zapraszam do e e c e e nadsyania sugestii. Je li uwazasz, ze masz lepsze kwalikacje by zajmowa si ktra sekcja, lub my lisz s c e s s ze mgby napisa a potem zajmowa si nowymi sekcjami, zapraszam do zrobienia s c c e tego. Zrdo tego dokumentu dost pne jest przez CVS w formacie SGML. Namawiam do e doaczenia si do projektu. e By wam pomc, znajdziecie tu wiele uwag FIXME. Poprawki sa zawsze mile widziane! Za kazdym razem gdy znajdziesz notatk FIXME, powiniene wiedzie , ze wchodzisz na e s c nieznane terytorium. Nie chodzi o to, ze wsz dzie b da b dy, ale nalezy by uwaznym. e e e c Je li udao Ci si co potwierdzi lub wr cz przeciwnie - wskaza bad, prosz , daj nam s e s c e c e zna by my mogli popracowa nad fragmentem zawierajacym notk FIXME. c s c e

4

Rozdzia 2. Wprowadzenie W tym HOWTO pozwol sobi na pewna swobod . Na przykad, zakadam ze posiadasz e e e 10Mbit-owe poaczenie z Internetem, mimo ze nie jest to zbyt popularna konguracja.

2.5. Dost p, CVS i wysyanie uaktualnien e To HOWTO znajduje si pod tym adresem. e Na potrzeby projektu utrzymujemy serwer CVS z anonimowym dost pem z caego swiata. e Jest to przydatne z wielu powodw. Uaktalnienie twojej kopii do najnowszej wersji czy tez wysanie nam poprawek nie stanowi dzi ki takiemu rozwiazaniu zadnego problemu. e Co wi cej, system ten umozliwia wielu autorom na prac nad tekstem zrdowym niezae e leznie. $ export CVSROOT=:pserver:[email protected]:/var/cvsroot $ cvs login CVS password: [wprowad cvs (bez apostrofw)] z $ cvs co 2.4routing cvs server: Updating 2.4routing U 2.4routing/lartc.db

Je li zauwazysz bad, lub chciaby co doda , popraw to na swojej lokalnej kopii, nast ps s s c e nie uruchom cvs -z3 diff -uBb i wy lij rezultat pod adres - atwiej s b dzie nam si nim zaja . Dzi kujemy! Przy okazji, upewnij si ze edytowae plik .db e e c e e s pozostae sa z niego generowane. Razem z dokumentem zrdowym dost pny jest rwniez plik Makele, ktry powinien e pomc Ci wygenerowa dokumenty w formacie postscript, dvi, pdf, html i czystym tek c s cie. By moze b dziesz musia zainstalowa docbook, docbook-utils, ghostscript oraz tetex c e c by otrzyma wszystkie formaty. c Nie edytuj pliku 2.4routing.sgml! Zawiera starsza wersj tego HOWTO. Obecny plik zaw e ierajacy HOWTO to lartc.db.

2.6. Lista pocztowaAutorzy otrzymuja rosnaca liczb poczty dotyczacej tego HOWTO. Z uwagi na interes e ogu, zdecydowali my o stworzeniu listy pocztowej, na ktrej ludzie moga dyskutowa s c mi dzy soba o zagadnieniach zaawansowanego routingu i ksztatowania pasma. Mozesz e zapisa si na ta list pod tym adresem. c e e Nalezy zwrci uwag , ze autorzy sa bardzo pow ciagliwi je li chodzi o odpowiadanie na c e s s pytania nie zadane na li cie. Chcieliby my ja archiwizowa i utrzymywa jako swego rodzas s c c ju baz wiedzy. Je li masz pytanie, prosz przeszukaj archiwum, a nast pnie wy lij post na e s e e s list . e

2.7. Ukad tego dokumentuZaczniemy robi interesujace rzeczy praktycznie zaraz, co oznacza, ze na poczatku wiele c rzeczy mozesz uzna za sabo lub wcale nie wytumaczone. Przeczytaj je zakadajac, ze c wszystko stanie si jasne potem. e

5

Rozdzia 2. Wprowadzenie Routing i ltrowanie to dwie rzne rzeczy. Filtrowanie zostao bardzo dobrze udokumen towane w HOWTO Rustyego, ktre dost pne sa pod adresem: e

Rustys Remarkably Unreliable Guides

My skupimy si gwnie na pokazaniu co mozliwe jest przy poaczeniu infrastruktury nete lter i iproute2.

6

Rozdzia 3. Wprowadzenie do iproute23.1. Dlaczego iproute2?Wi kszo c dystrybucji Linuksa, i wi kszo c UNIXw, uzywa szacownych komend arp, ife s e s cong i route. O ile narz dzia te dziaaja, powoduja troch nieoczekiwanych rezultatw od e e wersji Linuksa 2.2 w gr . Na przykad, tunele GRE sa integralna cz scia routingu a wymae e gaja oddzielnych narz dzi. e Je li chodzi o iproute2, tunele sa integralna cz scia zestawu. s e Kernele Linuksa od wersji 2.2 zawieraja kompletnie przeprojektowany podsystem sieciowy. Wydajno c nowego kodu i zestaw jego mozliwo ci powoduje, ze Linuks nie ma zbyt wielu s s konkurentw na arenie systemw operacyjnych. Tak naprawd , nowy kod routujacy, le trujacy i klasykujacy jest pot zniejszy niz ten dostarczany w wi kszo ci dedykowanych e e s routerw, scian ogniowych i produktw zajmujacych si ksztatowaniem pasma. e W trakcie rozwijania nowych koncepcji sieciowych, ludzie znajdowali zawsze sposoby by doozy je do istniejacych szkieletw juz stworzonych systemw operacyjnych. To ciage do c dawanie kolejnych warstw doprowadzio do tego, ze kod sieciowy moze czasami ciekaw ie si zachowywa lub wyglada , tak jak to ma miejsce w przypadku wi kszo ci ludze c c e s kich j zykw. W przeszo ci, Linux emulowa obsug wi kszo ci zagadnien sieciowych w e s e e s sposb zgody z SunOS, ktry sam nie jest zbyt idealny. Nowy szkielet umozliwia jasne wyrazanie potrzeb i pragnien niedost pnych wcze niej w e s Linuksie.

3.2. Przewodnik po iproute2Linuks posiada bardzo wyranowany system ksztatowania pasma, nazywany Trafc Control. System ten udost pnia wiele metod klasykowania, priorytetowania, wspdzielenia i e ograniczania zarwno ruchu wychodzacego jak i przychodzacego. Zaczniemy od krtkiej wycieczki po mozliwo ciach iproute2. s

3.3. Wymagania wst pne ePowiniene s upewni c si , e ze wszystkie narz dzia e z przestrzeni uzytkownika sa zainstalowane. Paczka nazywa si e iproute zarwno w przypadku RedHata jak i Debiana, mozna ja znale c pod adresem z ftp://ftp.inr.ac.ru/ip-routing/iproute2-2.2.4-now-ss??????.tar.gz". Mozesz rwniez sprbowa pobra i uzy najnowsza wersj , znajdujaca si pod tym c c c e e adresem Niektre cz sci iproute wymagaja by waczy pewne opcje w kernelu. Warto rwniez zae s uwazy , ze wszystkie wydania RedHata do i acznie z wersja 6.2 dostarczane sa bez wi k c e szo cia opcji odpowiedzialnych za kontrol ruchu. s e RedHat 7.2 ma domy lnie waczone wszystko. s

7

Rozdzia 3. Wprowadzenie do iproute2 Upewnij si rwniez, ze w konguracji jadra zaznaczye obsug netlink, je li b dziesz mue s e s e sia przekompilowa swj kernel. Jest on wymagany przez iproute2. c

3.4. Badanie obecnej konguracjiMoze to by pewnym zaskoczeniem, ale iproute2 jest juz skongurowane! Obecne komendy c ifcong i route uzywaja zaawansowanych wywoan systemowych, ale w wi kszo ci z e s domy lnymi i bardzo bezpiecznymi (tzn. nudnymi) ustawieniami. s Gwnym narz dziem jest program ip, poprosimy go o wy wietlenie interfejsw. e s

3.4.1. ip pokazuje nam poaczenia [ahu@home ahu]$ ip link list 1: lo: mtu 3924 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: dummy: mtu 1500 qdisc noop link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff 3: eth0: mtu 1400 qdisc pfifo_fast qlen 100 link/ether 48:54:e8:2a:47:16 brd ff:ff:ff:ff:ff:ff 4: eth1: mtu 1500 qdisc pfifo_fast qlen 100 link/ether 00:e0:4c:39:24:78 brd ff:ff:ff:ff:ff:ff 3764: ppp0: mtu 1492 qdisc pfifo_fast qlen 10 link/ppp

Twj ekran wynikowy moze si troch rzni , ale powyzszy wydruk pochodzi z mojego e e c domowego routera NAT. Wytumacz tylko cz sc, jako ze nie wszystko jest bezpo rednio e e s zwiazane. Na poczatek widzimy interfejs loopback. O ile twj komputer moze i powinien pracow a bez niego, radzibym tego nie prbowa . Rozmiar MTU (ang. Maximum Transfer Unit c c - Maksymalnej Jednostki Transmisji) wynosi 3924 oktety i nie spodziewamy si go kolee jkowa . Ma to sens, poniewaz interfejs ten jest tylko fantazja twojego kernela. c Pomin interfejs dummy, moze on nie by obecny na twoim komputerze. Nast pnie mamy e c e dwa zyczne interfejsy, jeden po stronie modemu kablowego i drugi podaczony do mojego domowego segmentu ethernetowego. Dalej widzimy interfejs ppp0. Zauwaz brak adresw IP. iproute nie uzywa koncepcji aczenia poaczen z adresami IP. Po wprowadzeniem aliasw IP, koncepcja tego konkretnego adresu IP staa si jakby mniej e wazna. Pokazano natomiast adresy MAC, identykatory sprz towe naszych interfejsw ethernee towych.

3.4.2. ip pokazuje nam nasze adresy IP[ahu@home ahu]$ ip address show 1: lo: mtu 3924 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 brd 127.255.255.255 scope host lo 2: dummy: mtu 1500 qdisc noop link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff 3: eth0: mtu 1400 qdisc pfifo_fast qlen 100 link/ether 48:54:e8:2a:47:16 brd ff:ff:ff:ff:ff:ff inet 10.0.0.1/8 brd 10.255.255.255 scope global eth0 4: eth1: mtu 1500 qdisc pfifo_fast qlen 100

8

Rozdzia 3. Wprowadzenie do iproute2link/ether 00:e0:4c:39:24:78 brd ff:ff:ff:ff:ff:ff 3764: ppp0: mtu 1492 qdisc pfifo_fast qlen 10 link/ppp inet 212.64.94.251 peer 212.64.94.1/32 scope global ppp0

Tutaj mamy wi cej informacji. Pokazano wszystkie nasze adresy, acznie ze wskazaniem e do ktrych interfejsw naleza. inet oznacza Internet (IPv4). Istnieje wiele innych rodzin adresw, ale w tym momencie zupenie nas nie obchodza. Przyjrzyjmy si blizej eth0. Twierdzi, ze zwiazany jest z internetowym adresem 10.0.0.1/8. e Co to oznacza? Czon /8 okre la ilo c bitw, ktre naleza do Adresu Sieci. Sa 32 bity, mamy s s wi c 24 bity na okre lenie cz sci swojej sieci. Pierwsze 8 bitw z 10.0.0.1 odpowiada 10.0.0.0, e s e naszemu Adresowi Sieciowemu, nasza maska jest wi c 255.0.0.0. e Pozostae bity naleza do przestrzeni adresowej tego interfejsu, wi c 10.250.3.13 jest e bezpo rednio osiagalny przez eth0, tak samo jak na przykad 10.0.0.1. s Z ppp0 jest dokadnie tak samo, mimo ze rznia si numerki. Jego adres to 212.64.94.251 bez e maski podsieci. Oznacza to, ze jest to poaczenie punkt-punkt i kazdy adres, z wyjatkiem 212.64.94.251 jest zdalny. Jest jednak troch wi cej informacji. Wiemy, ze po drugiej stronie e e poaczenia tez jest jeden adres - 212.64.94.1. Dodatek /32 oznacza po prostu, ze nie ma bitw sieci. Bardzo wazne zeby zrozumia opisywane wyzej zagadnienia. Zajrzyj do wspomnianej s wcze niej dokumentacji, je li masz problemy. s s Mozesz rwniez zauwazy qdisc, co oznacza Dyscyplin Kolejkowania (ang. Queueing c e Discipline). Znaczenie tej funkcji stanie si jasne p niej. e z

3.4.3. ip pokazuje nam trasy routinguCz, wiemy jak znale c adresy 10.x.y.z i jeste my w stanie dotrze do 212.64.94.1. To jed z s c nak nie wystarcza, musimy mie jeszcze instrukcje jak dotrze do pozostaej cz sci swiata. c c e Internet dost pny jest przez nasze poaczenie PPP i wyglada na to, ze to 212.64.94.1 b dzie e e rozsya nasze pakiety po swiecie, oraz zbiera i dostarcza odpowiedzi. [ahu@home ahu]$ ip route show 212.64.94.1 dev ppp0 proto kernel scope link src 212.64.94.251 10.0.0.0/8 dev eth0 proto kernel scope link src 10.0.0.1 127.0.0.0/8 dev lo scope link default via 212.64.94.1 dev ppp0

Wydruk jest samoopisujacy si . Pierwsze 4 linie wprost informuja o tym, co juz zostao e wydrukowane po uzyciu komendy ip address show, ostatnia linia okre la, ze reszta s adresw b dzie osiagalna przez adres 212.64.94.1 - domy lna bramk . Wiemy, ze to bramka e s e po sowie via, ktre oznacza, ze wysyamy pod ten adres pakiety a on bierze na siebie reszt . e Dla porwnania, ponizej wydruk ze standardowej komendy route: [ahu@home ahu]$ route -n Kernel IP routing table Destination Gateway Iface 212.64.94.1 0.0.0.0 10.0.0.0 0.0.0.0 127.0.0.0 0.0.0.0 0.0.0.0 212.64.94.1

Genmask 255.255.255.255 255.0.0.0 255.0.0.0 0.0.0.0

Flags Metric Ref UH U U UG 0 0 0 0 0 0 0 0

Use 0 0 0 0 ppp0 eth0 lo ppp0

9

Rozdzia 3. Wprowadzenie do iproute2

3.5. ARPARP, to Protok Rozwiazywania Adresw (ang. Address Resolution Protocol), opisany w RFC 826. ARP uzywany jest w komputerach podaczonych do sieci do rozwiazywa nia adresw sieciowych/lokalizacji innych komputerw rwniez podaczonych do tej sieci. Komputery w Internecie identykuje si generalnie po ich nazwach, ktre rozwiazywane sa e na adresy IP. W ten wa nie sposb komputer w sieci foo.com moze komunikowa si z inna s c e maszyna z sieci bar.net. Adresy IP nie mwia jednak nic o zycznej lokalizacji komputera. Wtedy wa nie pojawia si ARP. s e Spjrzmy na bardzo prosty przykad. Zazmy, ze mam sie zozona z kilku komputerw. c Dwa z komputerw w tej sieci, to foo z adresem 10.0.0.1 i bar> z adresem 10.0.0.2. foo chce wykona ping do bar, by sprawdzi czy bar pracuje, ale nie wie przeciez gdzie znajduje si c c e bar. Chcac wykona ping, musi zatem najpierw wysa zapytanie ARP. c c Zapytanie to podobne jest do wykrzyczenia bar (10.0.0.2)! Gdzie jeste ?. W rezultas cie wszystkie komputery w sieci usysza zapytanie, ale tylko bar (10.0.0.2) odpowie. Odpowied ARP zostanie skierowana bezpo rednio do foo i b dzie czym w rodzaju foo z s e s (10.0.0.1), jestem pod 00:60:94:E9:08:12. Po tej prostej wymianie, ktrej uzyto by znale c z koleg w sieci, foo b dzie w stanie komunikowa si z bar dopki zapomni (lub pami c e e c e e podr czna arp wyga nie) gdzie jest bar> (na maszynach Uniksowych standardowo po 15 e s minutach). A teraz spjrzmy jak to dziaa. Mozesz obejrze tabel sasiedztwa arp w ten sposb: c e [root@espa041 /home/src/iputils]# ip neigh show 9.3.76.42 dev eth0 lladdr 00:60:08:3f:e9:f9 nud reachable 9.3.76.1 dev eth0 lladdr 00:06:29:21:73:c8 nud reachable

Jak wida , mj komputer espa041 (9.3.76.41) wie gdzie znale c espa042 (9.3.76.42) i espagate c z (9.3.76.1). Sprbujmy teraz doda inny komputer do pami ci podr cznej arp. c e e[root@espa041 /home/paulsch/.gnome-desktop]# ping -c 1 espa043 PING espa043.austin.ibm.com (9.3.76.43) from 9.3.76.41 : 56(84) bytes of data. 64 bytes from 9.3.76.43: icmp_seq=0 ttl=255 time=0.9 ms --- espa043.austin.ibm.com ping statistics --1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 0.9/0.9/0.9 ms [root@espa041 /home/src/iputils]# ip neigh show 9.3.76.43 dev eth0 lladdr 00:06:29:21:80:20 nud reachable 9.3.76.42 dev eth0 lladdr 00:60:08:3f:e9:f9 nud reachable 9.3.76.1 dev eth0 lladdr 00:06:29:21:73:c8 nud reachable

W wyniku dziaan espa041, prbujacego znale c espa043, adres tego ostatniego zosta do z dany do pami ci podr cznej arp. Dopki ten wpis nie wyga nie (w rezultacie braku komue e s nikacji pomi dzy obydwoma komputerami), espa041 wie gdzie znale c espa043 i nie ma e z potrzeby rozsyania zapytan ARP. Teraz wykasujmy espa043 z pami ci podr cznej arp: e e[root@espa041 /home/src/iputils]# ip neigh delete 9.3.76.43 dev eth0 [root@espa041 /home/src/iputils]# ip neigh show 9.3.76.43 dev eth0 nud failed 9.3.76.42 dev eth0 lladdr 00:60:08:3f:e9:f9 nud reachable 9.3.76.1 dev eth0 lladdr 00:06:29:21:73:c8 nud stale

espa041 zapomnia gdzie znale c espa043 i b dzie musia wysa kolejne zapytanie ARP z e c je li b dzie potrzebowa skontaktowa si z espa043. Mozesz rwniez zauwazy , ze stan s e c e c wpisu przy espagate (9.3.76.1) zosta zmieniony na stale (niepewny, stary). Oznacza to

10

Rozdzia 3. Wprowadzenie do iproute2 tylko tyle, ze pokazywana lokalizacja jest prawdziwa, ale b dzie musiaa by potwierdzona e c przed nawiazaniem jakiegokolwiek poaczenia do tego komputera.

11

Rozdzia 3. Wprowadzenie do iproute2

12

Rozdzia 4. Reguy - baza danych polityki routinguJe li posiadasz duzy ruter, mozesz zaspokaja potrzeby rznych ludzi, ktrzy chca by obs c c sugiwani w rzny sposb. Pozwala na to wa nie baza danych polityki routingu, dostarcza s jac mozliwo ci utrzymywania wielu zestaww tabel routingu. s Je li chcesz uzy tej opcji, upewnij si ze twj kernel skompilowano z uzyciem opcji "IP: s c e advanced router" oraz "IP: policy routing". Kiedy kernel musi podja decyzj o routingu, sprawdza z ktrej tabeli ma skorzysta . c e c Domy lnie, sa trzy takie tabele. Stare narz dzie route modykuje gwna i lokalna, dokads e nie tak, jak domy lnie zachowuje si nowe narz dzie ip. s e e Domy lne reguy: s[ahu@home ahu]$ ip rule list 0: from all lookup local 32766: from all lookup main 32767: from all lookup default

Polecenie listuje priorytety wszystkich regu. Wida , ze wszystkie wpisy dotycza wszystkich c pakietw ( from all ). Widzieli my juz gwna (ang. main) tabel wcze niej, mozna ja s e s wylistowa przez uzycie polecenia ip route ls, ale lokalna (ang. local) i domy lna c s (ang. default) sa nowe. Je li chcemy robi wymy lne rzeczy, musimy wygenerowa reguy, ktre wskazywa b da s c s c c e do rznych tabel routingu - innych niz podstawowe, wsplne dla caego systemu. Po dokadny opis tego co kernel robi gdy jest wi cej pasujacych regu, odsyam do dokue mentacji ip-cref Aleksieja.

4.1. Prosty routing na podstawie zrda (ang. source routing)Wr my do prawdziwego przykadu. Mam 2 (dokadniej 3, w momencie gdy je c zwracaem) modemy kablowe poaczone do linuksowego routera NAT (wykonujacego translacj adresw sieciowych). Ludzie ktrzy wok zyja, paca mi za uzywanie Internetu. e Powiedzmy, ze jeden z nich odwiedza tylko hotmail i chce paci mniej. Je li chodzi o mnie c s jest to w porzadku, ale b da uzywa starszego modemu. e c Szybki modem kablowy znany jest jako 212.64.94.251 i jest aczem PPP do 212.64.94.1. Wol ny modem ma rzne adresy - z uwagi na ten przykad skupimy si na 212.64.78.148 i jest e podaczony do 195.96.98.253. Tabela lokalna:[ahu@home ahu]$ ip route list table local broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1 local 10.0.0.1 dev eth0 proto kernel scope host src 10.0.0.1 broadcast 10.0.0.0 dev eth0 proto kernel scope link src 10.0.0.1 local 212.64.94.251 dev ppp0 proto kernel scope host src 212.64.94.251 broadcast 10.255.255.255 dev eth0 proto kernel scope link src 10.0.0.1 broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1 local 212.64.78.148 dev ppp2 proto kernel scope host src 212.64.78.148 local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1 local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1

13

Rozdzia 4. Reguy - baza danych polityki routingu Wida wiele oczywistych rzeczy, ale gdzie nalezy je poda . Cz, znalazy si tutaj. Tabela c s c e domy lna jest pusta. s Zajrzyjmy do tabeli gwnej:[ahu@home ahu]$ ip route list table main 195.96.98.253 dev ppp2 proto kernel scope link src 212.64.78.148 212.64.94.1 dev ppp0 proto kernel scope link src 212.64.94.251 10.0.0.0/8 dev eth0 proto kernel scope link src 10.0.0.1 127.0.0.0/8 dev lo scope link default via 212.64.94.1 dev ppp0

Generujemy teraz nowa regu , ktra nazwiemy John, tak jak nasz hipotetyczny kolega. e Mozemy oczywi cie operowa czystymi numerkami, ale atwiej jest doda nasze tabele do s c c pliku /etc/iproute2/rt_tables.# echo 200 John >> /etc/iproute2/rt_tables # ip rule add from 10.0.0.10 table John # ip rule ls 0: from all lookup local 32765: from 10.0.0.10 lookup John 32766: from all lookup main 32767: from all lookup default

Teraz pozostao tylko wygenerowa tabel Johna i wyczy ci pami c podr czna trasowania: c e s c e e # ip route add default via 195.96.98.253 dev ppp2 table John # ip route flush cache

I to wszystko. Pozostawiamy jako cwiczenie dla czytelnika, zaimplementowanie tego w skrypcie ip-up.

4.2. Routing dla wielu acz/do wielu dostawcw usug Cz sto spotyka si konugracj taka jak ponizsza - w ktrej mamy dwch dostawcw Intere e e netu dla sieci lokalnej (lub czasami nawet pojedynczej maszyny). ________ +------------+ / | | | +-------------+ Dostawca 1 +------__ | | | / ___/ \_ +------+-------+ +------------+ | _/ \__ | if1 | / / \ | | | | Sie lokalna -----+ Router c | | Internet \_ __/ | Linuksowy | | \__ __/ | if2 | \ \__/ +------+-------+ +------------+ | | | | \ +-------------+ Dostawca 2 +------| | | +------------+ \________

Zwykle w takiej konguracji pojawiaja si dwa pytania. e

14

Rozdzia 4. Reguy - baza danych polityki routingu

4.2.1. Dost p rozaczny (ang. split access) e Pierwsze to jak routowa odpowiedzi na pakiety przychodzace od powiedzmy dostawcy c pierwszego, z powrotem ta sama droga (nie wykorzystujac drugiego acza). Zdeniujmy par nazw symbolicznych. Niech $IF1 oznacza pierwszy interfejs (if1 na rye sunku powyzej) a $IF2 drugi interfejs. Nast pnie niech $IP1 b dzie adresem IP interfejsu e e $IF1 a $IP2 adresem IP skojarzonym z interfejsem $IF2. Nast pnie, niech $P1 oznacza adres e IP pierwszego dostawcy a $P2 drugiego. Na koniec niech $P1_NET b dzie siecia IP w ktrej e znajduje si $P1, a $P2_NET odpowiednio siecia IP w ktrej jest $P2. e Nalezy stworzy dwa dodatkowe wpisy w tabeli routingu, powiedzmy T1 i T2. Dodaje si c e je do /etc/iproute2/rt_tables. Nast pnie nalezy doda odpowiednio routing w sposb e c jak ponizej: ip ip ip ip route route route route add add add add $P1_NET default $P2_NET default dev via dev via $IF1 src $IP1 table T1 $P1 table T1 $IF2 src $IP2 table T2 $P2 table T2

Nic spektakularnego, tworzymy trasy do bramy i dodajemy tras domy lna przez ta e s bram - tak jakby my mieli do czynienia z pojedynczym dostawca, z tym wyjatkiem, ze e s mamy osobne tablice dla kazdego dostawcy. Zauwaz, ze wystarczy samo wpisanie trasy poniewaz mwi jak znale c dowolny host w danej sieci, obejmujac rwniez bram tak jak w z e przykadzie powyzej. Teraz nalezy skongurowa gwna tabel routingu. Dobrym pomysem jest kierowa ruch c e c do bezpo redniego sasiada przez interfejs, ktrym ten sasiad jest podaczony. Zwr uwag s c e na argumenty src - zapewniaja ze wybrany zostanie poprawny wychodzacy adres IP. ip route add $P1_NET dev $IF1 src $IP1 ip route add $P2_NET dev $IF2 src $IP2

Nast pnie nalezy doda tras domy lna: e c e s ip route add default via $P1

A na koniec skongurowa tabele routingu. To one wybieraja ktra tablica zostanie c wybrana. Chcemy si upewni , ze wykonujemy routing interfejsem, ktry ma odpowiede c ni zrdowy adres IP: ip rule add from $IP1 table T1 ip rule add from $IP2 table T2

Powyzszy zestaw polecen powoduje, ze wszystkie odpowiedzi na ruch przechodzacy przez dany interfejs, zostana wysane tym wa nie interfejsem. s

15

Rozdzia 4. Reguy - baza danych polityki routingu

Ostrze enie zCzytelnik Rod Roark zauwa y: Je li $P0_NET to lokalna sie a $IF0 to jej z s c interfejs, warto doda dodatkowe wpisy: cip ip ip ip ip ip route route route route route route add add add add add add $P0_NET $P2_NET 127.0.0.0/8 $P0_NET $P1_NET 127.0.0.0/8 dev dev dev dev dev dev $IF0 $IF2 lo $IF0 $IF1 lo table table table table table table T1 T1 T1 T2 T2 T2

Jest to oczywi cie bardzo prosta konguracja. B dzie dziaaa prawidowo dla wszystkich s e procesw dziaajacych na routerze i dla wszystkich poaczen z sieci lokalnej (je li wac s zono translacj adresw). Je li translacji nie waczono, to albo dostae osobne publiczne e s s przestrzenie adresowe od obu dostawcw, albo b dziesz chcia robi translacj adresw dla e c e jednego z dostawcw. W obu przypadkach musisz doda reguy wybierajace przez ktrego c dostawc routowa ruch na podstawie adresw IP maszyn w sieci lokalnej (inicjujacych ten e c ruch).

4.2.2. Rozkadanie obcia enia (ang. load balancing) zDrugie pytanie brzmi: jak rozozy obciazenie wychodzace na obu dostawcw. Odpowiedz c ia jest: nie jest to specjalnie trudne, je li i tak masz juz sytuacj opisana w punkcie powyzej. s e Zamiast wybiera jednego z dostawcw jako tras domy lna, musisz wskaza obu. Domy lc e s c s nie jadro b dzie rozkadao ruch wychodzacy pomi dzy dwie trasy domy lne. Konguruje e e s si to w ten sposb: eip route add default scope global nexthop via $P1 dev $IF1 weight 1 \ nexthop via $P2 dev $IF2 weight 1

Zapewni to opisana funkcjonalno c. Argumentem weight mozna dokadnie dostosowa s c metryk danego dostawcy, efektywnie zwi kszajac lub zmniejszajac ilo c ruchu e e s przesyanego przez niego na rzecz drugiego dostawcy. Zwr jednak uwag , ze rwnowazenie obciazenia nie b dzie doskonae, a co wi cej bazuje c e e e na trasach - ktre przechowywane sa w pami ci podr cznej. Innymi sowy, trasy do najcz s e e e ciej odwiedzanych stron b da prowadziy zawsze przez tego samego dostawc . e e I jeszcze jedno - je li naprawd chcesz co takiego zastosowa , prawdopodobnie powiniene s e s c s rzuci okiem na atki Juliana Anastazowa, znajdujace si pod adresem jego strony, Powinny c e one uatwi ci troch konguracj takiego podziau ruchu. c e e

16

Rozdzia 5. Tunele - GRE i inneW Linuksie dost pne sa trzy rodzaje tuneli. Mamy tunelowanie IP w IP, tunelowanie GRE i e tunele zyjace poza jadrem (na przykad PPTP).

5.1. Par oglnych uwag o tunelach: eTunele mozna uzy do bardzo niezwykych i fajnych rzeczy. Moga rwniez spowodowa c c koszmarne kopoty je li nie skonguruje si ich poprawnie. Nie kieruj swojej domy lnej s e s trasy na urzadzenie tunelujace chyba, ze dokadnie wiesz co robisz :-). Co wi cej, tunelowanie e zwi ksza narzut na pakiety, poniewaz wymaga dodatkowego zestawu nagwkw IP. Oze nacza to typowo okoo 20 bajtw na kazdy pakiet, wi c je li normalny rozmiar pakietu e s (MTU) w sieci to 1500 bajtw, pakiet wysyany przez tunel moze mie tylko 1480 bajtw. c Nie musi to okaza si od razu wielkim problemem, ale pomy l o fragmentacji i skadaniu c e s pakietw je li chcesz aczy duze sieci tunelami. s c I jeszcze jedno - najszybszym sposobem wykopania tunelu jest kopanie po obu stronach.

5.2. Tunelowanie IP w IPTen rodzaj tunelowania jest dost pny w Linuksie juz od bardzo dawna. Wymaga dwch e moduw kernela: ipip.o oraz new_tunnel.o. Powiedzmy ze masz 3 sieci: Wewn trzne A i B i po rednia C (na przykad Internet). Mamy e s wi c sie A: e cnetwork 10.0.1.0 netmask 255.255.255.0 router 10.0.1.1

W sieci C router ma adres 172.16.17.18. Oraz sie B: cnetwork 10.0.2.0 netmask 255.255.255.0 router 10.0.2.1

W sieci C router ma adres 172.19.20.21. Je li chodzi o sie C, zakadamy ze przekazuje pakiety od A do B i odwrotnie. Mozna do s c tego uzywa nawet Internetu. c Oto co trzeba zrobi : c Po pierwsze, upewnij si ze zainstalowano moduy: einsmod ipip.o insmod new_tunnel.o

Teraz, na routerze sieci A wykonaj:ifconfig tunl0 10.0.1.1 pointopoint 172.19.20.21 route add -net 10.0.2.0 netmask 255.255.255.0 dev tunl0

A na routerze sieci B:

17

Rozdzia 5. Tunele - GRE i inneifconfig tunl0 10.0.2.1 pointopoint 172.16.17.18 route add -net 10.0.1.0 netmask 255.255.255.0 dev tunl0

A gdy skonczye uzywa tunelu, wykonaj: s cifconfig tunl0 down

Presto, koniec. Nie mozesz jednak przekazywa pakietw rozgoszeniowych (ang. broad c casts) i ruchu IPv6 przez tunel IP-w-IP. Mozna tylko aczy dwie sieci IPv4, ktre normalnie c nie mogyby ze soba rozmawia - to wszystko. Je li chodzi o zgodno c w d, kod znalaz c s s si w jadrze w okolicach wersji 1.3 - jest juz obecny zatem jaki czas. Natomiast je li chodzi e s s o inne systemy - ten rodzaj tunelowania nie dziaa z innymi systemami czy routerami przynajmniej na tyle na ile wiem. Jest bardzo prosty, ale dziaa. Uzywaj je li musisz, w prze s ciwnym razie si gnij po tunele GRE. e

5.3. Tunelowanie GREProtok tunelujacy GRE zosta pierwotnie stworzony przez Cisco i jest w stanie zrealizowa c troch wi cej niz tunelowanie IP-w-IP. Na przykad, mozesz rwniez transportowa ruch e e c multicastowy i IPv6 przez tunel GRE. W Linuksie, b dziesz potrzebowa moduu ip_gre.o. e

5.3.1. Tunelowanie IPv4Najpierw zajmijmy si tunelowaniem IPv4. e Powiedzmy ze masz 3 sieci: Wewn trzne A i B oraz po rednia C (lub, powiedzmy Internet). e s Mamy wi c sie A: e cnetwork 10.0.1.0 netmask 255.255.255.0 router 10.0.1.1

Router ma adres 172.16.17.18 w sieci C. Nazwijmy ja neta (dobra, strasznie oryginalne). ...sie B: cnetwork 10.0.2.0 netmask 255.255.255.0 router 10.0.2.1

Router ma adres 172.19.20.21 w sieci C. Nazwijmy ja netb (nadal mao oryginalne). Natomiast je li chodzi o sie C, zakadamy ze przekazuje pakiety od A do B i odwrotnie. Jak s c i dlaczego nas nie interesuje. Na routerze w sieci A wykonamy:ip ip ip ip tunnel add netb mode gre remote 172.19.20.21 local 172.16.17.18 ttl 255 link set netb up addr add 10.0.1.1 dev netb route add 10.0.2.0/24 dev netb

Omwmy to w paru zdaniach. W linii 1 dodali my urzadzenie tunelujace i nazwali my s s je netb (co jest raczej oczywiste, poniewaz to tam ma prowadzi ). Co wi cej, okre lili my, c e s s ze uzywamy protokou GRE (mode gre), zdalny adres to 172.19.20.21 (router po drugiej stronie), nasze tunelowane pakiety powinny pochodzi z 172.16.17.18 (dzi ki temu mozesz c e

18

Rozdzia 5. Tunele - GRE i inne mie wiele interfejsw w sieci C i okre li wprost z ktrego maja by wysyane pakiety), c s c c oraz, ze pole TTL pakietw powinno by ustawiane na 255 (ttl 255). c Druga linia uaktywnia urzadzenie. W trzeciej linii ustalili my adres nowego urzadzenia netb na 10.0.1.1. Dla maych sieci s jest to w zasadzie w porzadku, ale je li rozpoczynasz powazne kopanie (WIELE tuneli), s powiniene rozwazy uzycie innego zakresu adresw IP dla interfejsw tunelujacych (w s c naszym przykadzie, mgby uzy 10.0.3.0). s c W czwartej linii ustawiamy tras dla sieci B. Zauwaz inna notacj w masce sieciowej. Je li e e s nie jest ci ona znana, oto jak dziaa: zapisujesz mask sieciowa w formie binarnej i liczysz e wszystkie jedynki. Je li nie wiesz jak to zrobi , zapami taj ze 255.0.0.0 to /8, 255.255.0.0 to s c e /16 a 255.255.255.0 to /24. A 255.255.254.0 to /23, gdyby si zastanawia. s e Ale koniec tego, zacznijmy z routerem w sieci B.ip ip ip ip tunnel add neta mode gre remote 172.16.17.18 local 172.19.20.21 ttl 255 link set neta up addr add 10.0.2.1 dev neta route add 10.0.1.0/24 dev neta

A je li zechciaby usuna tunel na routerze A: s s cip link set netb down ip tunnel del netb

Oczywi cie, mozesz zastapi netb przez neta dla routera B. s c

5.3.2. Tunelowanie IPv6Zajrzyj do sekcji 6, by zapozna si z krtkim wprowadzeniem do protokou IPv6 i formacie c e zapisu adresw. Do roboty z tunelami. Zakadamy, ze masz nast pujaca sie IPv6 i chcesz podaczy si do 6bone lub kolegi. e c c eNetwork 3ffe:406:5:1:5:a:2:1/96

Twj adres IPv4 to 172.16.17.18 a router IPv4 6bone ma adres 172.22.23.24.ip ip ip ip tunnel add sixbone mode sit remote 172.22.23.24 local 172.16.17.18 ttl 255 link set sixbone up addr add 3ffe:406:5:1:5:a:2:1/96 dev sixbone route add 3ffe::/15 dev sixbone

Omwmy to. W pierwszej linii stworzyli my tunel nazwany sixbone. Nadali my mu tryb s s pracy sit (co oznacza tunelowanie IPv6 w IPv4) oraz wskazali my gdzie ma by skierowany s c (remote) i gdzie si zaczyna (local). TTL ustawione jest na maksymalna warto c 255. e c s Nast pnie, podnie li my interfejs (up). Na koniec dodali my nasz wasny adres sieciowy e s s s i ustawili my tras na 3ffe::/15 (co jest obecnie adresem caej 6bone) w tunelu. s e Tunele GRE sa obecnie preferowanym rodzajem tunelowania. Sa standardowe i przyj te e rwniez poza spoeczno cia linuksowa, a w zwiazku z tym sa Dobra Rzecza. s

19

Rozdzia 5. Tunele - GRE i inne

5.4. Tunele w przestrzeni u ytkownika zIstnieja dziesiatki implementacji tunelowania poza kernelem. Najbardziej znane sa oczy wi cie PPP i PPTP, ale jest ich duzo wi cej (niektre rmowe, niektre bezpieczne, inne nie s e uzywaja nawet IP) i sa zdecydowanie poza tematem tego HOWTO.

20

Rozdzia 6. Tunelowanie IPv6 z Cisco i/lub 6boneAutorstwa Marco Davids UWAGA do koordynatora: Na tyle ile si orientuje tunelowanie IPv6-IPv4 nie jest tak naprawd tunelowaniem GRE. e e Mozna tunelowa IPv6 przez IPv4 w urzadzeniach ktre tworza tunel GRE (GRE tuneluje c WSZYSTKO w IPv4), ale urzadzenie uzywane w tym rozwiazaniu tuneluje tylko IPv6 przez IPv4 i w zwiazku z tym to co innego.

6.1. Tunelowanie IPv6To kolejne zastosowanie dla mozliwo ci tunelowania Linuksa. Jest bardzo popularne u s pierwszych uzytkownikw IPv6, lub pionierw - jak wolicie. Ten praktyczny przykad z pewno cia nie opisuje jedynego mozliwego rozwiazania tunelowania IPv6. Jest to jeds nak metoda uzywana cz sto przy tunelowaniu Linuksw i Cisco uzywajacych IPv6, a z e do wiadczenia wynika, ze w ten wa nie sposb realizuje to wi kszo c ludzi. Dziesi c do s s e s e jednego, ze dotyczy to rwniez ciebie ;-). Troch o adresach IPv6: e Adresy IPv6 sa, w porwnaniu do IPv4 bardzo duze: 128 bitw zamiast 32. Daje nam to czego potrzebujemy: bardzo, bardzo duzo adresw IP: 340,282,266,920,938,463,463,374,607,431,768,211,465 je li chodzi o sciso c. Oprcz tego, s s IPv6 (lub IPng, co oznacza IP Next Generation) ma zapewni mniejsze tablice routingu na c ruterach szkieletowych, prostsza konguracj sprz tu, lepsze bezpieczenstwo na poziomie e e IP i lepsze wsparcie dla QoS. Przykad: 2002:836b:9820:0000:0000:0000:836b:9886 Zapisanie adresu IPv6 moze by dosy kopotliwe. By zycie byo prostsze, stworzono pewne c c reguy:

Nie uzywaj wiodacych zer. Tak jak w IPv4. Uzywaj dwukropkw do oddzielania kazdych 16 bitw, lub dwch bajtw. Je li masz duzo kolejnych zer, mozesz zapisa je jako :: - ale tylko raz i tylko dla wielokrots c no ci 16 bitw. s

Adres 2002:836b:9820:0000:0000:0000:836b:9886 moze by c 2002:836b:9820::836b:9886, co jest zdecydowanie przyja niejsze. z Inny przykad: 3ffe:0000:0000:0000:0000:0020:34A1:F32C 3ffe::20:34A1:F32C, co jest duzo krtsze.

wi c e by c

zapisany zapisane

jako jako

moze

IPv6 ma zastapi obecnie uzywany IPv4. Poniewaz jest to relatywnie nowa technologia, nie c ma jeszcze swiatowej natywnej sieci IPv6. By mozna byo przenosi si pynnie, wprowad c e zono 6bone.

21

Rozdzia 6. Tunelowanie IPv6 z Cisco i/lub 6bone Sieci uzywajace IPv6 poaczone sa pomi dzy soba przez hermetyzacj protokou IPv6 w e e ramki IPv4 i wysyanie tak spreparowanych pakietw przez istniejaca infrastruktur IPv4 z e jednej sieci IPv6 do innej. Miejsce styku obu sieci jest dokadnie miejscem, w ktrym uzywamy tuneli. By mc uzywa IPv6 musimy mie kernel, ktry obsuguje ten protok. Jest wiele bardzo c c dobrych dokumentw jak doj c do takiego stanu. Wszystko sprowadza si jednak do paru s e krokw:

Zdobad ktra z nowszych dystrybucji Linuksa z odpowiednia wersja biblioteki glibc. z s Zdobad nowe zrda kernela. z

Je li wszystko jest gotowe, to mozesz skompilowa nowy kernel z obsuga IPv6: s c

Przejd do /usr/src/linux i napisz: z

make menuconfig

Wybierz "Networking Options" Wybierz "The IPv6 protocol", "IPv6: enable EUI-64 token format" i "IPv6: disable provider based addresses"

PODPOWIEDZ: Nie konguruj tych opcji jako znajdujacych si w moduach. Bardzo cz sto e e takie rozwiazanie po prostu nie dziaa. Innymi sowy, wkompiluj IPv6 w kernel. Mozesz nast pnie zapisa swoja konguracj tak e c e jak zwykle i skompilowa kernel. c PODPOWIEDZ: Zanim zaczniesz to robi , zastanw si nad modykacja pliku Makefile: c e EXTRAVERSION = -x ; --> ; EXTRAVERSION = -x-IPv6 Napisano bardzo duzo dobrej dokumentacji dotyczacej kompilowania i instalowania jadra, ale ten dokument jest o czym innym. Je li w tym momencie wpade w jakie problemy, s s s poszukaj czego na ten temat w innych dokumentach. s Plik /usr/src/linux/README moze by dobrym poczatkiem. Gdy uda ci si kompilac c e ja i uruchomie ponownie swj komputer z nowym kernelem, mozesz sprawdzi przez s c /sbin/ifcong -a czy pojawio si nowe urzadzenie sit0-device. SIT oznacza Proste Przee j cie do Internetu (ang. Simple Internet Transition). Mozesz sobie pogratulowa - jeste o s c s jeden krok blizej do IP Nowej Generacji ;-). Teraz drugi krok. Chcesz poaczy twoj komputer lub by moze caa sie LAN do innej sieci c c c IPv6. Moze to by wa nie "6bone", ktra stworzono wa nie w tym celu. c s s Zazmy, ze masz nast pujaca sie IPv6: 3ffe:604:6:8::/64 i ze chcesz poaczy si do 6bone e c c e lub kolegi. Zauwaz notacj /64, ktra dziaa dokadnie tak samo jak w zwykym adresie IP. e Masz adres IPv4 145.100.24.181 a router 6bone ma adres 145.100.1.5.# # # # ip ip ip ip tunnel add sixbone mode sit remote 145.100.1.5 [local 145.100.24.181 ttl 255] link set sixbone up addr add 3FFE:604:6:7::2/126 dev sixbone route add 3ffe::0/16 dev sixbone

Omwmy to. W pierwszej linii tworzymy tunel nazwany sixbone. P niej ustawiamy go z w tryb sit, mwimy gdzie ma by skierowany (remote) i gdzie si zaczyna (local). TTL c e c ustawione jest na warto c maksymalna - 255. s Nast pnie podnosimy nasze urzadzenie (up). Potem dodajemy adres naszej sieci i ustawe iamy tras dla 3ffe::/15 (ktre stanowi obecnie cae 6bone) przez tunel. Je li ta konkrete s

22

Rozdzia 6. Tunelowanie IPv6 z Cisco i/lub 6bone na maszyna na ktrej wpisujesz te komendy jest twoja bramka do IPv6, rozwaz dodanie nast pujacych linii: e # echo 1 >/proc/sys/net/ipv6/conf/all/forwarding # /usr/local/sbin/radvd

Drugi program, radvd, jest podobnie jak zebra demonem rozgaszajacym routera i zapewnia wsparcie dla opcji autokonguracyjnych IPv6. Poszukaj go ulubiona wyszukiwarka, je li s chciaby go uzywa . Mozesz sprawdzi rzeczy takie jak np.: s c c# /sbin/ip -f inet6 addr

Je li radvd pracuje na bramce IPv6 a twj Linux jest w lokalnym LANie, b dziesz mg s e cieszy si autokonguracja IPv6: c e # /sbin/ip -f inet6 addr 1: lo: mtu 3924 qdisc noqueue inet6 ::1/128 scope host 3: eth0: mtu 1500 qdisc pfifo_fast qlen 100 inet6 3ffe:604:6:8:5054:4cff:fe01:e3d6/64 scope global dynamic valid_lft forever preferred_lft 604646sec inet6 fe80::5054:4cff:fe01:e3d6/10 scope link

Powiniene teraz skongurowa swojego binda na obsug adresw IPv6. Rekordowi typu s c e A w IPv4 odpowiada w IPv6 AAAA. Natomiast wpisowi in-addr.arpa odpowiada teraz ip6.int. Jest bardzo duzo informacji dost pnej na ten temat. e Dost pne sa stale rosnace ilo ci aplikacji obsugujacych IPv6, acznie z bezpieczna powoka e s (ssh), telnetem, inetd, przegladarka Mozilla, serwerem WWW Apache i innymi. Ale ponownie - zakres aplikacji wspierajacych IPv6 wykracza daleko poza ten dokument ;-). W konguracji routera Cisco nalezy wpisa co takiego: c s! interface Tunnel1 description tunel IPv6 no ip address no ip directed-broadcast ipv6 address 3FFE:604:6:7::1/126 tunnel source Serial0 tunnel destination 145.100.24.181 tunnel mode ipv6ip ! ipv6 route 3FFE:604:6:8::/64 Tunnel1

Je li nie masz do swojej dyspozycji Cisco, popytaj innych uzytkownikw IPv6 w Internecie. s By moze b da chcieli skongurowa swoje Cisco z twoim tunelem, zwykle w ramach przyc e c jaznego interfejsu WWW. Szukaj ciagu znakw "ipv6 tunnel broker" w ulubionej wyszuki warce.

23

Rozdzia 6. Tunelowanie IPv6 z Cisco i/lub 6bone

24

Rozdzia 7. IPsec: bezpieczne IP przez InternetW Linuksie dost pne sa dwie implementacje IPsec. Dla kerneli 2.2 i 2.4 istnieje FreeS/WAN, e ktry by pierwszym kompletnym rozwiazaniem. Ocjalna strona znajduje si pod tym e adresem, natomiast nieocjalna pod tym. FreeS/WAN tradycyjnie nie by waczony do zrde jadra z paru powodw. Zwykle wymienia si polityczne - zwiazane z Amerykana e mi pracujacymi nad kodem odpowiedzialnym za szyfrowanie. Co wi cej, niezbyt dobrze e integrowa si z jadrem i w zwiazku z tym nie by dobrym kandydatem. e Dodatkowo wiele niezaleznych osb wyrazao si niezbyt pochlebnie o jako ci kodu. Do e s konguracja FreeS/WAN dost pne jest natomiast duzo rozmaitej dokumentacji. e Od wersji 2.5.47 dost pna jest natywna implementacja IPsec. Zostaa napisana przez Aleke sieja Kuzniecowa i Dave Millera, a jej konstrukcja inspirowana bya praca grupy USAGI IPv6. Jednocze nie w tej wersji doaczono kod Jamesa Morrisa - CryptoAPI. s Ten dokument opisuje tylko wersje 2.5+ IPsec. Dla jader serii 2.4 zalecany jest obecnie FreeS/WAN, ale zwr uwag ze jego konguracja rzni si od natywnej implementacji c e e IPsec. Dost pne sa obecnie atki umozliwiajace wspprac kodu FreeS/WAN z natywna e e implementacja IPsec. Od wersji 2.5.49, implementacja IPsec dziaa bez zadnych dodatkowych atek. Notatka: Narz edzia dziaajace w przestrzeni u ytkownika dostepne sa tutaj - i sa aktywnie rozwi z jane. Podczas kompilacji jadra, upewnij sie ze waczye PF_KEY, AH, ESP oraz wszystko w Cryp s toAPI! Natomiast cel TCP_MSS z netlter aktualnie nie dziaa i powiniene go wyaczy . s c

Ostrze enie zAutor tego rozdziau jest zupenym poczatkujacym je li chodzi o IPsec. Je li s s znalaze bedy, prosz napisz do Berta Huberta . s e

Na poczatek, pokazemy jak r cznie skongurowa bezpieczny kana komunikacyjny e c pomi dzy dwoma hostami. Wi kszo c tego procesu mozna zautomatyzowa , ale zrobimy e e s c to r cznie by zapozna si z tym, co dzieje si pod maska. e c e e Mozesz pomina ta sekcj , je li interesujesz si tylko automatyczna wymiana kluczy, ale we c e s e z pod uwag ze lepiej wiedzie o tym procesie co wi cej. e c s e

7.1. Wprowadzenie do R cznej Wymiany Kluczy eIPsec to skomplikowany zestaw protokow. Bardzo duzo materiau dost pnego jest online, e natomiast to HOWTO skupi si tylko na uruchomieniu podstawowej funkcjonalno ci. e sNotatka: Wiele konguracji u ywajacych iptables odrzuca pakiety IPsec! By je przepuszcza doz c daj: iptables -A xxx -p 50 -j ACCEPT and iptables -A xxx -p 51 -j ACCEPT

25

Rozdzia 7. IPsec: bezpieczne IP przez Internet

IPsec oferuje bezpieczna wersj IP. Bezpieczenstwo rozumiane jest tutaj jako dwie rzne e rzeczy: szyfrowanie i uwierzytelnianie. Naiwna wersja bezpieczenstwa oferuje tylko szyfrowanie, ale bardzo atwo mozna pokaza , ze to nie wystarczy - mozesz komunikowa c c si w sposb szyfrowany, ale nie masz gwarancji ze to co oferujesz drugiej stronie jest tym, e czym spodziewasz si ze b dzie. e e IPsec wspiera Encapsulated Security Payload (ESP) ktry suzy do szyfrowania oraz Au thentication Header (AH) dla uwierzytelniania zdalnego partnera. Mozesz uzy obu z nich, c lub zdecydowa si na zastosowanie tylko jednego. c e Zarwno ESP i AH opieraja si o tzw. zwiazki bezpieczenstwa (ang. security association, e SA). SA skadaja si ze wskazania zrda ruchu, miejsca docelowego dla ruchu oraz in e strukcji jak przesyany ruch potraktowa . Przykadowa SA uwierzytelniajaca pokazana jest c ponizej: add 10.0.0.11 10.0.0.216 ah 15700 -A hmac-md5 "1234567890123456";

Wpis ten oznacza ruch z 10.0.0.11 do 10.0.0.216 wymagajacy zastosowania AH, nalezy pod pisa uzywajac algorytmu HMAC-MD5 z kluczem 1234567890123456. Instrukcja ta posic ada przydzielony indeks parametrw bezpieczenstwa (ang. Security Parameter Index, SPI) 15700. Interesujaca cecha SA jest to, ze sa symetryczne. Obie strony musza posiada c dokadnie te same SA - nie sa one automatycznie kopiowane do partnera. Co wi cej, po e jedynczy wpis SA opisuje ruch tylko w jednym kierunku. Aby obsuzy ruch powrotny, c nalezy stworzy dwie SA. c Przykadowe SA ESP:add 10.0.0.11 10.0.0.216 esp 15701 -E 3des-cbc "123456789012123456789012";

Ten z kolei wpis oznacza ruch z 10.0.0.11 do 10.0.0.216 wymagajacy szyfrowania nalezy szyfrowa algorytmem 3DES-CBC z kluczem 123456789012123456789012. SPI dla wpisu to c 15701. Udao nam si stworzy SA opisujace rzne mozliwe instrukcje, ale nie wskazali my w e c s zadnym momencie w ktrym momencie nalezy tych instrukcji uzy . Tak naprawd , moz c e na stworzy wiele dokadnie takich samych SA rzniacych si tylko numerami SPI. Aby c e wykona faktycznie szyfrowanie, nalezy dodatkowo zdeniowa regu . Moze ona na c c e przykad mwi uzyj IPsec je li jest dost pny lub odrzucaj ruch chyba ze otrzymamy c s e IPsec. Typowa, przykadowa Regua Bezpieczenstwa (ang. Security Policy, SP) wyglada moze c tak:spdadd 10.0.0.216 10.0.0.11 any -P out ipsec esp/transport//require ah/transport//require;

Je li zostaa wpisana na ho cie 10.0.0.216, oznacza dokadnie tyle, ze cay ruch wychodzacy s s do 10.0.0.11 ma by szyfrowany i opakowany w nagwek AH. Zauwaz ze nie wskazali my c s ktre SA maja by zastosowane, ma to sprawdzi kernel. c c Innymi sowy, SP opisuje CO chcemy uzyska , a SA JAK chcemy to zrobi . c c

26

Rozdzia 7. IPsec: bezpieczne IP przez Internet Wychodzace pakiety otrzymuja etykiety z SA SPI, tak by host otrzymujacy ruch mg sprawdzi swoje wpisy i wykona odpowiednie operacje odszyfrowujac ruch. c c Ponizej bardzo prosty przykad konguracji, dla poaczenia 10.0.0.216 z 10.0.0.11 z uzyciem uwierzytelniania i szyfrowania. We pod uwag ze ruch z powrotem odbywa si b dzie z e c e e bez szyfrowania i taka konguracja nie powinna by stosowana. c Na ho cie 10.0.0.216: s#!/sbin/setkey -f add 10.0.0.216 10.0.0.11 ah 24500 -A hmac-md5 "1234567890123456"; add 10.0.0.216 10.0.0.11 esp 24501 -E 3des-cbc "123456789012123456789012"; spdadd 10.0.0.216 10.0.0.11 any -P out ipsec esp/transport//require ah/transport//require;

Na ho cie 10.0.0.11 te same SA, bez SP: s#!/sbin/setkey -f add 10.0.0.216 10.0.0.11 ah 24500 -A hmac-md5 "1234567890123456"; add 10.0.0.216 10.0.0.11 esp 24501 -E 3des-cbc "123456789012123456789012";

W powyzszej konguracji (pliki mozna wykona je li setkey znajduje si w katalogu /sbin) c s e polecenie ping 10.0.0.11 wykonane na ho cie 10.0.0.216 wyglada powinno tak, je li pods c s suchamy je programem tcpdump:

22:37:52 10.0.0.216 > 10.0.0.11: AH(spi=0x00005fb4,seq=0xa): ESP(spi=0x00005fb5,seq=0xa) 22:37:52 10.0.0.11 > 10.0.0.216: icmp: echo reply

Zauwaz, ze odpowied na ping z 10.0.0.11 jest faktycznie widoczna nieszyfrowana. Nato z miast sam ping widziany jest przez tcpdump jako transmisja IPsec (uzywajaca AH i ESP). Nalezy zwrci uwag na par rzeczy. Konguracja powyzej pokazywana jest w wielu c e e przykadach dotyczacych IPsec i jest bardzo niebezpieczna. Problem polega na tym, ze 10.0.0.11 nie szyfruje ruchu powrotnego oraz na tym, ze 10.0.0.11 nie odrzuca ruchu nieza szyfrowanego lub nieuwierzytelnionego. Dowolny uzytkownik sieci moze wysa sfaszowany ruch do 10.0.0.11 a ten go przyjmie. c Aby zapobiec temu problemowi, potrzebujemy SP na ho cie 10.0.0.11 ktra wyglada tak: s #!/sbin/setkey -f spdadd 10.0.0.216 10.0.0.11 any -P IN ipsec esp/transport//require ah/transport//require;

To polecenie powoduje, ze cay ruch z 10.0.0.216 musi posiada prawidowe ESP i AH. c Pierwszy problem (nieszyfrowanie ruchu powrotnego) rozwiazemy uzupeniajac kongu racj . Na 10.0.0.216: e#!/sbin/setkey -f

27

Rozdzia 7. IPsec: bezpieczne IP przez Internetflush; spdflush; # AH add 10.0.0.11 10.0.0.216 ah 15700 -A hmac-md5 "1234567890123456"; add 10.0.0.216 10.0.0.11 ah 24500 -A hmac-md5 "1234567890123456"; # ESP add 10.0.0.11 10.0.0.216 esp 15701 -E 3des-cbc "123456789012123456789012"; add 10.0.0.216 10.0.0.11 esp 24501 -E 3des-cbc "123456789012123456789012"; spdadd 10.0.0.216 10.0.0.11 any -P out ipsec esp/transport//require ah/transport//require; spdadd 10.0.0.11 10.0.0.216 any -P in ipsec esp/transport//require ah/transport//require;

I na 10.0.0.11:#!/sbin/setkey -f flush; spdflush; # AH add 10.0.0.11 10.0.0.216 ah 15700 -A hmac-md5 "1234567890123456"; add 10.0.0.216 10.0.0.11 ah 24500 -A hmac-md5 "1234567890123456"; # ESP add 10.0.0.11 10.0.0.216 esp 15701 -E 3des-cbc "123456789012123456789012"; add 10.0.0.216 10.0.0.11 esp 24501 -E 3des-cbc "123456789012123456789012"; spdadd 10.0.0.11 10.0.0.216 any -P out ipsec esp/transport//require ah/transport//require; spdadd 10.0.0.216 10.0.0.11 any -P in ipsec esp/transport//require ah/transport//require;

Zauwaz, ze uzyli my w przykadzie identycznych kluczy do obu kierunkw ruchu - nie jest s to oczywi cie wymagane. s Aby obejrze konguracj , ktra przed chwila stworzye wykonaj polecenie setkey -D, c e s ktra pokazuje SA lub polecenie setkey -DP pokazujaca skongurowane reguy.

28

Rozdzia 7. IPsec: bezpieczne IP przez Internet

7.2. Automatyczna wymiana kluczyW poprzedniej sekcji, szyfrowanie odbywao si za pomoca prostych kluczy. Innymi sowy, e aby pozosta bezpiecznym, musiaby wymienia konguracj przez zestawiony uprzednio c s c e bezpieczny kana. Je li musieliby my skongurowa zdalnego hosta przez telnet, dowolny s s c uzytkownik mgby podsucha klucze i konguracja nie byaby bezpieczna. c Co wi cej, poniewaz klucz jest wspdzielony - nie jest juz wcale tajny. Zdalny partner nie e jest w stanie zrobi wiele znajac go, ale majac wielu partnerw musimy zadba by z kazdym c c rozmawia za pomoca rznych kluczy. Wymaga to duzej ilo ci kluczy - przy 10 partnerach c s musimy zna przynajmniej 50 rznych kluczy. c Poza problemami zwiazanymi z kluczem symetrycznym, mamy jeszcze problem zmiany klucza. Je li osoba postronna podsucha odpowiednio duzo ruchu, moze by w stanie s c odzyska klucz i odczyta nasze transmisje. Zapobiega si temu zmieniajac regularnie klucz, c c e ale nalezy to oczywi cie zautomatyzowa . s c Inny problem zwiazany z manualnym zarzadzaniem kluczami jest dokadne ustalenie z partnerem parametrw poaczenia - algorytmw szyfrowania i/lub uwierzytelniania. Wygodniej jest mc okre li regu w postaci Mozemy uzywa 3DESa i Blowsh z kluczami s c e c o przynajmniej takiej a takiej dugo ci. s Aby rozwiaza te problemy, IPsec wprowadzi standard wymiany kluczy w Internecie c (ang. Internet Key Exchange, IKE). Umozliwia on automatyczna wymian losowo gen e erowanych kluczy, wykorzystujaca technologi szyfrowania asymetrycznego zgodnie z e wynegocjowanymi z partnerem parametrami. Implementacja IPsec Linuksa 2.5 dziaa z demonem racoon pochodzacym z projektu KAME. Od 9 listopada wersja oparta o racoon znajduje si w dystrybucji iptools Aleksieja, e aczkolwiek zeby ja skompilowa b dziesz musia usuna #include w dwch c e c plikach. Mozesz rwniez sciagna wersj prekompilowana. c e Notatka: IKE wymaga dostepu z Internetu do portu 500/udp, upewnij sie ze iptables nie blokuja go.

7.2.1. TeoriaTak jak wyja niaem wcze niej, automatyczna zmiana kluczy moze wykona za nas mas s s c e pracy. Dokadniej rzecz biorac, tworzy SA "w locie". Nie powoduje jednak pojawienia si e regu bezpieczenstwa i w zasadzie tak powinno by . c Zeby skorzysta z IKE, skonguruj regu ale nie wskazuj SA. Kernel w momencie odkrycia c e reguy IPsec bez SA powiadomi demon IKE, ktry z kolei postara si odpowiednie SA wynee gocjowa . c Powtrzmy to jeszcze raz: SP opisuje CO chcemy uzyska , a SA JAK chcemy to zrobi . Zasc c tosowanie demona IKE automatycznie wymieniajacego klucze umozliwia nam ograniczenie si tylko do wskazania, CO chcemy uzyska . e c

29

Rozdzia 7. IPsec: bezpieczne IP przez Internet

7.2.2. PrzykadRacoon w wersji KAME dostarczany jest z caa masa opcji, z ktrych wi kszo c ma bardzo e s dobre ustawienia domy lne wi c nie b dziemy ich modykowa . Tak jak opisaem powyzej, s e e c musimy zdeniowa reguy bezpieczenstwa (SP) a nie SA. Pozostawimy ich negocjacj dec e monowi IKE. W tym przykadzie, 10.0.0.11 i 10.0.0.216 ponownie chca zestawi kana komunikacyjny, ale c tym razem z pomoca demona racoon. Dla zachowania przejrzysto ci konguracji uzyjemy s wspdzielonych kluczy (ang. pre-shared keys). Zastosowanie do uwierzytelnienia partnerw certykatw X.509 opisano w osobnym rozdziale, zajrzyj do Sekcja 7.2.3. Uzyjemy prawie domy lnej konguracji, identycznej na obu hostach: spath pre_shared_key "/usr/local/etc/racoon/psk.txt"; remote anonymous { exchange_mode aggressive,main; doi ipsec_doi; situation identity_only; my_identifier address; lifetime time 2 min; initial_contact on; proposal_check obey; # sec,min,hour # obey, strict or claim

proposal { encryption_algorithm 3des; hash_algorithm sha1; authentication_method pre_shared_key; dh_group 2 ; } } sainfo anonymous { pfs_group 1; lifetime time 2 min; encryption_algorithm 3des ; authentication_algorithm hmac_sha1; compression_algorithm deflate ; }

Wiele ustawien - my l ze mozna usuna wi cej by zblizy si do domy lnej konguracji. se c e c e s Par rzeczy wartych zwrcenia uwagi - stworzyli my dwie sekcje anonimowe pasujace dla e s wszystkich partnerw zdalnych co uatwia znakomicie konguracj . Nie musimy dene iowa wszystkiego per-host, chyba ze bardzo chcemy. c Co wi cej, konguracja zostaa wykonana w ten sposb, ze identykowani jeste my na pode s stawie adresu IP (my_identier address) i deklarujemy, ze jeste my w stanie uzywa algo s c rytmw 3DES, SHA-1 oraz, ze b dziemy uzywa wspdzielonego klucza zlokalizowanego e c w pliku psk.txt.

30

Rozdzia 7. IPsec: bezpieczne IP przez Internet W rzeczonym pliku psk.txt wpisujemy po jednej linicje, ktra rzni si b dzie na obu c e e hostach. Na 10.0.0.11 b dzie to: e10.0.0.216 password2

a na 10.0.0.216:10.0.0.11 password2

Upewnij si ze wa cicielem tych plikw jest root i uprawnienia do nich ustawiono na 0600 e s - w innym przypadku racoon nie b dzie chcia ich uzy . Je li jeszcze tego nie zauwazye , e c s s zwr uwag ze te dwa pliki sa swoimi lustrzanymi odbiciami. c e Teraz jeste my w stanie skongurowa zadana SP, ktra jest bardzo prosta. Na ho cie s c s 10.0.0.216:#!/sbin/setkey -f flush; spdflush; spdadd 10.0.0.216 10.0.0.11 any -P out ipsec esp/transport//require; spdadd 10.0.0.11 10.0.0.216 any -P in ipsec esp/transport//require;

I na 10.0.0.11:#!/sbin/setkey -f flush; spdflush; spdadd 10.0.0.11 10.0.0.216 any -P out ipsec esp/transport//require; spdadd 10.0.0.216 10.0.0.11 any -P in ipsec esp/transport//require;

Tu rwniez wida , ze SP sa swoimi lustrzanymi odbiciami. c W tym momencie jeste my gotowi do uruchomienia racoon! Je li juz dziaa, zainicjowanie s s ruchu z 10.0.0.11 do 10.0.0.216 lub odwrotnie (np. za pomoca telnetu) spowoduje rozpocz e cie przez racoon negocjacji:12:18:44: INFO: isakmp.c:1689:isakmp_post_acquire(): IPsec-SA request for 10.0.0.11 queued due to no phase1 found. 12:18:44: INFO: isakmp.c:794:isakmp_ph1begin_i(): initiate new phase 1 negotiation: 10.0.0.216[500]10.0.0.11[500] 12:18:44: INFO: isakmp.c:799:isakmp_ph1begin_i(): begin Aggressive mode. 12:18:44: INFO: vendorid.c:128:check_vendorid(): received Vendor ID: KAME/racoon 12:18:44: NOTIFY: oakley.c:2037:oakley_skeyid(): couldnt find the proper pskey, try to get one by the peers address. 12:18:44: INFO: isakmp.c:2417:log_ph1established(): ISAKMP-SA established 10.0.0.216[500]-10.0.0.11[500] spi:044d25dede78a4d1:ff01e5b4804f0680 12:18:45: INFO: isakmp.c:938:isakmp_ph2begin_i(): initiate new phase 2 negotiation: 10.0.0.216[0]10.0.0.11[0] 12:18:45: INFO: pfkey.c:1106:pk_recvupdate(): IPsec-SA established:

31

Rozdzia 7. IPsec: bezpieczne IP przez InternetESP/Transport 10.0.0.11->10.0.0.216 spi=44556347(0x2a7e03b) 12:18:45: INFO: pfkey.c:1318:pk_recvadd(): IPsec-SA established: ESP/Transport 10.0.0.216->10.0.0.11 spi=15863890(0xf21052)

Je li w tym momencie wykonamy polecenie setkey -D, ktre pokazuje nam nasze SA, s powinny wyglada mniej wi cej tak: c e10.0.0.216 10.0.0.11 esp mode=transport spi=224162611(0x0d5c7333) reqid=0(0x00000000) E: 3des-cbc 5d421c1b d33b2a9f 4e9055e3 857db9fc 211d9c95 ebaead04 A: hmac-sha1 c5537d66 f3c5d869 bd736ae2 08d22133 27f7aa99 seq=0x00000000 replay=4 flags=0x00000000 state=mature created: Nov 11 12:28:45 2002 current: Nov 11 12:29:16 2002 diff: 31(s) hard: 600(s) soft: 480(s) last: Nov 11 12:29:12 2002 hard: 0(s) soft: 0(s) current: 304(bytes) hard: 0(bytes) soft: 0(bytes) allocated: 3 hard: 0 soft: 0 sadb_seq=1 pid=17112 refcnt=0 10.0.0.11 10.0.0.216 esp mode=transport spi=165123736(0x09d79698) reqid=0(0x00000000) E: 3des-cbc d7af8466 acd4f14c 872c5443 ec45a719 d4b3fde1 8d239d6a A: hmac-sha1 41ccc388 4568ac49 19e4e024 628e240c 141ffe2f seq=0x00000000 replay=4 flags=0x00000000 state=mature created: Nov 11 12:28:45 2002 current: Nov 11 12:29:16 2002 diff: 31(s) hard: 600(s) soft: 480(s) last: hard: 0(s) soft: 0(s) current: 231(bytes) hard: 0(bytes) soft: 0(bytes) allocated: 2 hard: 0 soft: 0 sadb_seq=0 pid=17112 refcnt=0

Powinny by rwniez widoczne reguy bezpieczenstwa, ktre skongurowali my sami: c s10.0.0.11[any] 10.0.0.216[any] tcp in ipsec esp/transport//require created:Nov 11 12:28:28 2002 lastused:Nov 11 12:29:12 2002 lifetime:0(s) validtime:0(s) spid=3616 seq=5 pid=17134 refcnt=3 10.0.0.216[any] 10.0.0.11[any] tcp out ipsec esp/transport//require created:Nov 11 12:28:28 2002 lastused:Nov 11 12:28:44 2002 lifetime:0(s) validtime:0(s) spid=3609 seq=4 pid=17134 refcnt=3

7.2.2.1. Problemy i znane usterkiJe li co poszo nie tak, sprawd czy wszystkie pliki konguracyjne naleza do roota i tylko s s z przez niego moga zosta przeczytane. Aby uruchomi demon racoon na pierwszym planie c c

32

Rozdzia 7. IPsec: bezpieczne IP przez Internet uzyj opcji -F. By zmusi go do przeczytania innego pliku konguracyjnego niz domy l c s nego, uzyj opcji -f. Aby obejrze dokadne informacje o wszystkim co demon robi, dodaj c do pliku racoon.conf linijk zawierajaca log debug;. e

7.2.3. Automatyczna wymiana kluczy przy u yciu z certykatw X.509Wspominaem wcze niej, ze zastosowanie wspdzielonych kluczy nie jest najwygods niejsze, poniewaz nie sa zbyt atwe do bezpiecznego wspdzielenia - a gdy juz sa wspdzielone, przestaja by sekretem. Na szcz scie w tym momencie technologie wyko c e rzystujace kryptogra asymetryczna wchodza do gry i rozwiazuja problem. e Je li kazdy z partnerw IPsec stworzy klucz prywatny i publiczny, mozemy zestawi bezs c pieczny kana komunikacyjny pozwalajac obu stronom opublikowa swoje klucze publiczne c i odpowiednio skongurowa reguy bezpieczenstwa. c Stworzenie klucza jest relatywnie atwe, aczkolwiek wymaga troch pracy. Ponizszy opis e opiera si o zastosowanie do tego celu narz dzia openssl. e e

7.2.3.1. Tworzenie certykatu X.509 dla twojego hostaOpenSSL dysponuje bogata infrastruktura zwiazana z operacjami na kluczach, podpisanych lub niepodpisanych przez autorytety/instytucje certykujace (ang. certicate authorities). Na razie zajmiemy si domy lnie generowanymi kluczami bez uzycia instytucji certykue s jacej. Najpierw stworzymy pro b o certykat dla naszego hosta, nazwanego laptop: s e$ openssl req -new -nodes -newkey rsa:1024 -sha1 -keyform PEM -keyout \ laptop.private -outform PEM -out request.pem

Polecenie spowoduje konieczno c odpowiedzi na par pytan: s e Country Name (2 letter code) [AU]:NL State or Province Name (full name) [Some-State]:. Locality Name (eg, city) []:Delft Organization Name (eg, company) [Internet Widgits Pty Ltd]:Linux Advanced Routing & Traffic Control Organizational Unit Name (eg, section) []:laptop Common Name (eg, YOUR name) []:bert hubert Email Address []:[email protected] Please enter the following extra attributes to be sent with your certificate request A challenge password []: An optional company name []:

Od ciebie zalezy ile z informacji podasz i w jaki sposb je podasz. Moze to zaleze od twoich c oczekiwan zwiazanych z bezpieczenstwem. W powyzszym przykadzie podali my wi k s e szo c informacji. s Teraz sami podpiszemy swoja pro b : s e$ openssl x509 -req -in request.pem -signkey laptop.private -out \ laptop.public

33

Rozdzia 7. IPsec: bezpieczne IP przez InternetSignature ok subject=/C=NL/L=Delft/O=Linux Advanced Routing & Traffic \ Control/OU=laptop/CN=bert hubert/[email protected] Getting Private key

Plik request.pem mozna teraz usuna . c Powtrz ta operacj dla wszystkich hostw ktre potrzebowa b da klucza. Mozesz oczy e c e wi cie dystrybuowa plik .public, ale plik .private trzymaj z daleka od wszystkich w s c tajemnicy.

7.2.3.2. Konguracja i uruchomieniePo wygenerowaniu kluczy nalezy poinformowa racoon by ich uzy. c Wracamy w tym momencie do naszej poprzedniej konguracji pomi dzy dwoma hostami e 10.0.0.11 (upstairs) i 10.0.0.216 (laptop). Do pliku racoon.conf na 10.0.0.11 dodaj:path certificate "/usr/local/etc/racoon/certs"; remote 10.0.0.216 { exchange_mode aggressive,main; my_identifier asn1dn; peers_identifier asn1dn; certificate_type x509 "upstairs.public" "upstairs.private"; peers_certfile "laptop.public"; proposal { encryption_algorithm 3des; hash_algorithm sha1; authentication_method rsasig; dh_group 2 ; } }

Taka

konguracja

spowoduje,

ze

racoon

poszuka

kluczy

w

katalogu

/usr/local/etc/racoon/certs/. Konguracja zawiera rwniez elementy specyczne dla

zdalnego hosta 10.0.0.216. Linijka asn1dn informuje racoon, ze identykator obu stron nalezy pobra z kluczy pub c licznych. B dzie to ciag znakw subject=/C=NL/L=Delft/O=Linux Advanced Routing & e Trafc Control/OU=laptop/CN=bert hubert/[email protected]. Linijka certicate_type wskazuje lokalny klucz prywatny i publiczny. Natomiast linijka peers_certle wskazuje demonowi racoon plik z kluczem publicznym zdalnego partnera - i jest to plik laptop.public. Sekcja proposal pozostaje w niezmienionej formie w stosunku do tego co widzieli my s wcze niej za wyjatkiem opcji authentication_method ktra jest obecnie rsasig - wskazujac, s ze uzywamy pary prywatnej/publicznej RSA do wykonania uwierzytelnienia. Zmiany w konguracji 10.0.0.216 sa analogiczne do tych, wykonanych na 10.0.0.11: path certificate "/usr/local/etc/racoon/certs";

34

Rozdzia 7. IPsec: bezpieczne IP przez Internetremote 10.0.0.11 { exchange_mode aggressive,main; my_identifier asn1dn; peers_identifier asn1dn; certificate_type x509 "laptop.public" "laptop.private"; peers_certfile "upstairs.public"; proposal { encryption_algorithm 3des; hash_algorithm sha1; authentication_method rsasig; dh_group 2 ; } }

Teraz, gdy juz dodali my odpowiednie opcje na obu hostach, musimy tylko umie ci klucze s s c we wa ciwych miejscach. Maszyna upstairs powinna mie pliki upstairs.private, s c upstairs.public, i laptop.public w katalogu /usr/local/etc/racoon/certs. Upewnij si ze wa cicielem tego katalogu jest root a sam katalog ma prawa dost pu ustawione na e s e 0700 - w przeciwnym wypadku racoon odmwi ich odczytania. Maszyna laptop powinna mie pliki laptop.private, laptop.public i upstairs.public c w katalogu /usr/local/etc/racoon/certs. Innymi sowy, kazdy host potrzebuje dost p e do swojego klucza prywatnego, publicznego oraz do klucza publicznego hosta z ktrym chce nawiaza aczno c. c s Sprawd , czy reguy bezpieczenstwa zostay prawidowo zdeniowane (wykonaj polecenia z spdadd z Sekcja 7.2.2). Teraz uruchom racoon i wszystko powinno dziaa . c

7.2.3.3. Jak bezpiecznie budowa tunele cAby ustanowi bezpieczna tras komunikacji ze zdalnym partnerem, musimy wymieni c e c klucze publiczne. O ile same klucze publiczne nie musza by sekretem, wazne jest by za c chowa je w niezmienionej formie. Innymi sowy, trzeba mie pewno c ze nie dojdzie do c c s ataku typu czowiek-po rodku (ang. man in the middle). s Aby to uatwi , w OpenSSL zaimplementowano polecenie digest: c$ openssl dgst upstairs.public MD5(upstairs.public)= 78a3bddafb4d681c1ca8ed4d23da4ff1

Teraz wystarczy zwerykowa ze nasz zdalny partner ma taka sama sum kontrolna dla c e tego pliku. Mozna to zrobi po prostu spotykajac si , lub przez telefon - generalnie chodzi c e o to, by potwierdzi to inna droga komunikacji. Niedopuszczalne jest, by zdalna strona c wysaa swoja sum kontrolna rwniez np. mailem! e Innym sposobem osiagni cia tego samego, jest zaufana trzecia osoba/instytucja (ang. e Trusted Third Party) ktra utrzymuje instytucj certykujaca (ang. Certicate Authore ity, CA). CA podpisze klucz, ktry w naszym przypadku sami podpisali my i partner s

35

Rozdzia 7. IPsec: bezpieczne IP przez Internet b dzie mg w CA zwerykowa ze otrzymany od nas klucz jest faktycznie tym, ktry my e c pierwotnie zgosili my do podpisania w CA. s

7.3. Tunele IPsecJak dotad zajmowali my si poaczeniami IPsec w tak zwanym trybie transportowym, w s e ktrym oba punkty transmisji rozumieja IPsec. Poniewaz cz sto nie mozna doprowadzi e c do takiej sytuacji, mozna skongurowa IPsec tylko na routerach i kaza im zestawi bez c c c pieczny tunel dla caej komunikacji z podsieci "za" routerami. Jak mozna si atwo domy li , e s c nazywane jest to wa nie tunelowaniem lub po prostu trybem tunelu. s Konguracja jest pro ciutka. Aby tunelowa cay ruch do podsieci 130.161.0.0/16 z s c 10.0.0.216 przez 10.0.0.11, wydajemy nast pujace polecenie na 10.0.0.216: e #!/sbin/setkey -f flush; spdflush; add 10.0.0.216 10.0.0.11 esp 34501 -m tunnel -E 3des-cbc "123456789012123456789012"; spdadd 10.0.0.0/24 130.161.0.0/16 any -P out ipsec esp/tunnel/10.0.0.216-10.0.0.11/require;

Zauwaz ze opcja -m tunnel jest bardzo istotna! Linijka konguruje SA szyfrujace za pomoca ESP pomi dzy dwoma koncami tuneli - 10.0.0.216 i 10.0.0.11. e Nast pnie kongurujemy sam tunel.