Národní identitní autorita, tedy NIA ID, MeG a eOP jsou nedostupné. Na nápravě se pracuje [𝕏].
Americký výrobce čipů Nvidia se stal první firmou na světě, jejíž tržní hodnota dosáhla pěti bilionů USD (104,5 bilionu Kč). Nvidia stojí v čele světového trhu s čipy pro umělou inteligenci (AI) a výrazně těží z prudkého růstu zájmu o tuto technologii. Nvidia již byla první firmou, která překonala hranici čtyř bilionů USD, a to letos v červenci.
Po Canonicalu a SUSE oznámil také Red Hat, že bude podporovat a distribuovat toolkit NVIDIA CUDA (Wikipedie).
TrueNAS (Wikipedie), tj. open source storage platforma postavená na Linuxu, byl vydán ve verzi 25.10 Goldeye. Přináší NVMe over Fabric (NVMe-oF) nebo OpenZFS 2.3.4.
Byla vydána OpenIndiana 2025.10. Unixový operační systém OpenIndiana (Wikipedie) vychází z OpenSolarisu (Wikipedie).
České základní a střední školy čelí alarmujícímu stavu kybernetické bezpečnosti. Až 89 % identifikovaných zranitelností v IT infrastruktuře vzdělávacích institucí dosahuje kritické úrovně, což znamená, že útočníci mohou vzdáleně převzít kontrolu nad klíčovými systémy. Školy navíc často provozují zastaralé technologie, i roky nechávají zařízení bez potřebných aktualizací softwaru a používají k nim pouze výchozí, všeobecně známá
… více »Během tradiční ceremonie k oslavě Dne vzniku samostatného československého státu (28. října) byl vyznamenán medailí Za zásluhy (o stát v oblasti hospodářské) vývojář 3D tiskáren Josef Průša. Letos byly uděleny pouze dvě medaile Za zásluhy o stát v oblasti hospodářské, druhou dostal informatik a manažer Ondřej Felix, který se zabývá digitalizací státní správy.
Tor Browser, tj. fork webového prohlížeče Mozilla Firefox s integrovaným klientem sítě Tor přednastavený tak, aby přes tuto síť bezpečně komunikoval, byl vydán ve verzi 15.0. Postaven je na Firefoxu ESR 140.
Bylo oznámeno (cs) vydání Fedora Linuxu 43. Ve finální verzi vychází šest oficiálních edic: Fedora Workstation a Fedora KDE Plasma Desktop pro desktopové, Fedora Server pro serverové, Fedora IoT pro internet věcí, Fedora Cloud pro cloudové nasazení a Fedora CoreOS pro ty, kteří preferují neměnné systémy. Vedle nich jsou k dispozici také další atomické desktopy, spiny a laby. Podrobný přehled novinek v samostatných článcích na stránkách Fedora Magazinu: Fedora Workstation, Fedora KDE Plasma Desktop, Fedora Silverblue a Fedora Atomic Desktops.
Elon Musk oznámil (𝕏) spuštění internetové encyklopedie Grokipedia (Wikipedia). Zatím ve verzi 0.1. Verze 1.0 prý bude 10x lepší, ale i ve verzi 0.1 je podle Elona Muska již lepší než Wikipedia.
Cílem shapování je nějaká úprava trafficu. Většinou se snažíme ladit jak příchozí (download), tak i odchozí (upload) traffic. Každý myslí na ladění příchozího trafficu a na odchozí se občas zapomene. Proč by se měl člověk zabývat nějakým odchozím provozem, když chce jen dobře stahovat. Ne každý si uvědomuje, že i odchozí provoz má celkem velký vliv na kvalitu celého pásma.
Shapování příchozího provozu se provádí na rozhraní, které směřuje do vnitřní (lokální) sítě (LAN). Upload se ladí na rozhraní, které směřuje do internetu nebo do nějaké jiné vnější sítě (WAN). Vždy prostě nastavíme pravidla s filtry na to rozhraní, které posílá později shapovaná data.

Tak, teď asi dost lidí napadají otázky typu: no jo, ale co když nemá router dvě síťová rozhraní, ale jen jedno, které vede přímo do internetu? Nebo naopak rozhraní přebývají. Kam se potom nastaví pravidla pro příslušný shaping?

