Portál AbcLinuxu, 4. května 2025 17:35

Dotaz: nftables sets/maps

23.6.2015 09:07 shadowrunner
nftables sets/maps
Přečteno: 435×
Odpovědět | Admin
Ahoj,

mám takový dotaz ohledně nftables.

Mám hodně kombinací zdrojová IP adresa (nebo rozsah), zdrojový port
1.1.1.1:80
192.168.1.0/24:443
...
Existuje nějaký způsob jak přes nftables tohle nacpat do jednoho pravidla, podobně jako to jde udělat s ipsets?
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

23.6.2015 09:56 NN
Rozbalit Rozbalit vše Re: nftables sets/maps
Odpovědět | | Sbalit | Link | Blokovat | Admin
advanced data structures
23.6.2015 10:34 shadowrunner
Rozbalit Rozbalit vše Re: nftables sets/maps

Díky za odpověď. Tohle už jsem ovšem četl a nemůžu z toho vykoukat jak použít kombinaci adresa port. S iptables+ipset se to provádí následovně:

iptables -A chain -i eth2 -m set --match-set jméno_ipsetu src,src -j DROP
Kde ipset je typu hash:net,port

U nftables můžu udělat:

nft add rule filter output tcp sport { 80, 443 } ip saddr { 1.1.1.1, 192.168.1.0/24 } drop
Ale to mi zahodí všechny kombinace:
1.1.1.1:80
1.1.1.1:443
192.168.1.0/24:80
192.168.1.0/24:443
Já potřebuju zahodit pouze:
1.1.1.1:80
192.168.1.0/24:443

23.6.2015 12:48 NN
Rozbalit Rozbalit vše Re: nftables sets/maps
Dole u slivniku je jak si nadefinovat vlastni mapu, kterou muzes nasledne aplikovat, neco jako:
nft add map filter mapa { type ipv4_addr : inet_service\; }
nft add element filter mapa { 1.1.1.1 : 80, 8888 192.168.1.0/24 : 443 }
nft add rule filter output ip saddr vmap @mapa drop
Jen napad na slepo..
23.6.2015 16:04 shadowrunner
Rozbalit Rozbalit vše Re: nftables sets/maps
Nějak podobně jsem si s tím už hrál. Bohužel se mi nepodařilo přesvědčit nft, aby chápal hodnotu z té mapy jako tcp sport
nft add rule filter output ip saddr tcp sport vmap @mapa drop
Nefunguje. A zatím jsem nikde nenašel způsob jak to nastavit. Navíc i pokud by se mi to povedlo, tak to není to, co potřebuju.

Např. budu chtít zablokovat:
10.0.0.1:80
10.0.0.1:443
A nftables mi vyhodí
nft add map filter dalsi_pokus { type ipv4_addr : inet_service\; }
nft add element filter dalsi_pokus { 10.0.0.1 : 80, 10.0.0.1 : 443}
cmdline:1:1-63: Error: Could not process rule: File exists
add element filter dalsi_pokus { 10.0.0.1 : 80, 10.0.0.1 : 443}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Já bych prostě potřeboval set, ve kterém bude jako klíč kombinace IP a portu. A následně přesvědčit nft, že to první je vzdálená adresa a to druhé je vzdálený port.
23.6.2015 22:49 NN
Rozbalit Rozbalit vše Re: nftables sets/maps
Tak problem je v tom, ze mapa se chova jako slovnik a nemuze mit identicke klice. Pro pripad ruznych sluzeb na identickych adresach a naopak je to nepouzitelne.

No mohl by jsi z dvojic generovat XML/JSON a ten za jizdy importovat(jeste neni dopsano, ale pracuje se na tom..).

Tzn. momentalne zadne reseni.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.