Google Chrome 136 byl prohlášen za stabilní. Nejnovější stabilní verze 136.0.7103.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 8 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.
Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových
… více »Richard Stallman přednáší ve středu 7. května od 16:30 na Technické univerzitě v Liberci o vlivu technologií na svobodu. Přednáška je určená jak odborné tak laické veřejnosti.
Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.04.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.
TmuxAI (GitHub) je AI asistent pro práci v terminálu. Vyžaduje účet na OpenRouter.
Byla vydána nová verze R14.1.4 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5, Wikipedie). Přehled novinek i s náhledy v poznámkách k vydání. Podrobný přehled v Changelogu.
Bylo vydáno OpenBSD 7.7. Opět bez písničky.
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.
tcp 6 1199 CoS6 ESTABLISHED src=klient dst=server sport=59918 dport=22 src=server dst=verejna_ip sport=22 dport=59918 use=1
ip_conntrack_tcp_timeout_established=1200
)20:11:13.108303 IP klient.59918 > server.22: P 1841:1889(48) ack 2926 win 757 <nop,nop,timestamp 75970738 1061777273>
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.
Tiskni
Sdílej:
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.
-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
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.
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.
ip_conntrack_tcp_timeout_established
a nikoliv ip_conntrack_max
, jak jsem mylně uvedl, omlouvám se.
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
…
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í.