pl Routing IP w linuksie 2.2 [Paweł Krawczyk], Linux, e-books (wszystko o linuxach)
[ Pobierz całość w formacie PDF ]
Ruting IP w Linuxie 2.2
Paweª Krawczyk
<kravietz@ceti.pl>
30 maja 2000
Spis tre±ci
1 Wst¦p
2
1.1 O czym jest ten artykuª? . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2 Nowo±ci w j¡drze . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.3 Nowo±ci w iproute2 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.4 Konguracja adresów interfejsów . . . . . . . . . . . . . . . . . . . .
3
2 Konguracja parametrów interfejsu
4
3 Komunikacja hostów w obr¦bie sieci lokalnej
5
3.1 Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
3.2 Obsªuga tablicy s¡siadów . . . . . . . . . . . . . . . . . . . . . . . . .
5
4 Ruting
6
4.1 Wst¦p. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
4.2 Obsªuga tablic rutingu. . . . . . . . . . . . . . . . . . . . . . . . . . .
7
5 Ruting rozszerzony
8
5.1 Wst¦p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
5.2 Ruting rozszerzony . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
5.3 Translacja adresów . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
6 Optymalizacja 10
6.1 Filtrowanie za pomoc¡ tablicy rutingu . . . . . . . . . . . . . . . . . 10
6.2 Optymalizacja ltra pakietów . . . . . . . . . . . . . . . . . . . . . . 11
6.3 Optymalizacja tablicy rutingu . . . . . . . . . . . . . . . . . . . . . . 11
1
7 Dodatki 11
7.1 Zasi¦gi adresów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
7.2 Wykorzystanie tras
unreachable
. . . . . . . . . . . . . . . . . . . . 12
7.3 Znakowanie pakietów . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
7.4 Werykacja adresów . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
7.5 Ograniczenia pr¦dko±ci odpowiedzi ICMP . . . . . . . . . . . . . . . . 14
1 Wst¦p
1.1 O czym jest ten artykuª?
Tekst ten omawia wi¦kszo±¢ nowo±ci dotycz¡cych obsªugi sieci IP, które pojawiªy si¦ w
j¡drze Linuxa 2.2. Nie jest to vademecum dla osób pocz¡tkuj¡cych ani HOWTO. Jego
zadaniem jest zapoznanie z u»ytecznymi funkcjami osób zajmuj¡cych si¦ ruterami
dziaªaj¡cymi na Linuxie i posiadaj¡cych podstawowe poj¦cie o dziaªaniu protokoªu
IP.
1.2 Nowo±ci w j¡drze
Pocz¡tki wielkich zmian w Linuxie, dotycz¡cych protokoªu IP, to koniec 1996 roku,
kiedy pojawiªa si¦ wersja 2.1.17. Zawieraªa ona pierwsz¡ wersj¦ przepisanego prak-
tycznie od nowa kodu obsªuguj¡cego IP. Nowo±ci¡ byªa zgodno±¢ z RFC 1812 [12] i
ruting rozszerzony (policy routing). Do konguracji nowych funkcji sªu»yª program
iproute
, potem pojawiª si¦ pakiet
iproute2
, zawieraj¡cy program
ip
. Kolejne wer-
sje j¡dra wprowadziªy tak»e mechanizmy sterowania przepªywem danych (trac con-
trol), obsªugiwane za pomoc¡ oddzielnego programu
tc
i opisane w osobnym artykule
1
. Rozwijanie tej cz¦±ci j¡dra Linuxa oraz pakietu
iproute2
to przede wszystkim
zasªuga Aleksieja N. Ku¹niecowa <kuznet@ms2.inr.ac.ru> z moskiewskiego Instytutu
Fizyki J¡drowej.
1.3 Nowo±ci w iproute2
Obsªuga
iproute2
ró»ni si¦ zasadniczo od dotychczas stosowanych narz¦dzi {
ifconfig
i
route
. W programach tych adres IP oraz maska podsieci byªy podawane oddzielnie,
przy czym ta ostania byªa tradycyjnie zapisywana w postaci aaa.bbb.ccc.ddd. Program
ip
przyjmuje natomiast mask¦ podsieci w formacie skróconym aaa.bbb.ccc.ddd/nn,
gdzie nn jest któr¡ okre±la si¦ jako liczb¦ bitów jedynkowych w masce. Przykªadowo,
maska sieci C zapisywana tradycyjnie jako 255.255.255.0 ma 24 bity jedynkowe, pod-
sieci 255.255.255.240 { 28 itp.
1
Paweª Krawczyk, ÿSterowanie przepªywem danych w Linuxie 2.2"
2
Wi¡»e si¦ z tym tak»e mo»liwo±¢ u»ywania skróconych postaci adresów IP, gdzie
brakujace bajty s¡ zast¦powane zerami. Przykªadowo:
Notacja skrócona Notacja peªna
127/8
127.0.0.0/8
192.168/16
192.168.0.0/16
0/0
0.0.0.0/0
Nale»y podkre±li¢, »e jest to notacja zgodna z lozo¡ CIDR ([2], [3]) oraz IPv6 i
zalecana przez RFC 1812 ([12]), gdzie tradycyjn¡ konstrukcj¦ adresu IP (adres sieci,
adres podsieci, adres hosta) zast¦puje si¦ przez adres preksu i adres hosta. W konse-
kwencji wy»ej opisana notacja maski podsieci odpowiada po prostu dªugo±ci preksu
w bitach.
1.4 Konguracja adresów interfejsów
Ka»dy interfejs mo»e posiada¢ wi¦cej ni» jeden adres IP. Dodatkowe adresy s¡ po
prostu adresami, ró»ni¡cymi si¦ od podstawowego adresu tylko ag¡ secondary, a
nie samodzielnymi pseudointefejsami, jak to byªo w j¡drach 2.0 i wcze±niejszych.
Do ustawiania adresu intefejsu sªu»y polecenie ip addr:
ip addr add ADRES dev INTERFEJS
[ ( peer | remote ) P-T-P ]
[ ( broadcast | brd ) BROADCAST ]
[ anycast ANYCAST ] [ label NAZWA ]
[ scope ZASIG ]
Parametr
ADRES
jest adresem dodawanym do interfejsu. Nale»y zaznaczy¢, »e w
odró»nieniu od programu
ifconfig
adresy IPv4 podaje si¦ razem z mask¡ podsieci
jako aaa.bbb.ccc.ddd/nn.
Adresy IPv6 podaje si¦ standardowo jako aa:bb:. . . :zz/nnn, gdzie /nnn to dªugo±¢
preksu (maski podsieci).
W przypadku intefejsów point-to-point (na przykªad PPP) parametr ADRES okre-
±la adres lokalny intefejsu, natomiast adres drugiego ko«ca nale»y poda¢ po parame-
trze peer (akceptowane jest równie» sªowo remote).
Do ustawiania adresu rozgªoszeniowego (broadcast) sªu»y parametr broadcast
(lub krócej brd). W nowych wersjach
iproute
parametr
+
spowoduje adresu obliczo-
nego automatycznie na podstawie dªugo±ci preksu.
Adres anycast stosowany w IPv6 ustawia sie parametrem anycast.
2
2
Patrz
3
Zasi¦g adresu (scope) okre±la si¦ parametrem scope, który mo»e by¢ jednym ze
standardowych zasi¦gów, albo nazw¡ (lub numerem) zasi¦gu zdeniowanego przez
u»ytkownika.
3
Interfejsowi mo»na nadawa¢ nazwy za pomoc¡ parametru label, co jest przydatne
w przypadku dodawania kolejnych adresów do interfejsu (eth0:1, eth0:2,...). W ten
sposób do dodatkowych adresów mo»na si¦ tak»e odwoªywa¢ za pomoc¡ starszych
wersji polecenia ifcong.
2 Konguracja parametrów interfejsu
Dodanie adresu do interfejsu nie powoduje jego automatycznej aktywacji (aga UP)
Jest to zachowanie odmienne od znanego z j¡der 2.0 Do kongurowania tego { i innych
{ parametrów intefejsu sªu»y polecenie ip link:
ip link set INTERFEJS [ ( up | down ) ]
[ arp ( on | off ) ]
[ multicast ( on | off ) ]
[ ( txqueuelen | txqlen ) PKT ]
[ name NAZWA ]
Flagi up i down powoduj¡ odpowiednio aktywacj¦ lub deaktywacj¦ interfejsu.
W momencie aktywacji interfejsu kernel dodaje do tablicy rutingu trasy kieru-
j¡ce na ten interfejs pakiety do sieci do niego przyª¡czonej. Jest ona umieszczana
w specjalnej tablicy
local
. Warto zauwa»y¢, »e w j¡drach 2.0 i wcze±niejszych
tak¡ tras¦ trzeba byªo doda¢ explicite za pomoc¡ polecenie
route
, obecnie nie
jest to ju» konieczne.
Opcja arp wª¡cza lub wyª¡cza protokóª ARP dla danego interfejsu. Oznacza to,
»e interfejs nie b¦dzie odpowiadaª na pytania ARP, nawet je±li pytanie dotyczy
jego adresu IP.
4
Opcja multicast wª¡cza lub wyª¡cza obsªug¦ pakietów multicast na danym
interfejsie.
Parametr txqueulen (akceptowany jest skrót txqlen) okre±la wielko±¢ kolejki
wyj±ciowej danego interfejsu w pakietach. Wielko±¢ ta jest ustawiana przez sys-
tem automatycznie na podstawie domy±lnej warto±ci { innej dla ka»dego rodzaju
interfejsu { a zale»nej od jego przepustowo±ci. Z reguªy ustawienie domy±lne jest
3
Wi¦cej na temat zasi¦gów mo»na przeczyta¢ w Dodatku B.
4
Flag¦ NOARP maj¡ ustawion¡ automatycznie na przykªad intefejsy typu point-to-point (PPP,
SLIP), interfejs dummy itp.
4
wystarczaj¡ce, jego zmiana mo»e by¢ czasem korzystna na przykªad do popra-
wienia wspóªdzielenia wolnego ª¡cza PPP.
5
3 Komunikacja hostów w obr¦bie sieci lokalnej
3.1 Wprowadzenie
W IPv4 informacja o adresie w warstwie ª¡cza (link layer address) interfejsu posiada-
j¡cego dany adres IP jest uzyskiwana za pomoc¡ protokoªu ARP (Address Resolution
Protocol, RFC 826 [1]), korzystaj¡cego z rozgªaszania w warstwie ª¡cza i ró»ni¡cego
si¦ implementacj¡ dla ka»dego rodzaju sieci zycznej (ARP dla Ethernetu ró»ni si¦
od ARP dla ATM). W IPv6 sªu»y do tego protokóª wyszukiwania hostów s¡siaduj¡-
cych (Neighbor Discovery), oparty o pakiety multicast i dziaªaj¡cy nad warstw¡ IP.
Dokªadny jego opis { oraz terminologi¦ { mo»na znale¹¢ w RFC 2461 [6].
W zwi¡zku z tym, kernel tablica s¡siednich hostów, przechowywana przez kernel,
jest niezale»na od protokoªu i zawiera informacje uzyskane albo za pomoc¡ ARP albo
za pomoc¡ ND. Sªu»y ona tak»e jako baza danych do wprowadzonego jako standard
przez IPv6, ale dziaªaj¡cego tak»e dla IPv4, mechanizmu werykacji osi¡galno±ci ho-
sta (Neighbor Unreachability Discovery).
Tablica s¡siednich hostów zawiera nast¦puj¡ce informacje: adres IP hosta, adres
hosta w warstwie ª¡cza (link layer address) oraz aktualny stan rekordu. Dodatkowo s¡
w niej przechowywane takie informacje jak ilo±¢ odwoªa« do danego rekordu oraz czas
ostatniego odwoªania. Gªówne stany rekordów to: incomplete (»aden host nie odpo-
wiedziaª na pytanie o dany adres), reachable (host jest osi¡galny) oraz stale (host byª
osi¡galny, lecz rekord jest przeterminowany). Ponadto istniej¡ dwa stany specjalne:
noarp (rekord nie jest uaktualniany przez ARP ani ND) oraz permanent (rekord
dodany r¦cznie przez administatora). Oba nie s¡ nigdy zmieniane przez kernel, nie
jest w stosunku do nich u»ywany ARP, ND ani NUD, a rekordy w stanie
permanent
nie s¡ usuwane podczas okresowego czyszczenia tablicy (garbage collecting).
3.2 Obsªuga tablicy s¡siadów
Do manipulacji tablic¡ zawieraj¡c¡ informacje o adresach zycznych hostów i odpo-
wiadaj¡cych im adresach IP sªu»y polecenie ip neigh:
ip neigh ( add | del )
(ADRES [ lladdr LLADDR ] | proxy PROXY )
[ nud ( permanent | noarp | stale | reachable ) ]
dev INTERFEJS
5
Dla intefejsów PP wielko±ci¡ domy±ln¡ jest 10 pakietów. Alan Cox zaleca w takim wypadku
zmniejszenie tej warto±ci do 3.
5
[ Pobierz całość w formacie PDF ]