Není mnoho možností, jak tyto situace řešit, jedno si však ukážeme.
Jak už padlo v předchozím článku, imq je virtuální síťové rozhraní, kam se přesměruje síťový provoz, který chceme shapovat. Děláme tak z několika důvodů. Hlavním je třeba chybějící rozhraní, na kterém bychom prováděli shapování. Dalším je potom přebývající rozhraní. V neposlední řadě umožňuje lehký shaping s NATem. Nevýhodou imq je to, že provádí nečisté věcičky, a proto ho asi nikdy nenajdeme oficiálně v kernelu - a musíme patchovat. Také jeho stabilita bývala někdy sporná. Mně osobně mi jednou vytuhl PC. To ovšem nebylo za klasického provozu, ale laboroval jsem s imq, co to dá. Pokud si nějaké nastavení odzkoušíte, a nebudete provádět testy při ostrém provozu, tak pochybuji, že vám imq způsobí potíže.
Základem je mít opatchované jádro a iptables, což můžeme zhotovit podle minulého článku. Jako výchozí bývá v jádře nastaven počet rozhraní na dvě, takže když provedete načtení modulu bez parametrů
modprobe imq
tak se nám vytvoří dvě imq zařízení (imq0 a imq1)
ip link
...
11: imq0: <NOARP> mtu 1500 qdisc noop qlen 30
link/void
12: imq1: <NOARP> mtu 1500 qdisc noop qlen 30
link/void
...
Počet virtuálních imq zařízení můžeme také ovlivnit parametrem při připojování modulu (pro vytvoření jednoho imq zařízení):
modprobe imq numdevs=1
Další věcí, která bývá v jádře nastavena, je schéma zapojení imq v jednotlivých tabulkách před NATem či za ním. Tuto důležitou skutečnost jsem v předchozím článku nezmínil, tak jí teď zařadím.
Imq může být nastaveno takto (zakřížkovaná položka je výchozí nastavení):
Device Drivers -->
Network device support --->
<M> IMQ (intermediate queueing device) support
IMQ behavior (PRE/POSTROUTING) (IMQ BA) --->
( ) IMQ AA
( ) IMQ AB
(X) IMQ BA
( ) IMQ BB
(2) Number of IMQ devices
Význam jednotlivých zkratek :
První písmeno značí nastavení v tabulce PREROUTING a druhé v POSTROUTING:
A = after (po) => imq projde paket až po natu
B = before (před) => imq projde paket před natem
Pro změnu schématu stačí jen přenastavit .config a překompilovat modul imq:
make menuconfig
make
make modules_install
rmmod imq
modprobe imq
Typ schématu potom můžeme vidět ve výpisu dmesg hned po připojení modulu imq.
Než si zvolíme schéma sobě blízké, musíme nejprve vědět, jak paket vůbec cestuje netfilterem.
Vše by mělo znázorňovat následující schéma. Jen upozorním, že toto zdaleka není kompletní schéma, ale pro naše potřeby postačí.

Paket postupně prochází přes PREROUTING. Zde a nikde jinde probíhá změna adresy na adresu příjemce (DNAT). Pak dorazí na rozhodovák. Pokud má paket IP routeru, tak vleze přes chain INPUT k lokálním procesům na serveru. Odtud dále přes chain OUTPUT, který lze použít k DNATování paketů vzniklých pouze na lokálním počítači. Pokud paket nenáleží routeru, tak jde přes chain FORWARD. Všechny pakety potom odcházejí přes POSTROUTING, kde mohou být SNATovány (změní se zdrojová IP adresa za cílovou => IP adresy, na které je aplikován SNAT, budou mít IP adresu stejnou jako má router). Toto schéma se aplikuje na každé rozhraní.
Velice jednoduchý obrázek níže by snad mohl pomoci k porozumění. PREROUTING je první věc, kterou paket potká, když vyleze z rozhraní. POSTROUTING je poslední věc, kterou paket proleze. Zelené kolečko značí vstup do "magické iptables tabulky (router)" a červené zase výstup. (Velice jednoduše a nepřesně řečeno, snad mi znalí uživatelé odpustí.) Když jsem přemítal, na co aplikovat filtry pro download apod., tak mi tento obrázek velice pomohl.

