Přihřeju si vlastní polívčičku - napsal jsem pro RHEL6 / CentOS6 init skript kterým lze ukládat a při bootu znovu načítat existující IPSET tabulky a položky.
Použití je velice jednoduché - service ipset save všechno uloží a pokud je služba nastavená aby se spustila při bootu (takže chkconfig ipset on) tak se pak vše znovu načte.
Umí to i při ukládání ignorovat některé tabulky, případně uložit tabulku ale ignorovat položky (to se hodí např. u těch fail2ban tabulek). Konfigurace celkem očekávatelně v /etc/sysconfig/ipset
K dostání tady: https://github.com/mludvig/ipset-init
Případně hotové RPM tady: http://download.opensuse.org/repositories/home:/mludvig:/elml/CentOS_CentOS-6/noarch/
Ctu domovskou stranku projektu, a hned prvni veta zni:
"...IP sets are a framework inside the Linux 2.4.x and 2.6.x kernel, which can be administered by the ipset utility..."
Kernel rady 3.x ipset nepodporuje???
Spíš by mě zajímala podpora v >3.12 ... tedy pro nftables. Nějak jsem to zatím totiž nepochopil. Nftables to používá interně, ale jestli je možnost to použít i samostatně, jakoby postaru.
Mám jádro 3.14.7 a ipset mi funguje. Jen nevím, jestli je jej možné volat z nftables. Nejspíš ne, ale moc mě nenapadá, proč by někdo něco takového potřeboval. S iptables to samozřejmě funguje bez problému.
Třeba protože máš hotové automatické aktualizace jednotlivých ipsetů a nechce se ti to předělávat.
Přijde mi totiž jednodušší aktualizovat samostatně jeden velký (a jeden z mnoha) ipsetů, než volat binárku nftables, která překompiluje všechno a všechno hodí do jádra ... Ono to asi fungovat bude, ale osobně mi to prostě přijde lepší ipsetem.
Ale zase existuje program pro synchronizaci těch map v nftables. Což by také mohlo něco řešit ...
Ono já mám přeci jenom jiné potřeby, než má někdo na desktopu nebo na aplikačním serveru.
Asi si úplně nerozumíme. Pokud nechceš předělávat firewall, můžeš a minimálně několik dalších let budeš moci nadále používat iptables, i s novými jádry.
Přechod na nftables bude vyžadovat poměrně zásadní přepracování firewallu, už jenom proto, že všechny matchery, včetně ipset, se stěhují do userspace, takže si nemyslím, že by byl problém při té příležitosti předělat i systém automatických aktualizací, aby používal nftables.
To není pravda, aktuálně mě to běží na Debianu s kernelem 3.2.0
Na este lepsiu optimalizaciu niektorych popisanych rieseni by bolo vhodne pouzit CONNMARK tzn oznacenie celeho spojenia a nasledna praca z celym spojenim namiesto matchovanim kazdeho packetu cez ipset. Takto sa kazdy packet hashuje 2x, prvy krat v connection tracking(tam sa hashuje vzdy) a druhy krat v ipset module. Samozrejme toto riesenie je vhodne len v pripade ze tzv dlhy zoznam bude povolovat prevadzku (nie blokovat pretoze tam sa zahadzuje prvy packet a conntrack je nevyuzitelny na popisovanu optimalizaciu).