Portál AbcLinuxu, 22. května 2024 13:31

Linuxové DMZ - IV

26. 2. 2003 | Martin Pavlíček
Články - Linuxové DMZ - IV  

Protokoly rodiny TCP/IP: Historie, vrstvy, překlad sítových adres.

Teorie o protokolech

V tomto díle jsme si měli původně již říci něco konkrétního o nastavení routování pod Linuxem, ale abyste vše správně pochopili, je nutné si nejdříve povědět něco o protokolech, které jsou při tom používány (slouží ale i třeba při filtrování paketů). Kdo problematiku protokolů (zejména TCP/IP) zná, tak může tento díl směle vynechat.

TCP/IP (Transmission Control Protocol/Internet Protocol)

Problematika TCP/IP je poměrně obsáhlá a složitá. Já se pokusím z ní vytáhnout jen něco málo, co je pro nás nejdůležitější. Základní dokumentací, ve které jsou protokoly z rodiny TCP/IP popsány, jsou tzv. RFC (Request for Comments) dokumenty, kterých je velká spousta. Můžete je najít např. na www.faqs.org/rfcs.

Vznik rodiny protokolů TCP/IP

Hlavními tvůrci sady protokolů TCP/IP byli Vinton Cerf a Robert Kahn. Na tvorbě, která byla zahájena již v roce 1973, se podílela i řada dalších osobností. První testy se začaly provádět v roce 1975. V roce 1977 proběhla demonstrace práce sítě ARPANET pod řízením těchto protokolů.

Popis TCP/IP vychází z tzv. referenčního modelu OSI, který se skládá ze sedmi vrstev, a který si stručně popíšeme (od nejvyšší po nejnižší):

Aplikační Je nejvyšší vrstvou, na rozdíl od jiných nezajišťuje služby pro žádnou jinou, pomocí ní mohou uživatelé či aplikace odesílat data po síti.
Prezentační Zajišťuje obecný datový formát mezi různými platformami. Je zodpovědná za převod a překlad dat, kompresi a dekompresi, šifrování a dešifrování dat.
Relační Tato vrstva řídí a ustavuje datové přenosy mezi uzly na síti v podobě tzv. relací, což je dialog mezi prezentačními vrstvami na dvou či více systémech.
Transportní Zajišťuje přenos dat mezi komunikujícími procesy nebo programy spuštěnými na vzdálených počítačích. Protokoly této vrstvy jsou TCP a UDP. Pokud chceme dosáhnout spolehlivějšího přenosu dat, je vhodnější použít protokol TCP. Adresování dat je řešeno pomocí portů a jejich čísel.
Síťová Je pro nás velmi zajímavá, neboť zajišťuje komunikaci mezi dvěma hostitelskými počítači, logické adresování, doručování paketů, ale hlavně směrování.
Linková Tato vrstva řídí přístup k vlastnímu přenosovému médiu, převádí pakety na rámce a tak je připravuje k přenosu, přidává k rámcům hardwarové adresy výchozího i cílového počítače, počítá kontrolní součet. Na této úrovni pracují bridge a switche.
Fyzická Jak už název napovídá, do této vrstvy patří vše, čeho se můžeme dotknout :-) např. kabely, konektory atd.

Protokol IP (Internet Protocol)

Patří mezi nejzatíženější protokoly z rodiny TCP/IP. Všechny ostatní protokoly a aplikace běží nad ním a využívají ho pro logické adresování na úrovni síťové vrstvy. Tento protokol patří mezi tzv. nespojové, což znamená, že nezaručuje doručení datagramu na cílový počítač (o to se musí postarat protokoly vyšších vrstev, např. TCP). Jeho součástí je i protokol ICMP (Internet Control Message Protocol), který je popsán v dokumentu RFC 792, a slouží jako servisní a diagnostický protokol. Má několik typů z nichž nejznámější je "žádost o echo" (echo request), kterou používá např. utilita ping.

Adresování protokolu IP

V současnosti používaná verze protokolu IP má číslo 4 (IPv4). Používá tzv. 32 bitové adresování. Jak jste již možná slyšeli, tak dochází k tomu, že se začíná nedostávat IP adres, a proto vznikla nová verze protokolu IP označovaná jako IPv6, která rozšiřuje počet bitů z 32 na 128 (problém jejího "plošného" zavedení je ten, že by to vyžadovalo změnu adresování v celém internetu).