Tak, teď jistě chápete, proč je zvolený typ schématu velice důležitý.
Pokud tedy používáte SNAT/maškarádu, tak by bylo asi nejlepší, kdybyste si zvolili typ AB. Paket přiletí do PREROUTINGu, tam NAT převede IP na zdrojovou a potom se aplikuje imq - takže potom ve filtru pracujeme se zdrojovými adresami a jsme za vodou. Když chceme aplikovat shapovací skript na upload, tak imq umístíme do POSTROUTINGu před (before) NAT.
Když používáme klasický SNAT/maškarádu, tak nemusíme aplikovat imq na PREROUTING s tím, že shapovací skript hodíme přímo na rozhraní do LANu. To má ovšem jeden malinkatý háček/výhodu/nevýhodu. Takový skript nám neumožní shapovat lokální traffic na routeru, protože se filtr aplikuje až někde u POSTROUTINGu na rozhraní do LAN a tudy lokální provoz na serveru neprotéká.
Tak, dost teorie a jdeme konečně něco nahodit. Nejprve se podíváme k problému s chybějícími rozhraními. Do vytvořeného virtuálního imq0 přesměrujeme traffic, který proudí z internetu k nám (eth0 = WAN; eth1 = LAN).
iptables -t mangle -A PREROUTING -i eth0 -j IMQ --todev 0
Kde číslo za --todev značí očíslované imq, v našem případě imq0.
Teď, když máme přesměrovaný provoz z internetu přes naše imq, tak můžeme celé virtuální imq rozhraní nahodit:
ip link set imq0 up
Když si pak spustíte např. nějaké stahování z internetu, tak byste měli vidět, jak přes imq0 cestují pakety. To zjistíte např. příkazem:
ifconfig
....
Zapouzdření:NEZNÁM HWadr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
AKTIVOVÁNO BĚŽÍ NEARP MTU:1500 Metrika:1
RX packets:879774 errors:0 dropped:0 overruns:0 frame:0
TX packets:879338 errors:0 dropped:0 overruns:0 carrier:0
kolizí:0 délka odchozí fronty:30
RX bytes:369590578 (352.4 MiB) TX bytes:369321146 (352.2 MiB)
...
Pozor - když se na něj zkusíte podívat s tcpdumpem pomocí:
tcpdump -i imq0
tak nic neukáže.
Celé naše snažení by pak mělo vypadat nějak takto :

Druhý příklad je o dva řádky delší (eth0 = WAN; eth1, eth2, eth3 = LAN):
iptables -t mangle -A POSTROUTING -o eth1 -j IMQ --todev 0
iptables -t mangle -A POSTROUTING -o eth2 -j IMQ --todev 0
iptables -t mangle -A POSTROUTING -o eth3 -j IMQ --todev 0
ip link set imq0 up
Tímto jsme vlastně přesměrovali veškerý odchozí provoz do LANu přes imq. Shapování downloadu by teď měla být hračka.

Vnímavější by možná napadlo hodit na LAN 1, 2 a 3 bridge br0. Tím by se vytvořilo jedno virtuální zařízení, které by dokonce umožňovalo, aby byly všechny podsítě ve stejném rozsahu. Je to velice dobrý nápad, avšak má jednu drobnou chybku. Na br0 se nedá provádět shapování, protože iptables na něj neplatí (i když někdo tvrdí, že mu to iptables dokáže) a je k dispozici pro konfiguraci balíček ebtables. Takže pokud má někdo nakonfigurovaný bridge, tak bude stejně asi muset sáhnout po imq.
Jak vidíte, tak do imq zařízení se dá přesměrovat více než jeden provoz. IMQ zařízením nemusí být přesměrován jen jednosměrný provoz, můžete do něj přesměrovat jak odchozí, tak příchozí traffic:
iptables -t mangle -A PREROUTING -i eth0 -j IMQ --todev 0
iptables -t mangle -A POSTROUTING -o eth0 -j IMQ --todev 0
ip link set imq0 up
Nyní můžeme na jednom imq zařízení shapovat jak download, tak upload.

