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í
×
    včera 22:22 | Nová verze

    Byla vydána nová verze 9.7 multiplatformní digitální pracovní stanice pro práci s audiem (DAW) Ardour. Přehled novinek, vylepšení a oprav v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 18:22 | Komunita

    Vývojáři webového prohlížeče Ladybird dnes oznámili, že mění způsob vývoje. S blížícím se vydáním alfa verze přestávají přijímat veřejné pull requesty. Všechny otevřené veřejné pull requesty budou uzavřeny. Tým nedokáže garantovat bezpečnost AI generovaných pull requestů.

    Ladislav Hagara | Komentářů: 2
    včera 17:33 | Zajímavý software

    OpenLogi (GitHub) je open source náhrada aplikace Logi Options+ pro přizpůsobení myší od společnosti Logitech. Zatím běží pouze na macOS.

    Ladislav Hagara | Komentářů: 0
    včera 04:33 | Nová verze

    Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za květen (YouTube).

    Ladislav Hagara | Komentářů: 9
    4.6. 11:22 | Bezpečnostní upozornění

    Úřad pro ochranu osobních údajů řeší desítky stížností na jednotné měsíční hlášení zaměstnavatele, které stát spustil počátkem dubna. Systém, jenž má firmám odlehčit od desítek formulářů, nejenže výrazně zatížil jejich účetní oddělení, ale docházelo v něm i k únikům osobních dat zaměstnanců k firmám, kde nepracovali. Podle ministerstva práce a sociálních věcí stála za problémem technická chyba. „Incident se týkal několika stovek

    … více »
    Ladislav Hagara | Komentářů: 15
    4.6. 10:46 | Nová verze

    Byla vydána (𝕏, Bluesky) nová verze 22.0.0 open source webového aplikačního frameworku Angular (Wikipedie). Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    4.6. 04:33 | Nová verze

    Vim Classic byl vydán ve verzi 8.3. Drew DeVault oznámil tento fork editoru Vim (verze 8.2.0148, tj. těsně před zavedením Vim9 skriptování) v březnu letošního roku. Důvodem forku bylo, že vývojáři editorů Vim a Neovim začali při vývoji využívat LLM.

    Ladislav Hagara | Komentářů: 7
    4.6. 03:44 | Komunita

    Open source konference DevConf.CZ 2026 proběhne 18. a 19. června v Brně na FIT VUT. Publikován byl program a spuštěna byla registrace.

    Ladislav Hagara | Komentářů: 0
    3.6. 19:44 | Nová verze

    Společnost JetBrains uvolnila verzi 2 svého open-source velkého jazykového modelu (LLM) pro vývojáře Mellum.

    Ladislav Hagara | Komentářů: 0
    3.6. 14:44 | IT novinky

    Probíhá konference Microsoft Build 2026. Microsoft představuje své novinky: kvantový čip Majorana 2, Surface Laptop Ultra a Surface RTX Spark Dev Box s NVIDIA RTX Spark, Intelligent Terminal, Coreutils for Windows (fork Rust Coreutils), AI modely MAI, AI agenta Scout, platformu pro agent-first zařízení Project Solara, …

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (12%)
     (8%)
     (2%)
     (15%)
     (31%)
     (3%)
     (6%)
     (3%)
     (15%)
     (26%)
    Celkem 1833 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    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: 25203×

    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.