Pokud tedy zůstaneme u starší verze, tak IP adresy se dělí do tzv. tříd. Těchto tříd je pět a jsou označeny písmeny A, B, C, D, E s tím, že třídy D a E jsou neveřejné.

V následují tabulce vidíte rozdíly mezi IP adresami tříd A, B, C:

Atributy Třída A Třída B Třída C
Velikost sítí Určeno pro několik sítí s velkým množstvím počítačů. Sítě s vyšším počtem počítačů, např. středně velké firmy. Určeno pro menší sítě.
Rozsah hodnot 1 - 126 128 - 191 192 - 223
Počet bajtů vyjadřujících adresu sítě 1 2 3
Počet bajtů vyjadřujících adresu počítače 3 2 1
Maximální počet sítí 126 16 384 2 097 152
Max. počet PC v síti 16 777 214 65 534 254
Výchozí maska podsítě 255.0.0.0 255.255.0.0 255.255.255.0

Vyhrazené IP adresy

255.255.255.255 Slouží k vysílání zpráv do všech uzlů sítě.
0.0.0.0 Představuje neznámou síť nebo neznámý počítač nebo se používá v případech kdy počítač nezná svou adresu a dostane ji teprve přidělenou (např. od DHCP serveru).
127.0.0.1 Speciální adresa třídy A, která se používá pro tzv. loopback a mají ji všechny počítače využívající protokol IP.

Dále pak podle RFC 1918 jsou vyhrazeny IP adresy pro privátní (vnitřní) sítě. Tyto adresy můžete volně používat ve své lokální síti, nemusíte o ně nikde žádat, ale taky se nesmí dostat ven do internetu. Jsou to:

Třída A 10.0.0.0 10.255.255.255
Třída B 172.16.0.0 172.31.255.255
Třída C 192.168.0.0 192.168.255.255

Pokud budete používat tyto adresy (což lze jen doporučit) a budete chtít svou síť připojit na internet, budete potřebovat minimálně jednu veřejnou IP adresu, v tom případě pak zřejmě použijete tzv. službu NAT (viz dále).

Masky podsítě

Maska podsítě určuje, které bity v IP adrese tvoří adresu sítě či podsítě. Podle tohoto se stanovuje jakým způsobem se má dále datagram předávat. Jestliže odesílající počítač podle masky pozná, že cílový stroj leží ve stejném segmentu sítě (ve stejné podsíti), může datagram odeslat přímo. Pokud ale z masky odvodí, že cílový počítač leží v jiném segmentu, musí datagram odeslat na router, který se již dále postará o jeho doručení (či další předání).

NAT neboli překlad síťových adres

NAT (Network Address Translation) je služba většinou provozovaná na routeru a slouží k převodu vnitřních privátních adres na veřejné adresy, které je možno používat na internetu. Služba NAT může být používána jako statická nebo dynamická.

Statický NAT

Převádí adresy v poměru 1:1, musí se ručně nastavit na routeru. Prakticky to není moc použitelné, protože potřebujeme stejný počet vnějších i vnitřních adres.

Dynamický NAT

V tomto případě je již několik vnitřních adres mapováno na jednu vnější. Protože je pro převod všech interních adres použita pouze jedna vnější, musí administrátor určit jakým způsobem bude zajištěna identifikace každého počítače. To se dělá tak, že ke vnější adrese je přidáno také číslo portu transportní vrstvy odesílajícího počítače. Jakmile router namapuje vnitřní adresu na vnější, použije tuto vnější adresu v hlavičce IP datagramu a pošle jej dál (do internetu). Pokud cílový počítač odpoví, je po příchodu datagramu opět IP adresa přemapována a datagram je odeslán tomu počítači ve vnitřní síti, který si jej vyžádal.

Protokol TCP