Co nám ten dnešek nakonec dal?:
Dodatek:
IMQ lze umístit např. i do chainu FORWARD. Na druhou stranu nelze provozovat více imq zařízení v jednom směru. Pokud tak učiníme, bude fungovat poslední vytvořené.
V závěru bych se chtěl omluvit za prozatímní absenci skriptů, které byly slibovány minule v závěru. Bohužel došlo minule k drobnějšímu nedorozumění, takže ničeho se nebát, skripty budou příště :-). Stále mám takový pocit, že jsem někde udělal nějakou chybu, ale to vy určitě v diskusi opravíte.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
- ja jsem spise slysel narky, jak HTB neni dost presne pri vyssich (nad 512kbps) rychlostech... nevim, nejak jsem zamrzl v ere CBQ a nikdo si nikdy na moji implementaci nestezoval...
. Také nevím, jak by jsi efektivněji shapoval např. na více výstupních zařízeních. Myslím, že asi docela ztuha. Jsou hold případy, kdy se použití imq nevyhneme. Nelze říci, že je imq zcela zbytečné a k shapování není třeba. Jsou případy, kdy třeba je a případy, kdy třeba není. To jsem se snažil vysvětlit v článu. Tvoje rekce je celkem zavádějící a nepřesná.
).
$ uptime 14:11:45 up 66 days, 21:26, 1 user, load average: 0.46, 0.45, 0.32pouzivam IMQ pro shapovani provozu pres 4 rozhrani.
--- imq.c.orig 2006-11-18 00:08:42.000000000 +0100
+++ imq.c 2006-12-17 23:34:03.000000000 +0100
@@ -201,13 +201,14 @@
ret = 0;
}
}
- if (spin_is_locked(&dev->xmit_lock))
- netif_schedule(dev);
- else
-
- while (!netif_queue_stopped(dev) &&
- qdisc_restart(dev)<0)
- /* NOTHING */;
+
+
+if (spin_trylock(&dev->xmit_lock)) {
+ qdisc_run(dev);
+ spin_unlock(&dev->xmit_lock);
+}else{
+ netif_schedule(dev);
+}
spin_unlock_bh(&dev->queue_lock);
Asi tak 4 roky zpet jsem potreboval IMQ pro spojeni dvou sitovek v routeru, na ktery jsem potreboval udelat shaping. Brzy to nejspis budu potrebovat znovu, proto jsem se koukal, jestli uz neni nejaka nahrada, protoze patchovat jadro bych jeste prezil, ale jeste dalsi 2 baliky (iproute2 a iptables), to uz je trochu moc.
Prvni vec kterou jsem nasel, byla naprogramovana tusim clovekem s jmenem Jamal Hadi Salim, se zajimavym napadem: Doprogramoval funknost IMQ jako rozsireni vlastnosti dummy zarizeni. Bohuzel jsem uz nenasel zadnou zpravu, zda se to do kernelu dostalo ci nikoliv. Diskuze dummy
Druou vec, kterou jsem nasel je nove zarizeni IFB (Intermediate Functional Block). O tom vim, ze uz se do kernelu dostalo.
Nemate s IFB zkusenot? Mozna by to bylo dobre tema pro dalsi clanek. Diskuze o IFB
iptables -t mangle -A FORWARD -i eth0 -j IMQ --todev 0 iptables -t mangle -A FORWARD -i eth1 -j IMQ --todev 1 ip link set imq0 up ip link set imq1 upZdar Max

iptables -t mangle -A PREROUTING -i eth0 -j IMQ --todev 0 iptables -t mangle -A POSTROUTING -o eth0 -j IMQ --todev 0Nebo použít dvě imq zařízení :
iptables -t mangle -A PREROUTING -i eth0 -j IMQ --todev 0 iptables -t mangle -A PREROUTING -i eth1 -j IMQ --todev 0 iptables -t mangle -A PREROUTING -i eth2 -j IMQ --todev 0 iptables -t mangle -A PREROUTING -i eth3 -j IMQ --todev 0Tvůj první případ by ti omezil (kdyby to fungovalo) jen jeden směr. Říká, že příchozí traffic z eth0 bude posílat do imq0 a odchozí traffic do ostatních interfaceůbude posílán také do imq0. Je to prostě jeden směr. Asi jsi myslel něco, jako je můj druhý příklad. Prostě nasypat vše do PREROUTINGů
iptables -t mangle -A PREROUTING -i eth0 -j IMQ --todev 0 iptables -t mangle -A PREROUTING -i eth1 -j IMQ --todev 1 iptables -t mangle -A PREROUTING -i eth2 -j IMQ --todev 1 iptables -t mangle -A PREROUTING -i eth3 -j IMQ --todev 1Zdar Max
Mluvim o koncepcni zmene s tim, ze CBQ, HTB spolu s IMQ (RedHat asi vi, proc ho nedodadava ve svem enterprise kernelu, ackoli ma spoustu jinych vychytavek, vcetne treba ipt_recent - relativne nova vec v teto oblasti) a podobnymi ostruvky bez ladu a skladu neni jiz nejaky patek treba... jenze to radsi budeme debatovat nad vecmi leta starymi s dobrou dokumentaci, tutorialy atd. (uvadene demostrace jsou stejne spise teoreticka "zakladni" cviceni... a takovych cookbooku na slusny dotaz Googleho najdeme hafo) misto toho abychom psali opravdu o novych, uzitecnych a zajimavych vecech (u kterych je dokumentace poskrovnu a o cookboocich nemuze byt vubec rec) a to nejen z pohledu "kernel trafficu", ale predevsim z pohledu praktickeho vyuziti neceho, co uz je v produkcni fazi od jadra 2.6.11 (?)... Psat takto o IMQ melo smysl pred 2 lety, kdy se v LinuxCz konfere kazdou chvili vyskytoval dotaz na reseni shappingu, ktery inklinoval na vyuziti IMQ (pak by ten clanek mel smysl, protoze zdroju na IMQ bylo malo a mnoha lidem by to pomohlo, dnes se ten smysl znacne vytraci - krome nutnosti vydat denne aspon jeden clanek a odmeny autora), dnes, kdyz mame moderni a ve std. jadre obsazenou alternativu je to mysim trochu zastarale... - je mi lito, ze jsem Vam to musel takto po lopate nasazet a nejste schopen se dovtipit z kratkeho a presne vystizneho sdeleni... A pokud Vam to stale nesecvaklo nevadi, bud mate opravdovy zajem a najdete si podrobnosti, o kterych hovorim, a nebo to stejne nema smysl...
( Robert ví, o čem mluvím ) ..
Dalsi tema k debate na tema charita a co kdo dela/dokazal?
PS: A s tou charitou, docela jste mi nabeh na smec, kupodivu mezi nase reference lze zaradit dve charitativni organizace... (se specialnimi smluvnimi podminkami) - tak zas tak nevyskakujte...

