Izdaja paketnega filtra nftables 1.0.7

Objavljena je bila izdaja paketnega filtra nftables 1.0.7, ki poenoti vmesnike za filtriranje paketov za IPv4, IPv6, ARP in omrežne mostove (ki so namenjeni zamenjavi iptables, ip6table, arptables in ebtables). Paket nftables vključuje komponente paketnega filtra, ki se izvajajo v uporabniškem prostoru, medtem ko raven jedra zagotavlja podsistem nf_tables, ki je del jedra Linuxa od izdaje 3.13. Na ravni jedra je na voljo le generični vmesnik, neodvisen od protokola, ki zagotavlja osnovne funkcije za pridobivanje podatkov iz paketov, izvajanje operacij s podatki in nadzor pretoka.

Sama pravila filtriranja in obdelovalci, specifični za protokol, so prevedeni v bajtno kodo uporabniškega prostora, nakar se ta bajtna koda naloži v jedro z uporabo vmesnika Netlink in izvede v jedru v posebnem virtualnem stroju, ki spominja na BPF (Berkeley Packet Filters). Ta pristop omogoča znatno zmanjšanje velikosti filtrirne kode, ki se izvaja na ravni jedra, in premikanje vseh funkcij pravil razčlenjevanja in logike dela s protokoli v uporabniški prostor.

Večje spremembe:

  • Za sisteme Linux 6.2+ je bila dodana podpora za ujemanje protokolov vxlan, geneve, gre in gretap, kar omogoča preproste izraze za preverjanje glav v inkapsuliranih paketih. Če želite na primer preveriti naslov IP v glavi ugnezdenega paketa iz VxLAN, lahko zdaj uporabite pravila (brez potrebe po predhodni dekapsulaciji glave VxLAN in povezovanju filtra z vmesnikom vxlan0): ... udp dport 4789 vxlan ip protokol udp ... udp dport 4789 vxlan ip saddr 1.2.3.0. 24/4789 ... udp dport 1.2.3.4 vxlan ip saddr . vxlan ip daddr { 4.3.2.1 . XNUMX}
  • Implementirana podpora za samodejno združevanje ostankov po delnem izbrisu elementa set-liste, ki omogoča brisanje elementa ali dela obsega iz obstoječega obsega (prej je bilo mogoče obseg izbrisati samo v celoti). Na primer, po odstranitvi elementa 25 s seznama naborov z obsegi 24-30 in 40-50 bodo 24, 26-30 in 40-50 ostali na seznamu. Popravki, potrebni za delovanje samodejnega združevanja, bodo na voljo v popravnih izdajah stabilnih vej jedra 5.10+. # nft list rulesset table ip x { set y { typeof tcp dport flags interval auto-merge elements = { 24-30, 40-50 } } } # nft delete element ip xy { 25 } # nft list rulesset table ip x { set y { typeof tcp dport flags interval auto-merge elements = { 24, 26-30, 40-50 } } }
  • Dovoli uporabo kontaktov in obsegov pri preslikavi prevajanja naslovov (NAT). tabela ip nat { veriga vnaprejšnjega usmerjanja { tip nat hook vnaprejšnjega usmerjanja prioriteta dstnat; politika sprejeti; dnat na ip daddr. tcp dport zemljevid { 10.1.1.136 . 80 : 1.1.2.69 . 1024, 10.1.1.10-10.1.1.20. 8888-8889 : 1.1.2.69 . 2048-2049 } vztrajno } }
  • Dodana podpora za "zadnji" izraz, ki vam omogoča, da ugotovite čas zadnje uporabe elementa pravila ali seznama naborov. Ta funkcija je podprta od jedra Linuxa 5.14. tabela ip x { set y { typeof ip daddr. tcp dport size 65535 flags dynamic,timeout last timeout 1h } chain z { type filter hook output priority filter; politika sprejeti; posodobi @y { ip daddr. tcp dport } } } # nft list set ip xy table ip x { set y { typeof ip daddr. tcp dport size 65535 flags dynamic,timeout last timeout 1h elements = { 172.217.17.14 . 443 nazadnje uporabljeno 1s591ms časovna omejitev 1h poteče 59m58s409ms, 172.67.69.19 . 443 nazadnje uporabljeno 4s636ms časovna omejitev 1h poteče 59m55s364ms, 142.250.201.72 . 443 nazadnje uporabljeno 4s748ms časovna omejitev 1h poteče 59m55s252ms, 172.67.70.134 . 443 nazadnje uporabljeno 4s688ms časovna omejitev 1h poteče 59m55s312ms, 35.241.9.150 . 443 nazadnje uporabljeno 5s204ms časovna omejitev 1h poteče 59m54s796ms, 138.201.122.174. 443 nazadnje uporabljeno 4s537ms časovna omejitev 1h poteče 59m55s463ms, 34.160.144.191. 443 nazadnje uporabljeno 5s205ms časovna omejitev 1h poteče 59m54s795ms, 130.211.23.194 . 443 nazadnje uporabljeno 4s436ms časovna omejitev 1h poteče 59m55s564ms } } }
  • Dodana možnost določanja kvot v nastavljenih seznamih. Če želite na primer določiti kvoto prometa za vsak ciljni naslov IP, lahko podate: table netdev x { set y { typeof ip daddr size 65535 quota over 10000 mbytes } chain y { type filter hook egress device "eth0" priority filter; politika sprejeti; ip daddr @y drop } } # nft add element inet xy { 8.8.8.8 } # ping -c 2 8.8.8.8 # nft list ruleset table netdev x { set y { type ipv4_addr size 65535 quota over 10000 mbytes elements = { 8.8.8.8. 10000 uporabljena kvota nad 196 mbajtov 0 bajtov } } veriga y { tip filter hook izhodna naprava "ethXNUMX" prednostni filter; politika sprejeti; ip daddr @y padec } }
  • Dovoljena je uporaba konstant v nastavljenih seznamih. Na primer, ko kot ključ uporabljate seznam ciljnih naslovov in ID VLAN, lahko neposredno določite številko VLAN (daddr . 123): table netdev t { set s { typeof ether saddr . vlan id size 2048 flags dynamic,timeout timeout 1m } chain c { type filter hook ingress device eth0 priority 0; politika sprejeti; ether type != 8021q posodobi @s { ether daddr. 123 } števec } }
  • Dodan je bil nov ukaz »uniči« za brezpogojno brisanje predmetov (za razliko od ukaza za brisanje ne ustvari ENOENT, ko poskuša izbrisati manjkajoči objekt). Za delovanje potrebujete vsaj jedro Linux 6.3-rc. uniči filter ip tabele

Vir: opennet.ru

Dodaj komentar