Portál AbcLinuxu, 3. května 2025 10:09
Po ipfwadm, ipchains a iptables přichází nftables. Phoronix informuje, že firewall nftables, jehož cílem je (časem) nahradit stávající {ip,ip6,arp,eb}tables se dostal to linuxové vývojové větve net-next a měl byl být začleněn do Linuxu 3.13. [Slashdot]
Tiskni
Sdílej:
Zavádění takového kódu asi nebude příliš kompatibilní se secure bootem.Virualni masina v kernelu je nekompatibilni se SB?
Problém by byl jedině kdyby se do jádra natahoval skutečný spustitelný kódTusim, ze FreeBSD to tak ma, i kdyz strojovy kod se generuje az v jadre. Uvazovalo se, ze by to tak mohly mit i nftables, ale co jsem videl diskuzi, tak byl problem s knihovnami na generovani kodu, protoze nebyly vhodne pro pouziti v kernel modu.
Čistě ze zvědavosti - poukažte prosím na pár případů "obcházení".
Já vím třeba o NOTRACK
, resp. CT --notrack
, což inicializuje v kernelu falešný conntrack záznam, aby se packet mohl tvářit jako UNTRACKED
, ale to není zrovna problém *modelu*. Nebo snad výkonnostní problémy s velkým počtem pravidel a "obcházení" ipset
em?
Současný model je spíš problematický v tom, že umí až moc a nedá se proto jednodušše optimalizovat - pravidla se musí procházet jedno po druhém, spousta volání funkcí z různých modulů, ... Na druhou stranu to ale přidává možnosti, které žádný jiný OS nemá - pěkný seznam je v xtables-addons. Nemluvě o velmi snadném způsobu napsat si a zkompilovat vlastní modul.
Tak trochu mi totiž přijde, že vedle většího potenciálu pro optimalizaci vznikly nftables spíš protože "admini mají rádi BSD-like pf
".
Čistě ze zvědavosti - poukažte prosím na pár případů "obcházení".
Asi nejtypičtější příklad je, že není možnost přímo udělat logické "or" podmínek a je třeba ho obejít např. tak, že se pomocí pomocného chainu zneguje "and" jejich negací. Je-li to potřeba provést v komplexnější konfiguraci víckrát, přehlednost tím hodně utrpí.
Tak trochu mi totiž přijde, že vedle většího potenciálu pro optimalizaci vznikly nftables spíš protože "admini mají rádi BSD-like pf".
Jak už jsem napsal v první reakci, radši bych tam viděl xtables2, protože si nemyslím, že by stav netfilteru byl tak hrozný, aby ho bylo potřeba zahodit a začít od nuly a úplně jinak. Ale Jan Engelhardt holt není maintainer subsystému.
aby ho bylo potřeba zahodit a začít od nuly a úplně jinak.Aha, to je asi castecna odpoved na vyse polozenou otazku. Naopak, kdyz kopat, tak poradne, je treba protocit mozkove zavity linych adminu ...
Naopak, kdyz kopat, tak poradne, je treba protocit mozkove zavity linych adminu ....
No, uvidíme, jak pochodím s návrhem vyhodit ifconfig
a spol. z defaultní instalace OpenSuSE 13.2 :-)
Nikdy jsem to nepotřeboval, ale to se skutečně dělá na tvrdo před de Morganovy zákonay (A OR B)=NON ((NON A) AND (NON B)) ?Čistě ze zvědavosti - poukažte prosím na pár případů "obcházení".Asi nejtypičtější příklad je, že není možnost přímo udělat logické "or" podmínek a je třeba ho obejít např. tak, že se pomocí pomocného chainu zneguje "and" jejich negací. Je-li to potřeba provést v komplexnější konfiguraci víckrát, přehlednost tím hodně utrpí.
RETURN
y pro případ, že se podmínky nevylučují a akci nesmím provést dvakrát (pokud tedy podmínka nemá side-effect, takže se musím vyhnout jejímu opakovanému vyhodnocení), ale také to není nic povznášejícího a oku lahodícího. Jinak jsem se dost často setkával se situacemi, které jsem neuměl řešit jinak než pomocným chainem, do kterého se poslalo všechno a ze kterého se vyhazovaly pakety přes pravidla s akcí RETURN
a nakonec se pro zbytek provedlo to, co bylo potřeba. Ale to se hodí spíš na situace, kdy naopak potřebuju provést "and" a ty podmínky nejdou z nějakých důvodů dát do jednoho pravidla.
Koneckonců se stačí podívat na to, kolik serverových aplikací podle dokumentace umožňuje nastavit "rozhraní, na kterém program poslouchá", přestože je to také už dávno nesmysl.SO_BINDTODEVICE je už dávno nesmysl?
SO_BINDTODEVICE
? Pochybuji, že to bude aspoň 10 procent, zvlášť když většina má jako argument příslušné konfigurační direktivy adresu.
Příkaz "ip link set dev eth0 up" mi také přijde mnohem přehlednější, než "ifconfig eth0 up".Mne tiez. A desim sa, ked ifconfig z distribucii vypadne, pretoze potom som v prdeli. Syntax 'ip' sa totiz zarucene nikdy nenaucim.
ip link help
, ani man ip-link
.
ifconfig
to dáte z hlavy?
A já zase narážel na to, že jste si jako příklad vybral zrovna něco, co pomocí historických nástrojů udělat AFAIK nejde.
Dokumentace iproute2 je nepochybně nedostatečná. Ale IMHO to je spíš argument pro práci na jejím zlepšení než pro zatracování iproute2 a propagaci obsolentních nástrojů, které čím dál víc zaostávají za možnostmi, které jádro nabízí, a v některých případech nedělají správně ani to, co se tváří že umějí.
Tak to byste se měl obávat už teď, protože už teď to silně omezuje vaši kvalifikaci coby správce linuxových systémů. Vezměme si namátkou pár jednoduchých příkladů:
ip link add mv1 link eth1 type macvlan mode bridge ip link set mv1 netns abc ip link add veth0 type veth peer veth1 ip addrlabel show ip route show table local ip route add unreachable 1.2.3.4 ip rule show ip rule add priority 1000 fwmark 1 table 100 ip netns add test ip netns exec test /bin/bash ip tunnel add sit1 mode sit local 1.2.3.4 remote 5.6.7.8
Jak vypadají ekvivalenty pomocí vámi používaných příkazů? Jsou také přehlednější?
Vezměme si namátkou pár jednoduchých příkladů:Já bych zkusil začít s mnohem kratšími a snad nejčastěji používanými příkazy:
ip a a 1.2.3.4/24 dev eth0 # ifconfig nejspíš nezvládne provést pro dvě adresy ip a # ifconfig nezobrazí některé adresy
ifconfig
a fiktivních virtuálních rozhraní (a doufat, že mu do toho nezasáhne někdo jiný, např. distribuční init skripty), tak se na problém nenarazí (tedy aspoň do chvíle, kdy se těm fiktivním rozhraním pokusí něco nastavit), a do této diskuse jsem tentokrát zabřednout nechtěl. Proto jsem také v příkladech nepoužil nic kolem VLAN, bridge nebo bondingu, protože na to existují alternativní nástroje (vconfig
, brctl
, ifenslave
).
Mne tiez.Hlavně je to nesmysl, stačí ip l s eth0 up. Pro porovnání délky vypsáno pod sebou:
ip l s eth0 up ifconfig eth0 up ifco eth0 up # s použitím tab completion shelluPřijde mi, že to vyjde nastejno.
Syntax 'ip' sa totiz zarucene nikdy nenaucim.Zajímavé, mně naopak pro často používané věci (typu přidání a odstranění adresy a routy) přijde zapamatování snazší u ip. A ty složitější věci stejně hledám v manuálu nebo googlím.
přijde zapamatování snazší u ipMne take.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.