jenže asi jinak než myslíš :) Jakožto člověka s rakovinou mě nemůže nějaký Pavel Janousek rozhodit
Zatím jsem se nedal zubaté, tak proč bych měl nějakému prudiči
To víš, někteří lidé neocení ani snahu ani čas vynaložený pro ty, co nemrskají anglinu jak bozi, potřebují to polopatě ale rádi by tomu přišli na kloub. Já ti děkuju za smysluplné, pěkně ilustrované a hlavně ČESKÉ články, kterých je opravdu málo.
"$TC qdisc add dev eth1 root handle 1:0 prio"hlavní třídu (jestli jsem to napsal správně). Problém je pouze ten že já QoS nechci používat na hlavní bráně. QoS chci použít na router kde každé rozhraní bude komunikovat s každým rozhraním a to ještě o různých rychlostech, tam se toto použít bohužel nedá.
Patch je zde:
--- imq.c.orig 2006-11-18 00:08:42.000000000 +0100
+++ imq.c 2006-12-17 23:34:03.000000000 +0100
@@ -201,13 +201,14 @@
ret = 0;
}
}
- if (spin_is_locked(&dev->xmit_lock))
- netif_schedule(dev);
- else
-
- while (!netif_queue_stopped(dev) &&
- qdisc_restart(dev)<0)
- /* NOTHING */;
+
+
+if (spin_trylock(&dev->xmit_lock)) {
+ qdisc_run(dev);
+ spin_unlock(&dev->xmit_lock);
+}else{
+ netif_schedule(dev);
+}
spin_unlock_bh(&dev->queue_lock);
--- imq.c.orig 2006-11-18 00:08:42.000000000 +0100
+++ imq.c 2006-12-17 23:34:03.000000000 +0100
@@ -201,13 +201,14 @@
ret = 0;
}
}
- if (spin_is_locked(&dev->xmit_lock))
- netif_schedule(dev);
- else
-
- while (!netif_queue_stopped(dev) &&
- qdisc_restart(dev)<0)
- /* NOTHING */;
+
+
+if (spin_trylock(&dev->xmit_lock)) {
+ qdisc_run(dev);
+ spin_unlock(&dev->xmit_lock);
+}else{
+ netif_schedule(dev);
+}
spin_unlock_bh(&dev->queue_lock);
(mezery si budete muset asi bohužel dosadit sami)
Toto neni pravda, pokud mate linux jako router (a o tom tenhle serial je, ne?) a udelate si na nem bridge z nekolika (ne vsech) fyzickych rozhrani, br0 bude mit ip adresu a je to stejne zarizeni jako napr. ethernet a muzete na nej tedy pouzivat i iptables a QoS (ja to takto provozuji bez problemu s HTB). Vase pripominka plati pouze v pripade, ze z linuxu delate switch a ne router, tedy neprochazi "skrz" nej zadna data a ani nemusi mit IP adresu (i kdyz kvuli vzdalene sprave si ji tam zrejme date).
Jinak hezky clanek, uz o pouziti IMQ uvazuji dost dlouho, ale stale cekam, az se to vic usadi a pripadne dostane do distribucniho jadra.