Pracuje na úrovni transportní vrstvy (spolu s protokolem UDP). Slouží ke spolehlivému doručování paketů v sítích, k čemuž má potřebné funkce, které zajišťují dodržení pořadí paketů, platnost dat v paketu, opětovné zaslání paketu, který se po cestě ztratí či poškodí, atd. Další důležitou vlastnost je používání tzv. čísel portů, které umožňují přenos dat mezi určitými aplikacemi a ne pouze z jednoho počítače na druhý. Všechny tyhle vlastnosti jsou "zaplaceny" menší rychlostí tohoto protokolu, protože režie na správu informací o spojení, opětovné zasílání ztracených paketů atd. zabere dost času. Pokud nám jde více o rychlost než o spolehlivost, můžeme použít protokol UDP (User Datagram Protocol).

Routovací protokoly

Následující protokoly (existuje jich samozřejmě více; já jsem vybral dva nejčastěji používané) se používají při dynamickém routování (při statickém jich netřeba, protože všechny trasy se musí do routovací tabulky zadat ručně). Oba tyto protokoly patří do kategorie IGP, což jsou protokoly fungující uvnitř autonomních sítí (opakem jsou pak protokoly EGP, které slouží ke vzájemné komunikaci autonomních sítí).

RIP (Routing Information Protocol) existuje ve dvou verzích. Je definovaný v dokumentu RFC 1058 (v. 1) a RFC 2453 (v. 2). Jednoduchý, ale hojně používaný protokol, vhodný zejména do menších sítí (kde se tolik neprojevují jeho nevýhody). K aktualizaci routovací tabulky používá všesměrové vysílání, které provádí každých 30 sekund, a to bez ohledu na to, jestli k nějakým změnám došlo nebo ne. Pakety posílá po nejkratší trase, kterou určuje podle počtu "přeskoků", tzn. podle počtu routerů, přes které musí paket projít od zdrojového k cílovému počítači (nehledí na jiné kritéria jako je např. rychlost linek). Těchto přeskoků zvládá max. 15, cíl vzdálený 16 a více přeskoků považuje za nedosažitelný (paket zahodí a zpět pošle ICMP zprávu o nedosažitelnosti cíle).

OSPF (Open Shortest Path First), specifikován v dokumentu RFC 1247 a jeho náhradě RFC 1583, je novější než RIP, při routování hledá nejrychlejší trasu a ne pouze nejkratší jako to dělá RIP, navíc dokáže rozdělit provoz do více tras (říká se tomu "vyrovnávání zátěže"). Díky jeho vlastnostem je možno jej používat i ve velkých sítích.

Tak to by bylo pro dnešek vše. Je jasné, že o protokolech z rodiny TCP/IP by toho šlo napsat obrovské kvantum, takže doufám, že se mi podařilo "vytáhnout" alespoň to nejdůležitější (pokud máte nějaké připomínky či otázky, tak se svěřte v diskuzi a já se pokusím na ně odpovědět). Příště si ukážeme jak pod Linuxem nastavit routovací tabulku a řekneme si něco o jedné minidistribuci, která se příhodně jmenuje Linux Router Project (LRP).

Související články

Linuxové DMZ - I (Úvod do problematiky)
Linuxové DMZ - II (Zařízení v DMZ)
Linuxové DMZ - III (Modelové topologie)
Linuxové DMZ - V (Routery a minidistribuce LRP)
Linuxové DMZ - VI (Firewally)
Linuxové DMZ - VII (Paketové filtry)

Odkazy a zdroje

tcpdump - Anyzátor paketů pro příkazovou řádku
ethereal - Grafický analyzátor paketů
/etc/protocols

Seriál Linuxové DMZ (dílů: 9)

První díl: Linuxové DMZ - I, poslední díl: Linuxové DMZ - IX.
Předchozí díl: Linuxové DMZ - III
Následující díl: Linuxové DMZ - V

Další články z této rubriky

V sobotu se uskuteční konference CryptoFest
Pozor na androidové aplikace
Silent Circle představil bezpečný smartphone Blackphone 2
Android je bezpečnější, řada hrozeb však stále přetrvává
Avast varuje před nebezpečnými aplikacemi v Google Play

Diskuse k tomuto článku

