Byl publikován přehled vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie) za uplynulé dva měsíce. Servo zvládne už i Gmail. Zakázány jsou příspěvky generované pomocí AI.
Raspberry Pi Connect, tj. oficiální služba Raspberry Pi pro vzdálený přístup k jednodeskovým počítačům Raspberry Pi z webového prohlížeče, byla vydána v nové verzi 2.5. Nejedná se už o beta verzi.
Google zveřejnil seznam 1272 projektů (vývojářů) od 185 organizací přijatých do letošního, již jednadvacátého, Google Summer of Code. Plánovaným vylepšením v grafických a multimediálních aplikacích se věnuje článek na Libre Arts.
Byla vydána (𝕏) dubnová aktualizace aneb nová verze 1.100 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.100 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána v nové verzi 2025.5.
OpenSearch (Wikipedie) byl vydán ve verzi 3.0. Podrobnosti v poznámkách k vydání. Jedná se o fork projektů Elasticsearch a Kibana.
PyXL je koncept procesora, ktorý dokáže priamo spúštat Python kód bez nutnosti prekladu ci Micropythonu. Podľa testov autora je pri 100 MHz približne 30x rýchlejší pri riadeni GPIO nez Micropython na Pyboard taktovanej na 168 MHz.
Grafana (Wikipedie), tj. open source nástroj pro vizualizaci různých metrik a s ní související dotazování, upozorňování a lepší porozumění, byla vydána ve verzi 12.0. Přehled novinek v aktualizované dokumentaci.
Raspberry Pi OS, oficiální operační systém pro Raspberry Pi, byl vydán v nové verzi 2025-05-06. Přehled novinek v příspěvku na blogu Raspberry Pi a poznámkách k vydání. Pravděpodobně se jedná o poslední verzi postavenou na Debianu 12 Bookworm. Následující verze by již měla být postavena na Debianu 13 Trixie.
Richard Stallman dnes v Liberci přednáší o svobodném softwaru a svobodě v digitální společnosti. Od 16:30 v aule budovy G na Technické univerzitě v Liberci. V anglickém jazyce s automaticky generovanými českými titulky. Vstup je zdarma i pro širokou veřejnost.
Já vím, že už se to mnohokrát řešilo. Vím, jak to funguje, a proto jsem v koncích. Potřebuju zprovoznit pasivní FTP na můj stroj. A iptables samozřejmě nepovolí datové spojení.
Kernel 2.6.24 (TuxOnIce, Gentoo) byl zkompilován s parametry:
CONFIG_NF_CONNTRACK_ENABLED=y
CONFIG_NF_CONNTRACK=y
# CONFIG_NF_CONNTRACK_MARK is not set
# CONFIG_NF_CONNTRACK_EVENTS is not set
# CONFIG_NF_CONNTRACK_AMANDA is not set
CONFIG_NF_CONNTRACK_FTP=y
# CONFIG_NF_CONNTRACK_SANE is not set
# CONFIG_NF_CONNTRACK_TFTP is not set
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
CONFIG_NF_CONNTRACK_IPV4=y
# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
CONFIG_IP_NF_IPTABLES=y
A iptables samozřejmě obsahují tento řádek:
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Nemáte někdo nápad, proč datové pasivní FTP spojení přes firewall neprojde?
CONFIG_NF_CONNTRACK_FTP=y
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
Pak ti pujde aktivni i pasivni spojeni.... Pouze FTP, ne FTPs (FTP over SSL)
modprobe mi samozřejmě nepomůže - nemám ty moduly, když je to v jádře. Spíš mě překvapuje modul ip_nat_ftp. Co přesně tenhle modul dělá? Která volba způsobí, že se zkompiluje? Stroj běží na veřejné IP, ale nepřijde mi to podstatné.
Myslíte si, že bych měl zakompilovat do kernelu i podporu pro NAT? Nechápu, proč by to s tím mělo souviset...
Brzdí to samozřejmě iptables - jakmile je vypnu, vše funguje.
Když zkusím připojení z telnetu, tak vše funguje dle očekávání - přihlásím se, pošlu PASV paket, na ten mi přijde odpověd, ale iptables neotevřou port pro ono datové spojení. Přitom server poslouchá - v netstat jde otevřený port vidět.
/proc/net/nf_conntrack*
neboo tak přibližně, jestli tam není něco vidět.
Ha! Tady doslo ke zmene! V souboru /proc/net/nf_conntrack se nahle objevilo nekolik radku zhruba tehle podoby:
ipv4 2 tcp 6 431912 ESTABLISHED src=my.beauty.ip.addr dst=86.49.93.28 sport=46541 dport=6667 packets=118 bytes=7137 src=86.49.93.28 dst=and.a.gain.ip sport=6667 dport=46541 packets=114 bytes=13148 [ASSURED] use=1
U vsech radku je napsano ESTABLISHED, jen u dvou je TIME_WAIT. Ja jsem si rikal, ze ESTABLISHED mi asi funguje, kdyz muzu vesele brouzdat po webu... Jinak bootuju spravny kernel.
Diky... Ano, ESTABLISHED spojeni na port 21 v souboru nf_conntrack je. Prikazove spojeni funguje naprosto bez problemu.
Zapnout logovani je urcite dobry napad - pokud pridam pravidlo, ktere zaloguje a zahodi vsechny spojeni na port >1024. Ted mam samozrejme vsechno zahazovane implicitnim pravidlem. Nevite nekdo, jak toto logovani zapnout?
Jen se bojim, ze v pripadnem logu uvidim presne to, co se da cekat - iptables zakazaly spojeni, protoze jim nedoslo, ze se jedna o RELATED spojeni, ale mysli si, ze je NEW.
Vsiml jsem si ale, ze v iptables existuji krome match state (RELATED, ESTABLISHED) jeste match conntrack (RELATED, ESTABLISHED). Nevite nekdo, jaky je mezi nimi rozdil? Pro jistotu uvedu cely radek iptables:
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# ftpd chain -N S_FTP -F S_FTP -A S_FTP -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT # ftpd (passive) -A S_FTP -p tcp -m state --state ESTABLISHED,RELATED -m multiport --dports 49152:49162 -j ACCEPT ------------- # ftpd -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j S_FTP # ftpd (passive, data) #-A INPUT -p tcp -m state --state NEW -m multiport -m multiport --sports 1024: --dports 49152:49162 -j S_FTP -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -m multiport --dports 49152:49162 -j S_FTP # ftp (pasive, data) -A INPUT -p tcp -m state --state ESTABLISHED -m tcp --sport 1024: --dport 1024: -j ACCEPT ----------------- # ftpd (active, data) -A OUTPUT -p tcp -m state --state ESTABLISHED,RELATED -m tcp --sport 20 --dport 1024: -j ACCEPT # ftp -A OUTPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT # ftp (active, data) -A OUTPUT -p tcp -m state --state ESTABLISHED,RELATED -m tcp --dport 20 -j ACCEPT # ftp (passive, data) -A OUTPUT -p tcp -m state --state ESTABLISHED,RELATED --sport 1024: --dport 1024: -j ACCEPT -----------------#ftpd jsou pravidla týkající se serveru, #ftp týkající se klienta. Filtruji i output, ale to se dá vyhodit. Pokud chcete nějakou informaci lognout, tak před to pravidlo napíšete dané pravidlo ještě jednou, pričemž místo
-j ACCEPT_OR_SOdáte
-j LOG -m limit --limit 1/minute --limit-burst 1 --log-level debug --log-prefix "iptables: ftp: wtf "a následovat bude to pravidlo. Pozor, délka textu prefixu je omezená (asi 16 znaků nebo tak nějak, už nevím). Pokud si pak dáte tail -f /var/log/messages tak se vám objeví informace že nějaký paket dorazil v iptables až "tam" (jen jeden paket za minutu, ale to lze změnit), případně pokud je těch logů více, tak se vám objeví v pořadí v jakém paket lezl... To zakomentované pravidlo (tedy NEW místo RELATED/ESTABLISHED) mi tuším fungovalo právě pro pasivní spojení ještě než jsem tam dal právě conntracking.
# LOG -A INPUT -m limit --limit 5/minute --limit-burst 5 -j LOG --log-level debug --log-prefix "iptables: undefined input: " -A FORWARD -m limit --limit 5/minute --limit-burst 5 -j LOG --log-level debug --log-prefix "iptables: undefined forward: " -A OUTPUT -m limit --limit 5/minute --limit-burst 5 -j LOG --log-level debug --log-prefix "iptables: undefined output: " # input #-A INPUT -j REJECT --reject-with icmp-port-unreachable #-A INPUT -j DROP # output -A OUTPUT -j ACCEPT #-A OUTPUT -j DROPPřičemž neznámý output explicitně povoluji, neznámý input po lognutí neřeším, protože mám na začátku default policy jako DROP...
modprobe capability
iptables -A INPUT -i ${WAN} -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
je obecnější než třeba -A INPUT -m state --state RELATED,ESTABLISHED -m multiport --sports 1024: --dports 65500:65535 -j ACCEPT
a než otevření portů bez vazby na conntrack je přecejen lepší ten conntrack rozchodit, on se hodí i pro další nastavení v iptables...
Prikazove spojeni samozrejme projdeNeviděl bych to jako samozřejmost. Zvlášť pokud se někde vyskytuje NAT. Pokud nejde conntrack (nebo je conntrack tabulka prázdná), nebude celkem logicky fungovat nic, co na conntracku závisí. Ještě se docela hodí nechat iptables pakety nejen zahazovat ale i logovat, tím se přijde na další případné probémy (a případné hyby v iptables). Ještě je dobré vidět výstup z firewall skriptu s příkazama iptables, jestli některý neselhal. Případně použít přepínač -L.
NAT se nade mnou nevyskytuje, dokonce mam verejnou IP.
Prikazove spojeni zkratka projde - ve firewallu je povoleny port 21, a kdyby neproslo, tak uz bych se sel asi obesit...
Prave me zarazilo, jaktoze mi funguje detekce ESTABLISHED spojeni (muzu brouzdat po webu), kdyz soubor /proc/net/nf_conntrack byl prazdny. Podival jsem se tam znovu, a, jak uz jsem psal drive, ted je v nem nekolik ESTABLISHED spojeni.
Netusite, kde bych mohl zapnout logovani paketu v iptables? Porad premyslim jeste nad volbou CONFIG_NETFILTER_NETLINK_LOG v kernelu, kterou mam zatim vypnutou.
iptables -L vypisou presne ta pravidla, ktera bych cekal - tedy povoleny port 21 a RELATED i ESTABLISHED spojeni.
Jenom taková poznámka. Kdysi jsem kompiloval jádro a dal nějakou "věc" přímo do jádra a ona překvapivě nefungovala. Jako modul fungovala v pohodě. Přeju hodně štěstí.
Tak, problém je snad vyřešen.
Samozřejmě byl problém v conntrack - nevěděl jsem, co musím do kernelu zakompilovat, aby fungoval. Jedná se primárně o moduly nf(ip)_conntrack_ftp a nf_nat_ftp. Protože modul nf_conntrack_ftp sleduje spojení implicitně jen na portu 21, je nutné jej zkompilovat jako modul a do /etc/modules.conf(či snad jako parametr jádra) mu předat jako parametr port, na kterém FTP server běží.
Modul nf_nat_ftp asi potřeba není.
Díky všem za reakce.
Tiskni
Sdílej: