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 17:22 | IT novinky

    Josef Průša oznámil zveřejnění kompletních CAD souborů rámů tiskáren Prusa CORE One a CORE One L. Nejsou vydány pod obecnou veřejnou licenci GNU ani Creative Commons ale pod novou licencí OCL neboli Open Community License. Ta nepovoluje prodávat kompletní tiskárny či remixy založené na těchto zdrojích.

    Ladislav Hagara | Komentářů: 2
    včera 17:00 | Komunita

    Nový CEO Mozilla Corporation Anthony Enzor-DeMeo tento týden prohlásil, že by se Firefox měl vyvinout v moderní AI prohlížeč. Po bouřlivých diskusích na redditu ujistil, že v nastavení Firefoxu bude existovat volba pro zakázání všech AI funkcí.

    Ladislav Hagara | Komentářů: 0
    včera 10:11 | IT novinky

    V pořadí šestou knihou autora Martina Malého, která vychází v Edici CZ.NIC, správce české národní domény, je titul Kity, bity, neurony. Kniha s podtitulem Moderní technologie pro hobby elektroniku přináší ucelený pohled na svět současných technologií a jejich praktické využití v domácích elektronických projektech. Tento knižní průvodce je ideální pro každého, kdo se chce podívat na současné trendy v oblasti hobby elektroniky, od

    … více »
    Ladislav Hagara | Komentářů: 1
    včera 03:11 | Komunita

    Linux Foundation zveřejnila Výroční zprávu za rok 2025 (pdf). Příjmy Linux Foundation byly 311 miliónů dolarů. Výdaje 285 miliónů dolarů. Na podporu linuxového jádra (Linux Kernel Project) šlo 8,4 miliónu dolarů. Linux Foundation podporuje téměř 1 500 open source projektů.

    Ladislav Hagara | Komentářů: 0
    včera 02:11 | Zajímavý článek

    Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.12.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.

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

    OpenZFS (Wikipedie), tj. implementace souborového systému ZFS pro Linux a FreeBSD, byl vydán ve verzi 2.4.0.

    Ladislav Hagara | Komentářů: 0
    včera 01:00 | IT novinky

    Kriminalisté z NCTEKK společně s českými i zahraničními kolegy objasnili mimořádně rozsáhlou trestnou činnost z oblasti kybernetické kriminality. V rámci operací OCTOPUS a CONNECT ukončili činnost čtyř call center na Ukrajině. V prvním případě se jednalo o podvodné investice, v případě druhém o podvodné telefonáty, při kterých se zločinci vydávali za policisty a pod legendou napadeného bankovního účtu okrádali své oběti o vysoké finanční částky.

    Ladislav Hagara | Komentářů: 4
    18.12. 14:44 | IT novinky

    Na lepší pokrytí mobilním signálem a dostupnější mobilní internet se mohou těšit cestující v Pendolinech, railjetech a InterPanterech Českých drah. Konsorcium firem ČD - Telematika a.s. a Kontron Transportation s.r.o. dokončilo instalaci 5G opakovačů mobilního signálu do jednotek Pendolino a InterPanter. Tento krok navazuje na zavedení této technologie v jednotkách Railjet z letošního jara.

    Ladislav Hagara | Komentářů: 6
    18.12. 12:22 | Bezpečnostní upozornění

    Rozšíření webového prohlížeče Urban VPN Proxy a další rozšíření od stejného vydavatele (např. 1ClickVPN Proxy, Urban Browser Guard či Urban Ad Blocker) od července 2025 skrytě zachytávají a odesílají celé konverzace uživatelů s AI nástroji (včetně ChatGPT, Claude, Gemini, Copilot aj.), a to nezávisle na tom, zda je VPN aktivní. Sběr probíhá bez možnosti jej uživatelsky vypnout a zahrnuje plný obsah dotazů a odpovědí, metadata relací i

    … více »
    Ladislav Hagara | Komentářů: 5
    18.12. 05:22 | Zajímavý software

    QStudio, tj. nástroj pro práci s SQL podporující více než 30 databází (MySQL, PostgreSQL, DuckDB, QuestDB, kdb+, …), se stal s vydáním verze 5.0 open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí Apache 2.0.

    Ladislav Hagara | Komentářů: 6
    Kdo vám letos nadělí dárek?
     (13%)
     (0%)
     (0%)
     (0%)
     (6%)
     (6%)
     (19%)
     (31%)
     (25%)
    Celkem 16 hlasů
     Komentářů: 11, poslední dnes 07:16
    Rozcestník

    Jak zprovoznit veřejnou IP adresu ve vnitřní síti (nebo DMZ)?

    Především bychom se měli vždy zamyslet, zda má být počítač s veřejnou IP adresou opravdu ve vnitřní síti. Ve většině případů je totiž vhodnější jej umístit na samostatný segment, kterému obvykle říkáme demilitarizovaná zóna. Protože je ale z hlediska řešení problému víceméně jedno, zda je veřejná IP adresa ve vnitřní síti nebo v demilitarizované zóně, můžeme od toho odhlédnout. Řešení existuje několik, řazena jsou podle jejich vhodnosti (sestupně).

    samostatný rozsah

    Ideální situace nastává v případě, že máme od poskytovatele k dispozici kromě vnější IP adresy našeho routeru ještě rozsah IP adres, který použijeme pro DMZ (nebo vnitřní síť). Řekněme, že adresa našeho vnějšího rozhraní eth0 je 1.2.3.4, délka prefixu 26 (maska 255.255.255.192) a pro DMZ (rozhraní eth1) jsme dostali rozsah 1.2.4.128/28; default gateway má adresu 1.2.3.1. Pak není potřeba provádět vůbec žádná speciální opatření, pouze na routeru nastavíme adresy a rozsahy oběma rozhraním a default gateway podle poskytovatele:

      ip addr add 1.2.3.4/26 brd + dev eth0
      ip addr add 1.2.4.129/28 brd + dev eth1
      ip route add default via 1.2.3.1
    

    Nesmíme samozřejmě zapomenout povolit potřebnou komunikaci v konfiguraci paketového filtru a povolit IP forwarding. Při použití veřejných IP adres přímo ve vnitřní síti funguje vše úplně stejně, není problém používat na stejném fyzickém segmentu současně dva různé rozsahy IP adres.

    Jakkoli je toto řešení technicky ideální, v praxi obvykle nedostaneme k dispozici celý rozsah IP adres, který bychom mohli použít pro DMZ nebo lokální síť. Častěji dostaneme např. dvě IP adresy z téhož rozsahu. I v případě, že máme samostatný rozsah, musíme se často uchýlit k náhradním řešením, protože vnější adresu spotřebuje zařízení, které nemáme pod kontrolou nebo které můžeme konfigurovat pouze částečně (ADSL modem/router, jiný embedded router apod.). U ostatních variant budeme tedy předpokládat, že kromě vnější adresy 1.2.3.4 máme k dispozici pouze jednu další adresu 1.2.3.5 (máme-li jich více, bude postup podobný).

    proxy ARP

    Obecně je problém v tom, že sice můžeme na routeru napsat

      ip route add 1.2.3.5 dev eth1
    

    a router bude pakety pro 1.2.3.5 směrovat správně do DMZ, ale tyto pakety se k nám ve skutečnosti nedostanou, protože gateway poskytovatele neví, že má tyto pakety směrovat na 1.2.3.4 a očekává 1.2.3.5 přímo ve vnějším segmentu. Proto pošle ARP dotaz pro zjištění odpovídající MAC adresy, ale na ten nikdo neodpoví. Řešením by mohlo být přidání položky pro 1.2.3.5 do směrovací položky gatewaye poskytovatele, ale jednak to obvykle domluvit nejde, jednak by to neřešilo provoz z ostatních počítačů ve stejném segmentu (např. další zákazníci poskytovatele).

    Ihned vidíme, že pokud bychom router donutili, aby na ARP dotazy na adresu 1.2.3.5 odpovídal MAC adresou svého rozhraní eth0, byl by problém vyřešen. "svět" by potom doručoval pakety pro 1.2.3.5 na router a ten by je dále odsměroval do DMZ. To se skutečně dá zařídit, a to dvěma způsoby. Nejprve nastavme počítač v DMZ (budeme mu říkat server) na 1.2.3.5/26 a na routeru přidejme

      ip addr add 1.2.3.4 dev eth1
      ip route add 1.2.3.5 dev eth1
    

    Ano, v rozporu se zvyklostmi lze skutečně nastavit stejnou IP adresu dvěma různým rozhraním. Příchozí pakety jsou tak jako tak akceptovány jako příchozí, jakmile jejich cílová adresa odpovídá některé z našich IP adres, a chování odchozích paketů není definováno přiřazenými adresami, ale směrovací tabulkou, kde má nově přidaná položka pro 1.2.3.5 (s prefixem 32) vyšší prioritu než automatická položka pro 1.2.3.0/26.

    První variantou, jak realizovat proxy ARP je přidání speciální proxy položky do ARP tabulky routeru:

      ip neigh add proxy 1.2.3.5 dev eth0
    

    Ta způsobí, že přijde-li ARP dotaz na 1.2.3.5 na interface eth0, odpoví router MAC adresou tohoto svého rozhraní. V novějších verzích jádra lze ale tento proces zautomatizovat tak, aby nebylo nutné explicitně zadávat adresy, za které se má router vydávat. Zapneme-li proxy na obou rozhraních

      echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
      echo 1 > /proc/sys/net/ipv4/conf/eth1/proxy_arp
    

    bude se na každém z nich router vydávat za adresy, které jsou fakticky "na druhé straně". Vše pak bude fungovat symetricky, takže bychom dokonce serveru mohli default gateway nastavit na 1.2.3.1, z praktického hlediska je ale vhodnější použít 1.2.3.4.

    bezstavový NAT 1:1

    Další možností je použití bezstavového překladu adres pomocí routeru. Na rozdíl od obyklejšího překladu adres (realizovaného netfilterem) je bezstavový překlad výrazně méně náročný na zdroje routeru, protože není potřeba udržovat tabulky překládaných "spojení" (flows) a vyhledávat v nich jednotlivé pakety (proto se také někdy místo stateless NAT používá termín fast NAT). Za to ale samozřejmě platíme tím, že musíme explicitně definovat i pravidla, která by při stavovém překladu jádro provádělo automaticky. Dalším problémem je skutečnost, že v jádrech řady 2.6 stateless nat nefungoval a ve verzi 2.6.8 byl proto odstraněn. Alternativou by zde mohlo (? *FIXME*) být použití akce NETMAP netfilteru.

    U řešení založených na překladu adres nemá server nastavenou veřejnou IP, pod kterou se na něj přistupuje z vnější sítě, ale nějakou náhradní. To je také největší slabinou tohoto řešení - potřebujeme-li komunikační protokoly, které kolidují s překladem adres, např. ESP/AH (IPsec), nelze toto řešení příliš snadno aplikovat. Pro DMZ v tomto případě musíme použít nějaký náhradní rozsah, předpokládejme, že to bude 10.20.30.0/24, router bude mít adresu 10.20.30.1, server 10.20.30.5.

    Bezstavový NAT aktivujeme přidáním speciální položky typu nat do směrovací tabulky (tyto položky jsou defaultně přidávány do tabulky local, podobně jako položky typu local nebo broadcast):

      ip route add nat 1.2.3.5 via 10.20.30.5
    

    Taková položka způsobí tři věci: za prvé bude na všech rozhraních kromě eth1 router odpovídat na ARP dotazy na 1.2.3.5 MAC adresou příslušného svého rozhraní (podobně jako u proxy ARP), za druhé u paketů s touto cílovou adresou přepíše cílovou adresu na 10.20.30.5 a za třetí pak tyto pakety odsměruje obvyklým způsobem (tedy na eth1). Tímto způsobem je možné překládat (mapovat) i celé rozsahy, pouze bychom místo 1.2.3.5 napsali např. 1.2.3.8/28 (jako cíl se píše pouze nejnižší adresa cílového rozsahu, prefix musí být stejný - mapujeme vždy 1:1).

    Protože je ale tato forma překladu adres bezstavová, nemůžeme se (jako u DNAT v netfilteru) spoléhat na automatický překlad paketů v opačném směru. Stavové informace ovšem nepotřebujeme, protože u překladu 1:1 je i zpětný překlad možno realizovat pouze na základě paketu samotného. Zde ale potřebujeme překládané pakety rozlišit podle zdrojové adresy, místo položky proto definujeme pravidlo (rule), např:

      ip rule add priority 1235 from 10.20.30.5 nat 1.2.3.5
    

    Ze stejného důvodu ale musíme navíc dávat pozor, abychom zdrojovou adresu překládali pouze u paketů, u kterých je to žádoucí. Pokud by totiž na rozhraní eth2 byl klient, který by přistupoval přímo na adresu 10.20.30.5, výše uvedené pravidlo by u odpovědi přeložilo zdrojovou adresu, což by byla chyba. Bylo by proto třeba buď i pro komunikaci z vnitřní sítě používat adresu 1.2.3.5, nebo upravit pravidla tak, aby se překlád vztahoval jen na pakety "do světa".

    stavový překlad netfilterem

    Poslední (a z již uvedených důvodů nejméně žádoucí) variantou je klasický stavový překlad cílové adresy pomocí akce DNAT netfilteru. V konfiguraci z předchozí sekce by řešení vypadalo takto:

      ip addr add 1.2.3.5/26 brd + dev eth0
      iptables -t nat -A PREROUTING -i eth0 -d 1.2.3.5 -j DNAT --to 10.20.30.5
    

    Navíc je samozřejmě třeba povolit příslušné pakety v řetězci FORWARD tabulky filter - ale to je třeba i u předchozích řešení (jen je třeba dávat pozor na to, že u prvních dvou je cílová adresa 1.2.3.5, zatímco u druhých dvou 10.20.30.5). O překlad (a detekci) "zpětných" paketů se postará netfilter automaticky, ale to nás samozřejmě něco stojí. Proto je toto řešení nevýhodné zejména při větším počtu procházejících spojení a slabším hardware routeru. Kromě toho samozřejmě přebírá všechny nevýhody plynoucí z překladu adres.

    NAT redirect "gotcha"

    Nedbáme-li dobře míněných varování a umístíme server do vnitřní sítě, můžeme se u řešení založených na překladu adres dočkat nemilého překvapení, že klienti z vnitřní sítě se na server (použijí-li překládanou veřejnou adresu) nedostanou. Ve skutečnosti je ale problém trochu složitější, musíme si proto nejprve rozebrat, co se v takovém případě na síti vlastně děje.

    Představme si paket odeslaný na vnější adresu 1.2.3.5 z lokální adresy 10.20.30.99: tento paket přijde na gateway, ta mu přepíše cílovou adresu na 10.20.30.5 a pošle ho do vnitřní sítě, kde je řádně doručen na server. Zdrojová adresa je ale pořád 10.20.30.99, což je kámen úrazu: jakmile totiž server pošle odpověď, ta je doručena klientovi přímo (ne přes gateway), protože server i klient jsou ve stejném segmentu. Proto klient odpověď sice dostane, ale ta má pořád zdrojovou adresu 10.20.30.5, takže ji klient nepovažuje za odpověď na svůj paket, který posílal na 1.2.3.5

    Existují dvě možná řešení. Za prvé nenechat klienty z vnitřní sítě, aby používali "vnější" adresu 1.2.3.5 ale skutečnou adresu 10.20.30.5. Přistupují-li klienti k serveru přes jméno, lze to řešit tak, že klientům z vnitřní sítě příslušné jméno přeložíme na adresu 10.20.30.5; je-li náš nameserver zároveň nameserverem pro Internet (kde musí být toto jméno překládáno na 1.2.3.5, lze v případě BINDu použít mechanismus tzv. view.

    Druhým řešením je nechat sice pakety putovat přes gateway, ale kromě cílové adresy jim přeložit i zdrojovou (na její vnitřní adresu, podobně jako u maškarády). Tím je zaručeno, že i odpověď půjde zpět přes gateway, kde budou obě adresy přeloženy zpět. Takové řešení sice funguje, ale je asi patrné, že tato varianta není příliš elegantní ani efektivní. Konfigurace, kdy spolu dva počítače na témže segmentu komunikují přes třetí, který paketům překládá zdrojovou i cílovou adresu, očividně není optimální. Navíc má ještě jednu podstatnou nevýhodu: server není schopen rozlišit jednotlivé klienty z vnitřní sítě, jako adresa klienta bude v logu vždy adresa gatewaye.

    Neměli bychom ale zapomínat ještě na třetí, obecně nejvhodnější, řešení: respektovat pravidlo, že server přístupný z Internetu nepatří do vnitřní sítě, ale do samostatného segmentu, demilitarizované zóny. Často je totiž místo krkolomných konstrukcí s cílem vyhovět přesně zadání vhodnější analyzovat, zda jsou všechny požadavky zadání opravdu rozumné.

    Související dokumenty

    LARTC Howto (externí dokument)
    dokumentace iproute2 (externí dokument)
    proxy ARP - ručně (externí dokument)
    proxy ARP - automaticky (externí dokument)
    stateless NAT (externí dokument)
    Netfilter NAT HowTo (externí dokument)

    Dokument vytvořil: Michal Kubeček, 27.12.2005 15:39 | Poslední úprava: Chulda, 5.1.2010 10:37 | Další přispěvatelé: Michal Kubeček | Historie změn | Zobrazeno: 14227×

    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.