Jiří Svoboda avatar 26.2.2003 10:05 Jiří Svoboda | skóre: 37 | blog: cat /dev/mind | Prostějov
Rozbalit Rozbalit vše Bacha na uchylnou terminologii CISCO
Odpovědět | Sbalit | Link | Blokovat | Admin
Jednou jsem mailem a posleze po telefonu diktoval jistemu cloveku, jak ma nastavit CISCO PIX firewall (on se tim zivi) a porad jsme se nemohli domluvit. Nakonec jsem rozhorcene zacal studovat manual a duvod nasel.
CISCO totiz preklad adres sice nazyva NAT, ale pro jeden konkretni pripad NATu to neplati. Pokud se preklada vice vnitrnich adres na jedinou internetovou, tak to podle nich neni NAT, ale PAT (Port Address Translation). Tak bacha na to!
26.2.2003 14:07 kmarty
Rozbalit Rozbalit vše Bacha na uchylnou terminologii CISCO
Aha, takze ne pres "ip nat ... overload", ktere mi na ciscu chodi uz nejakou tu chvili ? :-)
26.2.2003 14:12 Czerteak
Rozbalit Rozbalit vše Bacha na uchylnou terminologii CISCO
Ja myslim, ze na tohle jsou nejvetsi odbornici Pat a Mat... :-)))
26.2.2003 15:21 kolisko | skóre: 21 | blog: prace
Rozbalit Rozbalit vše Bacha na uchylnou terminologii CISCO
To je logicky, protoze to vlastne PAT opravdu je. Sice je to trochu zavadejici, ale opravdu se jedna o PAT (v kombinaci prekladu vsech src adres na jednu, popr. nejaky pool, takze v kombinaci s ne 1:1 NATem). Vnitrne totiz mapuje jednotlive adresy na nejake porty, ktere si drzi v pameti. Kdyz prijde navratova komunikace na dany port, podle toho ji posle prislusne IP adrese. V linuxu se tomu rika masquerading a tim je to naprosto jasny. kolisko
Jiří Svoboda avatar 27.2.2003 13:22 Jiří Svoboda | skóre: 37 | blog: cat /dev/mind | Prostějov
Rozbalit Rozbalit vše Bacha na uchylnou terminologii CISCO
Ja nerikam, ze to technicky neni preklad portu (PAT). Jenom je blby (zavadejici), ze jediny CISCO si na to vymyslelo tuto zkratku.
1.3.2003 12:45 Pavel
Rozbalit Rozbalit vše Bacha na uchylnou terminologii CISCO
Nejen Cisco, treba takový Checkpoint na svých firewallech používá své pojmy jako HIDE NAT a STATIC :) Stejně nejlepší je terminologie dnešních IPTABLES, tj. SNAT a DNAT ;-)
26.2.2003 15:35 fyzik
Rozbalit Rozbalit vše ach ty masky
Odpovědět | Sbalit | Link | Blokovat | Admin
Zdravim clanek pekny, ale v jednom jste me docela zklamali - od roku 1993 (sic!!!) byly nahrazeny tridy IP adres (A,B,C,D,E) obecnejsim CIDR, umoznijici efektivnejsi vyuziti IP prosotoru. Novejsi zapis je /, tedy napriklad 10.1.1.1/8 nebo 195.133.0.2/24. Pro dalsi studium doporucui napriklad http://public.pacbell.net/dedicated/cidr.html mejte se fajn -F
26.2.2003 15:38 fyzik
Rozbalit Rozbalit vše ach ty masky
ergh --> novejsi zapis je [IP]/[pocet jednicek v masce]
14.3.2003 14:16 PaJaSoft
Rozbalit Rozbalit vše TCP/IP vs. ISO/OSI
Odpovědět | Sbalit | Link | Blokovat | Admin
V posledni dobe to opravuji snad po desate, takze kratce... TCP/IP ma s ISO/OSI spolecneho velmi pramalo, jednak se Vam TCP/IP na ISO/OSI nepodari vubec namapovat (kam zaradite ARP, RARP, ICMP apod.?:-]) - a opacne taky ne!, jednak jsou to filosoficky odlisne proudy - asi jako closed a open source software... - oba resi sice to same, ale kazdy po svem.
14.3.2003 14:18 PaJaSoft
Rozbalit Rozbalit vše TCP/IP vs. ISO/OSI
Jeste drobnost, TCP/IP z ISO/OSI nevychazi a ani nemuze, protoze je jaxi drobet starsi nez neco jako navrh ISO/OSI vzniklo...

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.