abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 04:00 | Zajímavý článek

    Jiří Eischmann v příspěvku na svém blogu představuje typy, jak lépe chránit své soukromí na mobilním telefonu: "Asi dnes neexistuje způsob, jak se sledování vyhnout úplně. Minimálně ne způsob, který by byl kompatibilní s tím, jak lidé technologie běžně používají. Soukromí ovšem není binární věc, ale škála. Absolutního soukromí je dnes na Internetu dost dobře nedosažitelné, ale jen posun na škále blíže k němu se počítá. Čím méně dat se o vás posbírá, tím nepřesnější budou vaše profily a tím méně budou zneužitelné proti vám."

    Ladislav Hagara | Komentářů: 0
    dnes 00:22 | Nová verze

    Byla vydána nová stabilní verze 25.05 linuxové distribuce NixOS (Wikipedie). Její kódové označení je Warbler. Podrobný přehled novinek v poznámkách k vydání. O balíčky se v NixOS stará správce balíčků Nix.

    Ladislav Hagara | Komentářů: 0
    včera 18:11 | Nová verze

    Multiplatformní open source spouštěč her Heroic Games Launcher byl vydán v nové stabilní verzi 2.17.0 Franky (Mastodon, 𝕏). Přehled novinek na GitHubu. Instalovat lze také z Flathubu.

    Ladislav Hagara | Komentářů: 0
    včera 18:00 | Nová verze

    Organizace Apache Software Foundation (ASF) vydala verzi 26 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.

    Ladislav Hagara | Komentářů: 0
    včera 14:55 | IT novinky

    Klávesnice IBM Enhanced Keyboard, známá také jako Model M, byla poprvé představena v roce 1985, tzn. před 40 lety, s počítači IBM 7531/7532 Industrial Computer a 3161/3163 ASCII Display Station. Výročí připomíná článek na zevrubném sběratelském webu Admiral Shark's Keyboards. Rozložení kláves IBM Enhanced Keyboard se stalo průmyslovým standardem.

    Fluttershy, yay! | Komentářů: 4
    včera 12:00 | Nová verze

    Vyšlo Pharo 13 s vylepšenou podporou HiDPI či objektovým Transcriptem. Pharo je programovací jazyk a vývojové prostředí s řadou pokročilých vlastností.

    Pavel Křivánek | Komentářů: 1
    včera 04:00 | IT novinky

    Java má dnes 30. narozeniny. Veřejnosti byla představena 23. května 1995.

    Ladislav Hagara | Komentářů: 7
    22.5. 21:55 | IT novinky

    1. července Mozilla vypne službu Fakespot pro detekci podvodných recenzí v internetových obchodech. Mozilla koupila Fakespot v květnu 2023.

    Ladislav Hagara | Komentářů: 1
    22.5. 21:33 | IT novinky

    8. července Mozilla vypne službu Pocket (Wikipedie) pro ukládání článků z webu na později. Do 8. října si uživatelé mohou vyexportovat data. Mozilla koupila Pocket v únoru 2017. Několik měsíců byl Pocket integrovanou součástí Firefoxu.

    Ladislav Hagara | Komentářů: 5
    22.5. 13:22 | Upozornění

    Turris OS má aktuálně problém s aktualizací související s ukončením podpory protokolu OCSP u certifikační autority Let's Encrypt.

    Ladislav Hagara | Komentářů: 4
    Jaký je váš oblíbený skriptovací jazyk?
     (57%)
     (28%)
     (7%)
     (3%)
     (0%)
     (0%)
     (6%)
    Celkem 90 hlasů
     Komentářů: 6, poslední 22.5. 14:43
    Rozcestník

    Statické routování

    Mějme malou síť, na ní si polopaticky vysvětlíme principy statického routování.
    
    26.87.34.0/30        eth0/nat|------------|eth1            10.0.1.0/29
    |    inet   |----ethernet----|  router-1  |----ethernet----|  LAN-1  |
    \~~~~~~~~~~~/      ...34.2/30|------------|...1.1/29       \~~~~~~~~~/
                                   ath0|...4.1/30
                                       |
                                       |
                                    wifi-PtP - 10.0.4.0/30
                                       |
                                       |
                                   ath0|...4.2/30
    10.0.3.0/28         ...3.1/28|------------|...2.1/27       10.0.2.0/27
    | wifi-ap |-------koax-------|  router-2  |----ethernet----|  LAN-2  |
    \~~~~~~~~~/              eth0|------------|eth1            \~~~~~~~~~/
    
    Takže nejprve musíme spočítat kolik máme subnetů. Je jich tam 5. Kdo neví jak jsem k tomu došel, podívejte se dlouze na obrázek a pak to zkuste ještě jednou. Z počtu 5 jsou 4 subnety interní (to je ta naše síť) a jeden je externí, to je připojení od providera. Naše síť je maskovaná za NATem, takže s tím externím subnetem nebude moc práce.

    Při vysvětlování principu routování začnu možná překvapivě od konce, to jest od koncových klientských počítačů. Představme si PC ( pro názornost "pepův PC") v LAN-2, zde je jeho konfigurace (pro teď zcela zapomeneme na DNS):
    IP: 10.0.2.12
    maska: /27
    výchozí brána: 10.0.2.1
    
    Tak, výchozí brána je první věc kolem routování.

    PRAVIDLO 1: Brána je VŽDYCKY v lokálním subnetu.

    Výchozí brána je tedy cesta, kudy ven z lokálního subnetu. Představte si že jste se zavázanýma očima v místnosti a hledáte dveře ven. Výchozí brána říká, že dveře ven jsou např. po pravici. To znamená, že výchozí brána určuje, kudy ven ze současné místnosti. Pokud budete v té místnosti hledat dveře a někdo vám řekne kde jsou hlavní domovní dveře, je to samozřejmě k ničemu.

    Máme paket, který vznikl na pepově PC a jako cíl má IP 87.56.4.21 (nějaká vymyšlená IP v internetu). Nebohý paket neví kam má jít, protože kolem něho je síť 10.0.2.0/27. Použije tedy výchozí bránu a přeskočí na router-2, který je právě tou výchozí branou. Router tedy dostane paket, jehož cíl je opět 87.56.4.21. Router se podívá do své routovací tabulky. Jelikož IP 87.56.4.21 není žádný z jeho lokálních subnetů, router ten paket pošle opět na výchozí bránu, takže paket se dostane na router-1. Tam se situace opakuje, router vpodstatě neví kam s ním, proto ten paket pošle na výchozí bránu, což je další router, tentokrát už v síťi providera. V internetu routování funguje, takže paket dorazí kam má, vygeneruje se odpověď a paket putuje zpátky. Kabelem od providera paket přiteče do routeru-1. NAT změní jeho cílovou IP na 10.0.2.12. A co teď s ním.

    PRAVIDLO 2: Routování je vlastně postupné hopsání po routerech až k cíli.

    Pokud by jsme žádné další routovací pravidla nepřidávali, routery by ten paket poslal zpět na výchozí bránu (protože IP 10.0.2.12 nepasuje do žádného z routovacích pravidel mimo výchozí bránu). Provider by ho poslal zase k nám a takhle by tam chvíli hrál pink-ponk, než vyprší TTL. Pokud routování zkoušíme pingem, tak Linux bude psát "Time To Live exceeded" a wokýnka píšou "Hodnota TTL vypršela při přechodu".

    Na router-1 musíme přidat routovací pravidlo, aby ten router věděl, kudy vede cesta k subnetu 10.0.2.0/27.

    PRAVIDLO 3: Obecný zápis routovacího pravidla: subnet/maska -> brána, nebo také "chcete kam" -> "jděte tudy". Kombinace subnet/maska je vždy adresa sítě (nikoli počítače) a brána je naopak vždy adresa konkrétního routeru.

    Při představě toho domečku s místnostmi (aneb film Kostka) to vypadá takhle. Stojíte hned za hlavními dveřmi. Vidíte dvoje dveře - modré a červené, ale vy se chcete dostat do místnosti se zelenými dveřmi. Routovací pravidlo zní "zelená -> červená". Takže projdete červenými dveřmi a před vámi budou zase dvoje dveře - hnědé a fialové. Routovací pravidlo v této místnosti zní "zelená -> hnědá". Takže projdete hnědými dveřmi a najednou je před vámi zelená místnost, takže jsme došli kam potřebujeme.

    Toto byl příklad postupu přes 2 routery. Všimněte si, že cíl cesty je vždy stejný (např. jedeme do prahy) ale pokaždé se liší brána (nejprve vlevo, potom vpravo, pak rovně,...)

    Teď to vezmeme z pohledu IP paketu. Na router-1 musíme přidat následující 2 routovací pravidla:
    10.0.3.0/28 -> 10.0.4.2
    10.0.2.0/27 -> 10.0.4.2
    
    Ty pravidla říkají, kudy vede cesta k subnetům 10.0.2.0/27 a 10.0.3.0/28.

    Takže paket s cílem 10.0.2.12 přitekl do routeru a první co udělá je to, že začne postupně zvrchu procházet routovací tabulku. To jsou vlastně ty 2 pravidla co jsme přidali. Další pravidla v routovací tabulce vytvoří systém automaticky. Na konci routovací tabulky je ještě výchozí brána. Každý paket prochází tabulku zvrchu dokavad nenarazí na pravidlo kterým projde. Výchozí brána má na routeru-1 zápis "0.0.0.0/0 -> 26.87.34.1". Cíl "0.0.0.0/0" znamená doslova cokoliv, takovému pravidlu vyhoví jakákoliv IP adresa. Routovací tabulka je řazená podle masky subnetu. Na začátku jsou nejmenší subnety (velké číslo masky, např. /30 nebo /27) a dole nejvetší subnety (malé číslo masky, např /8 nebo /0). Začneme tedy procházet tabulku zvrchu. Pasuje IP 10.0.2.12 do subnetu 10.0.3.0/28? Nepasuje a proto se přistoupí k dalšímu řádku. Pasuje IP 10.0.2.12 do subnetu 10.0.2.0/27? Ano pasuje a proto router tento paket odešle na počítač s IP 10.0.4.2. Paket tedy doputuje na další router-2. A zase to samé. Cílová IP paketu je pořád 10.0.2.12 a zase se začne procházet routovací tabulka. Zde je však jeden rozdíl. Cílová síť 10.0.2.0/27 je připojená k routeru-2. Pro tento router je to tzv lokální subnet.

    LOKÁLNÍ SUBNET: subnety (sítě) připojené přímo k routeru na kterém je paket, o který teď jde, o kterém je řeč atd.

    VZDÁLENÝ SUBNET: takový subnet je připojený k nějakému jinému routeru. Buď přímo za sousedním routerem, nebo i za dvěma, třema routery, to je jedno. Router sám o sobě neví nic o existenci vzdálených subentů, musíme mu o nich říct - právě prostřednictvím routovacích pravidel do routovací tabulky.

    Operační systém sám naplní routovací tabulku záznamy o lokálních subnetech. Zápis těchto pravidel je trochu odlišný: "subnet -> rozhraní". Vpodstatě to znamená, že routovací pravidlo nemá určenou bránu, ale je definováno kterým síťovým rozhraním pakety vyleze ven.

    Takže paket s cílovou IP 10.0.2.12 dorazil na router-2 a zase prochází routovací tabulku až narazí na řádek "10.0.2.0/27 -> eth1". Paket tedy vyleze síťovkou eth1 ven. Tady se do toho ještě přimotá arp tabulka, ale to je jiná věc a funguje zcela automaticky bez jakéhokoliv zásahu administrátora. Switche po cestě už zařídí doručení paketu na cílový počítač s IP 10.0.2.12.

    Ukázka z routovací tabulky:
    $route (starší příkaz, ale přehlednější)
    10.193.120.72   10.193.124.130  255.255.255.248 UG    900    0        0 eth0 <-- přidané routovací pravidlo
    10.193.120.128  *               255.255.255.240 U     0      0        0 eth0 <-- záznam o lokálním subnetu na eth0
    
    $ip route show (ip r s - novější příkaz)
    10.193.64.64/27 via 10.193.64.162 dev eth4 <-- přidané routovací pravidlo
    10.193.64.32/27 dev eth3  proto kernel  scope link  src 10.193.64.33 <-- záznam o lokálním subnetu na eth3
    
    Takže resumé: Každý počítač i router musí mít nastavenou výchozí bránu. Brána je vždy router v lokálním subnetu kudy vede nejbližší cesta k internetu. Prostě skákáním přes výchozí brány se dostaneme do internetu. Samotné nastavení výchozích bran nám zajistí aby se paket z jakéhokoliv počítače dostal směrem ven, k hlavním vchodovým dveří. Je to podobné jako zelené tabulky "EXIT --->" v domech - značí nejbližší cestu ven.

    Naopak opačnou cestu od hlavních dveří do konkrétní kanceláře (subnetu) musíme přesně definovat. Vždy je to hop za hopem. Cíl cesty je vždy stejný a mění se brána, neboli adresa dalšího routeru.

    Routování není těžké na pochopení, velmi dobré je představit si že jsme paket, určit si nějaký cíl a na routerech koukat na routovací tabulky, zda je tam potřebnmý záznam, pomocí kterého dojdeme kam potřebujeme.

    --------------------

    Praxe:

    Na linuxu se statické routování zapisuje dvěma způsoby. Starší, již nedoporučovaný, ale přesto stále používaný je příkaz route. Používejte radši příkaz ip.
    router-1:
    route add default gw 26.87.34.1
    route add -net 10.0.3.0 netmask 255.255.255.240 gw 10.0.4.2
    route add -net 10.0.2.0 netmask 255.255.255.224 gw 10.0.4.2
    
    router-2:
    route add default gw 10.0.4.1
    
    Novější příkaz ip:
    
    router-1:
    ip route add default via 26.87.34.1
    ip route add 10.0.3.0/28 via 10.0.4.2
    ip route add 10.0.2.0/27 via 10.0.4.2
    
    router-2:
    ip route add default via 10.0.4.1
    
    --------------------

    Kombinace statického a dynamického routování:

    Pokud používáte na síti dynamické routování (typicky OSPF z balíku Quagga), tak v žádném případě nepřidávejte statické routy výše uvedenými příkazy. Ono by to sice fungovalo, ale udělali by jste si v tom pěkný zmatek. Statické routy lze zapsat do konfiguračního souboru zebra.conf. Spuštění démonu zebra zajistí použití zapsaných pravidel. Toto se používá pro naroutování subnetů za routery, na kterých neběží Quagga - typicky domácí wifi routery (bez NATu samozřejmě) u uživatelů sítě. Syntaxe je jednoduchá: "ip route cíl/maska brána" - příklady nerespektují výše uvedené rozdělení IP adres:
    !routa k frantovi domu
    ip route 10.0.1.0/27 10.2.9.4
    !výchozí brána
    ip route 0.0.0.0/0 212.87.52.1
    
    Pokud na jednom routeru rozjedete quaggu a všechno routování provedete tímto statickým způsobem, tak to sice bude fungovat, ale s dynamickým routováním to nemá nic společného.

    Dokument vytvořil: Zdeněk Štěpánek, 13.4.2008 22:35 | Poslední úprava: Smajchl, 2.6.2008 17:29 | Další přispěvatelé: Zdeněk Štěpánek, krazy | Historie změn | Zobrazeno: 24877×

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.