abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 21:22 | Zajímavý software

    TerminalTextEffects (TTE) je engine pro vizuální efekty v terminálu. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

    Ladislav Hagara | Komentářů: 0
    dnes 17:11 | Pozvánky

    Od čtvrtka 30. 5. do soboty 1. 6. lze v Praze navštívit Veletrh vědy, tj. největší populárně naučnou akci v České republice, kterou každoročně od roku 2015 pořádá Akademie věd ČR. Vstup zdarma.

    Ladislav Hagara | Komentářů: 3
    dnes 14:11 | Komunita

    Canonical představil Ubuntu optimalizované pro jednodeskový počítač s RISC-V procesorem Milk-V Mars.

    Ladislav Hagara | Komentářů: 0
    včera 21:22 | Nová verze

    Armbian, tj. linuxová distribuce založená na Debianu a Ubuntu optimalizovaná pro jednodeskové počítače na platformě ARM a RISC-V, ke stažení ale také pro Intel a AMD, byl vydán ve verzi 24.5.1 Havier. Přehled novinek v Changelogu.

    Ladislav Hagara | Komentářů: 0
    včera 19:44 | IT novinky

    Společnost xAI založena Elonem Muskem a stojící za AI LLM modelem Grok získala investici 6 miliard dolarů.

    Ladislav Hagara | Komentářů: 1
    včera 15:44 | IT novinky

    Finálový zápas mistrovství světa v ledním hokeji přinesl nový rekord NIX.CZ (𝕏): "Dosavadní absolutní maximum našeho propojovacího uzlu bylo překonáno v čase 21:10, kdy jsme při přenosu dat dosáhli 3,14 Tbps. Je třeba také doplnit, že po deváté hodině večerní byly na maximu i ostatní datové přenosy nesouvisející s hokejovým šampionátem".

    Ladislav Hagara | Komentářů: 3
    včera 15:11 | Pozvánky

    Přihlaste svou přednášku na další ročník konference LinuxDays, který proběhne 12. a 13. října na FIT ČVUT v pražských Dejvicích. CfP poběží do konce prázdnin, pak proběhne veřejné hlasování a výběr přednášek.

    Petr Krčmář | Komentářů: 0
    25.5. 19:00 | Zajímavý projekt

    Na crowdsourcingové platformě Crowd Supply byla spuštěna kampaň na podporu open source biometrického monitoru ve tvaru hodinek HealthyPi Move. Cena je 249 dolarů a plánovaný termín dodání listopad letošního roku.

    Ladislav Hagara | Komentářů: 13
    24.5. 22:22 | Upozornění Ladislav Hagara | Komentářů: 21
    24.5. 17:44 | Nová verze

    Firma Murena představila /e/OS verze 2.0. Jde o  alternativní sestavení Androidu bez aplikací Google. Mezi novinkami je podrobnější nastavení ochrany soukromí před sledováním aplikacemi. Murena prodává několik smartphonů s předinstalovaným /e/OS (Fairphone, repasovaný Google Pixel 5).

    Fluttershy, yay! | Komentářů: 0
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (89%)
     (3%)
     (4%)
     (4%)
    Celkem 933 hlasů
     Komentářů: 16, poslední 14.5. 11:05
    Rozcestník

    Souvislost ip_conntrack_tcp_timeout_established s DNATem

    2.3.2009 16:15 | Přečteno: 1089× | GNU/Linux | poslední úprava: 3.3.2009 15:06

    Děkuji všem za pomoc, problém již považuji za vyřešený.

    Dovoluji si zneužít blog pro jistý dotaz (a související brainstorming). Zjistil jsem, že SSH spojení přesměrované pomocí DNATu do DMZ po zhruba 20 minutách neaktivity zamrzne. Tento problém jsem lokalizoval na ADSL router (nějaký starý Linux) a jeho conntrack, který má nastaveno ip_conntrack_tcp_timeout_established na 1200 sekund. Není mi ovšem jasné, proč je jeho conntrack v tomto případě vůbec relevantní, když přesměrování je nastaveno přes DNAT v řetězci PREROUTING.

    Nastavení iptables přikládám:

    # iptables -L -n -v
    Chain INPUT (policy ACCEPT 69481 packets, 4188K bytes)
     pkts bytes target     prot opt in     out     source               destination         
    15616  911K CFG        tcp  --  *      *       10.0.0.254           0.0.0.0/0          tcp dpt:80 Records Packet's Source Interface 
    
        0     0 CFG        tcp  --  *      *       10.0.0.254           0.0.0.0/0          tcp dpt:443 Records Packet's Source Interface 
    
       89 17248 ACCEPT     all  --  ppp0   *       0.0.0.0/0            0.0.0.0/0          state RELATED,ESTABLISHED 
      546 15288 ACCEPT     icmp --  ppp0   *       0.0.0.0/0            0.0.0.0/0          icmp type 8 state NEW 
      977  126K DROP       all  --  ppp0   *       0.0.0.0/0            0.0.0.0/0          
    
    Chain FORWARD (policy ACCEPT 557K packets, 62M bytes)
     pkts bytes target     prot opt in     out     source               destination         
     713K  764M ACCEPT     all  --  ppp0   *       0.0.0.0/0            0.0.0.0/0          state RELATED,ESTABLISHED 
     7349  441K ACCEPT     tcp  --  ppp0   *       0.0.0.0/0            10.0.0.254         tcp dpt:22 
        3   180 ACCEPT     tcp  --  ppp0   *       0.0.0.0/0            10.0.0.254         tcp dpt:465 
        5   300 ACCEPT     tcp  --  ppp0   *       0.0.0.0/0            10.0.0.254         tcp dpt:993 
        2   120 ACCEPT     tcp  --  ppp0   *       0.0.0.0/0            10.0.0.254         tcp dpt:995 
      133  7164 ACCEPT     tcp  --  ppp0   *       0.0.0.0/0            10.0.0.254         tcp dpt:5269 
       13   780 ACCEPT     tcp  --  ppp0   *       0.0.0.0/0            10.0.0.254         tcp dpt:5222 
        4   240 ACCEPT     tcp  --  ppp0   *       0.0.0.0/0            10.0.0.254         tcp dpt:5223 
       31  1672 ACCEPT     tcp  --  ppp0   *       0.0.0.0/0            10.0.0.254         tcp dpt:25 
        6   340 ACCEPT     tcp  --  ppp0   *       0.0.0.0/0            10.0.0.254         tcp dpt:443 
      457 27056 ACCEPT     tcp  --  ppp0   *       0.0.0.0/0            10.0.0.254         tcp dpt:80 
    17792 1066K TCPMSS     tcp  --  *      ppp0    0.0.0.0/0            0.0.0.0/0          tcp flags:0x06/0x02 TCPMSS clamp to PMTU 
        0     0 DROP       all  --  ppp0   *       0.0.0.0/0            0.0.0.0/0          
    
    Chain OUTPUT (policy ACCEPT 67850 packets, 8572K bytes)
     pkts bytes target     prot opt in     out     source               destination         
    11029 1213K DROP       icmp --  *      ppp0    0.0.0.0/0            0.0.0.0/0          icmp type 3 
        1    56 DROP       icmp --  *      ppp0    0.0.0.0/0            0.0.0.0/0          state INVALID

    A ještě tabulka nat:

    # iptables -t nat -L -n -v
    Chain PREROUTING (policy ACCEPT 40082 packets, 2518K bytes)
     pkts bytes target     prot opt in     out     source               destination         
     7349  441K DNAT       tcp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0          tcp dpt:22 to:10.0.0.254:22 
        3   180 DNAT       tcp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0          tcp dpt:465 to:10.0.0.254:465 
        5   300 DNAT       tcp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0          tcp dpt:993 to:10.0.0.254:993 
        2   120 DNAT       tcp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0          tcp dpt:995 to:10.0.0.254:995 
      133  7164 DNAT       tcp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0          tcp dpt:5269 to:10.0.0.254:5269 
       13   780 DNAT       tcp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0          tcp dpt:5222 to:10.0.0.254:5222 
        4   240 DNAT       tcp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0          tcp dpt:5223 to:10.0.0.254:5223 
       31  1672 DNAT       tcp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0          tcp dpt:25 to:10.0.0.254:25 
        6   340 DNAT       tcp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0          tcp dpt:443 to:10.0.0.254:443 
      458 27116 DNAT       tcp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0          tcp dpt:80 to:10.0.0.254:80 
    
    Chain POSTROUTING (policy ACCEPT 15861 packets, 961K bytes)
     pkts bytes target     prot opt in     out     source               destination         
    37691 2325K MASQUERADE  all  --  *      ppp0    0.0.0.0/0            0.0.0.0/0          
    
    Chain OUTPUT (policy ACCEPT 14 packets, 990 bytes)
     pkts bytes target     prot opt in     out     source               destination

    Pokud si to správně pamatuji, tcpdump odhalil, že keep alive pakety jdou nejprve zevnitř sítě ven, ale na vnější stroj se nedostanou. Poté začne keep alive pakety vysílat vnější stroj, ale domů se nedostane (to je mi jasné, paket přijde na vyšší port, a protože chybí conntrack záznam, firewall ho zahodí). Ale proč neprojdou keep alive pakety zevnitř ven, když směřují na 22 a firewall navíc FORWARD nijak ve směru zevnitř ven neomezuje, to mi jasné není. Druhý firewall v síti také neomezuje provoz z DMZ ven, proto jej ani neuvádím jako relevantní.

    Za zneužití blogu tímto způsobem se předem omlouvám, ale poradnu bych tím zneužívat nechtěl. Není to problém, který potřebuji vyřešit, spíše bych rád pochopil, proč k tomu dochází. Přemýšlím o tom už několikátý den a stále na to nemohu přijít. Za odpovědi předem děkuji.

    Dodatek první: Problém nastává jak v situaci, kdy se klient připojuje zvenčí k SSH serveru v DMZ, tak v situaci, kdy se stroj v DMZ připojuje jako klient k SSH serveru venku.

    Dodatek druhý: Jak mne správně upozornil petr_p, délku uchování záznamu o navázaném spojení v conntrack tabulce určuje parametr ip_conntrack_tcp_timeout_established, nikoliv ip_conntack_max, jak jsem uvedl v blogpostu. Hodnota 1200 se tedy skutečně týká ip_conntack_tcp_timeout_established, nikoliv ip_conntrack_max, tj. záznam v conntrack tabulce ADSL routeru o vytvořeném spojení skutečně vyprší po 20 minutách neaktivity. Omlouvám se za mystifikaci.

    Dodatek třetí: Problém zmizí, pokud aktivuji DMZ na ADSL routeru, což provede následující změny ve firewallu. Poslední pravidlo pro řetězec FORWARD se změní z DROP na:

    0     0 ACCEPT     all  --  ppp0   *       0.0.0.0/0            10.0.0.254     

    A v tabulce nat, řetezci PREROUTING se přidají dvě pravidla:

    0     0 DNAT       all  --  ppp0   *       0.0.0.0/0           !veřejná_ip      to:0.0.0.0
    0     0 DNAT       all  --  ppp0   *       0.0.0.0/0            veřejná_ip      to:10.0.0.254

    Dodatek čtvrtý: Průběh celé akce.

    Je tedy jasné, že problém je ve firewallu ADSL routeru, ale kde, to netuším.

    Dodatek pátý: Asi už to mám. Samozřejmě opravte mne, pokud se mýlím.

           

    Hodnocení: 100 %

            špatnédobré        

    Anketa

    Kam byste zařadili tento dotaz vy?
     (29 %)
     (71 %)
     (0 %)
     (0 %)
    Celkem 14 hlasů

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

    Komentáře

    Vložit další komentář

    2.3.2009 17:23 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: Souvislost ip_conntrack_max s DNATem

    Dvě chyby:

    Odpovědi z SSH serveru se nevracejí přes natující stroj, takže ten neaktualizuje conntrack záznam a časem vyprší.

    ip_conntrack_max neurčuje životnost záznamu v sekundách, ale velikost conntrack tabulky. To jest kolik záznamů se do tabulky najednou vejde. Když se zaplní, tak si začne jádro stěžovat a nová spojení nebude přidávat.

    2.3.2009 17:35 pasmen | skóre: 45 | blog: glob | Praha
    Rozbalit Rozbalit vše Re: Souvislost ip_conntrack_max s DNATem
    Hmm, jakto že se nevrací odpovědi z SSH serveru přes NATující stroj? Pokuď by se nevraceli tudy, pak by vůbec nedošlo k navázání spojení s tím serverem ne?
    2.3.2009 20:50 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: Souvislost ip_conntrack_max s DNATem
    Pravda. Nějak mě rozhodila jeho tabulka nat, protože jsem ještě neviděl, aby někdo přesměrovával libovolný provoz na vybraných portech bez ohledu na cílovou adresu na jediný stroj. Tam to asi bude divoký, když DMZ má neveřejné adresy :(
    Shadow avatar 2.3.2009 21:24 Shadow | skóre: 25 | blog: Brainstorm
    Rozbalit Rozbalit vše Re: Souvislost ip_conntrack_max s DNATem
    Divoké to je:-). Dodávám, že ten firewall jsem nevymyslel já, ten vymyslel výrobce Well PTI-845. Bohužel s tím firewallem nic moc neudělám, přenastavit ho sice můžu, ale jen do příštího rebootu routeru. Totéž se týká nastavení jádra. Mohu leda přesměrovat veškerý provoz na druhý router za tím, což jsem z hlediska bezpečnosti dělat nechtěl. No, uvidím.

    Nicméně, asi jsem na to přišel, díky vašemu jinému příspěvku. Jakmile zmizí z conntrack tabulky záznam o vytvořeném spojení, vyleze z maškarády následný paket s nezměněnou (lokální) zdrojovou adresou, takže ho po cestě nejspíš zahodí nějaký jiný router. Pokud se v této hypotéze nemýlím, je to odpověď, kterou jsem hledal, děkuji moc.
    If we do not believe in freedom of speech for those we despise we do not believe in it at all.
    2.3.2009 21:43 pasmen | skóre: 45 | blog: glob | Praha
    Rozbalit Rozbalit vše Re: Souvislost ip_conntrack_max s DNATem
    Pokud tomu rozumím správně, tohle není pravda ze dvou důvodů:
    • Maškarádují se všechny datagramy bez vyjímky, to je podstata maškarády. Conntracková tabulka je akorát přiřazuje ke spojením.
    • Pokud se nějaký datagram zahodí, pak dojde k znovyvyslání. Tedy za předpokladu, že jde o TCP, což v případě SSH jde.
    Shadow avatar 2.3.2009 22:39 Shadow | skóre: 25 | blog: Brainstorm
    Rozbalit Rozbalit vše Re: Souvislost ip_conntrack_max s DNATem
    No, když jsem používal CDMA, modem měl takovou úžasnou vlastnost, že ukončil spojení, pokud na jeho rozhraní přistál paket s jinou zdrojovou adresou než je místní adresa onoho rozhraní. A dost dlouho jsem řešil právě to, že ač tam byla maškaráda (-o ppp0 -j MASQUERADE), přesto na tom rozhraní končily pakety s jinou zdrojovou adresou, čímž došlo k ukončení spojení. No a to se dělo tak často, že ani automatické znovunahození spojení z toho neudělalo použitelné připojení. A to byly mj. pakety, ke kterým conntrack ztratil stav. Nakonec jsem lehkým hackem iptables dospěl k sadě pravidel, která úspěšně INVALID pakety s -o ppp0 prostě zahazovala.

    Také to může být nějaká chyba v netfilteru, na ADSL routeru je ještě jádro řady 2.4, čili i to je alternativa.
    Pokud se nějaký datagram zahodí, pak dojde k znovyvyslání. Tedy za předpokladu, že jde o TCP, což v případě SSH jde.
    Ano, k tomu skutečně dochází, vnitřní stroj posílá pakety na vnější stroj, ale ty pakety tam prostě nedorazí. Žádný z nich. Zahazuje je něco na cestě. A to ihned po tom, co ADSL router vymaže záznam o daném ESTABLISHED spojení z conntrack tabulky. Čili, buď je zahazuje ADSL router (ale není mi jasné, jakým pravidlem), nebo nějaký router za ním, ovšem ten by zahodil asi jenom paket s jinou zdrojovou adresou než je veřejná IP přidělená ADSL routeru. Ale to nevím jistě, routery O2 nemám pod svou správou (zatím:-)).
    If we do not believe in freedom of speech for those we despise we do not believe in it at all.
    2.3.2009 23:38 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: Souvislost ip_conntrack_max s DNATem
    Maškarádují se všechny datagramy bez vyjímky, to je podstata maškarády. Conntracková tabulka je akorát přiřazuje ke spojením.

    Ne. Linuxový NAT je plně stavový, co není v tabulce spojení, se pro jistotu nepřekládá. Do tabulky spojení se záznam uloží „jen“ při prvním packetu ze spojení.

    MASQUERADE se od SNAT liší v tom, že sleduje adresu rozhraní a při jejím smazáním odstraní všechna spojení překládaná na tuto adresu.

    3.3.2009 06:28 pasmen | skóre: 45 | blog: glob | Praha
    Rozbalit Rozbalit vše Re: Souvislost ip_conntrack_max s DNATem
    Aha, díky.
    Shadow avatar 2.3.2009 17:45 Shadow | skóre: 25 | blog: Brainstorm
    Rozbalit Rozbalit vše Re: Souvislost ip_conntrack_max s DNATem
    Děkuji za odpověď.
    ad ip_conntrack_max)
    Možná jsem to zvoral a zaměnil ip_conntrack_max a ip_conntrack_tcp_timeout_established, ale to se budu muset podívat a přístup do DMZ teď nemám (jako na potvoru teď vypadlo DSL, takže se k routeru nedostanu). Prověřím to, jakmile budu mít příležitost, a když tak aktualizuji blogpost.
    ad odpovědi z SSH serveru)
    SSH komunikace normálně prochází, spojení je po navázání aktivní, data procházejí tam a zpět. Takže buď to není ten případ, nebo zase něčemu nerozumím. Dodám ještě, že problém se týká nejen připojení zvenčí na SSH server v DMZ, ale také připojení z DMZ na SSH servery venku.
    If we do not believe in freedom of speech for those we despise we do not believe in it at all.
    Shadow avatar 2.3.2009 19:29 Shadow | skóre: 25 | blog: Brainstorm
    Rozbalit Rozbalit vše Re: Souvislost ip_conntrack_max s DNATem
    Blogpost aktualizován, 20 minut (alias 1200 sekund) se skutečně týká ip_conntrack_tcp_timeout_established a nikoliv ip_conntrack_max, jak jsem mylně uvedl, omlouvám se.
    If we do not believe in freedom of speech for those we despise we do not believe in it at all.
    Grunt avatar 3.3.2009 14:29 Grunt | skóre: 23 | blog: Expresivní zabručení | Lanžhot
    Rozbalit Rozbalit vše Re: Souvislost ip_conntrack_tcp_timeout_established s DNATem

    Abych pravdu řekl, tak jsem vůbec nepochopil o co ti vlastně jde, ale snad to zachrání pár citací:

     

    Connection Tracking - Description

     

    Connection tracking refers to the ability to maintain the state information about connections, such as source and destination IP address and ports pairs, connection states, protocol types and timeouts. Firewalls that do connection tracking are known as "stateful" and are inherently more secure that those who do only simple "stateless" packet processing.

    Connection tracking is done in the prerouting chain, or the output chain for locally generated packets.

    Another function of connection tracking which cannot be overestimated is that it is needed for NAT. You should be aware that no NAT can be performed unless you have connection tracking enabled, the same applies for p2p protocols recognition. Connection tracking also assembles IP packets from fragments before further processing.

     

    Connection Timeouts

     

    Connection tracking provides several timeouts. When particular timeout expires the according entry is removed from the connection state table. The following diagram depicts typical TCP connection establishment and termination and tcp timeouts that take place during these processes:

    tcp-established-timeout (time; default: 1d) - maximal amount of time connection tracking entry will survive after having seen an acknowledgment (ACK) from connection initiator

    Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
    Shadow avatar 3.3.2009 15:03 Shadow | skóre: 25 | blog: Brainstorm
    Rozbalit Rozbalit vše Re: Souvislost ip_conntrack_tcp_timeout_established s DNATem
    Šlo mi o to, proč po vypršení záznamu o SSH spojení v conntrack tabulce ADSL routeru dojde k jeho zamrznutí a následné pakety se nedostanou zevnitř DMZ přes ADSL router na cílovou stanici (proč to nešlo v opačném směru mi bylo jasné). Teď už je mi jasné i toto, a je to popsáno i v tom, co jsi tu citoval. Jakmile vyprší conntrack záznam v tabulce ADSL routeru, tak nezávisle na DNATu, který je na něm nastavený, router už neprožene příslušné pakety maškarádou, takže se ven dostanou pakety s lokální zdrojovou adresou, které zahodí routery za ním.

    Čili, souvislost s DNATem (resp. přesměrováním portů) tu není, je to pouze problém maškaráda versus conntrack. Ještě mi sice není úplně jasné, proč k problému nedojde v situaci popsané v dodatku tři, ale to si už vyřeším sám. Děkuji všem za pomoc a problém považuji za vyřešený.
    If we do not believe in freedom of speech for those we despise we do not believe in it at all.
    Grunt avatar 3.3.2009 17:20 Grunt | skóre: 23 | blog: Expresivní zabručení | Lanžhot
    Rozbalit Rozbalit vše Re: Souvislost ip_conntrack_tcp_timeout_established s DNATem

    NAT se dělí na SNAT a DNAT(Source NAT a Destination NAT) a podle toho se přepisuje buď cílová a nebo zdrojová adresa. A maškaráda není nic jiného než SNAT který za zdrojovou adresu automaticky dopisuje adresu rozhraní ze kterého bude paket vycházet. Žádný šotek a nebo černá magie v tom není.

    Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!

    Založit nové vláknoNahoru

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