nftables pakete iragazkiaren bertsioa 1.0.7

Pakete-iragazkia nftables 1.0.7 kaleratzea argitaratu da, IPv4, IPv6, ARP eta sare-zubietarako paketeak iragazteko interfazeak bateratuz (iptables, ip6table, arptables eta ebtables ordezkatzera zuzenduta). nftables paketeak erabiltzailearen espazioan exekutatzen diren pakete-iragazki osagaiak biltzen ditu, kernel mailako lana, berriz, nf_tables azpisistemak eskaintzen du, 3.13 bertsiotik Linux nukleoaren parte izan dena. Nukleo mailak protokolotik independentea den interfaze generiko bat eskaintzen du, paketeetatik datuak ateratzeko, datu-eragiketak egiteko eta fluxu-kontrolerako oinarrizko funtzioak eskaintzen dituena.

Iragazte-arauak eta protokoloen berariazko kudeatzaileak bytecode batean konpilatzen dira erabiltzailearen espazioan, eta, ondoren, bytecode hau nukleoan kargatzen da Netlink interfazea erabiliz eta nukleoan exekutatzen da BPF (Berkeley Packet Filters) gogorarazten duen makina birtual berezi batean. Ikuspegi honek nukleo mailan exekutatzen den iragazketa-kodearen tamaina nabarmen murrizteko eta protokoloekin lan egiteko analisi-arauak eta logika funtzio guztiak erabiltzaileen espaziora mugitzeko aukera ematen du.

Aldaketa nagusiak:

  • Linux kernel 6.2+ exekutatzen duten sistemetarako, vxlan, geneve, gre eta gretap protokoloen mapeoetarako euskarria gehitu da, kapsulatutako paketeetako goiburuak egiaztatzeko esamolde errazak ahalbidetuz. Adibidez, VxLAN-en habiaraturiko pakete baten goiburuko IP helbidea egiaztatzeko, orain arauak erabil ditzakezu (lehenik VxLAN goiburua deskapsulatu eta iragazkia vxlan0 interfazera lotu beharrik gabe): ... udp dport 4789 vxlan ip protocol 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 }
  • Multzo-zerrendako elementu bat partzialki ezabatu ondoren hondarrak automatikoki batzeko laguntza inplementatu da, eta horrek aukera ematen du lehendik dagoen barruti batetik elementu bat edo barruti baten zati bat ezabatzeko (lehen, barruti bat guztiz ezaba zitekeen). Adibidez, 25. elementua 24-30 eta 40-50 barrutiak dituen multzo-zerrendatik kendu ondoren, zerrenda 24, 26-30 eta 40-50 izango da. Automerging funtzionatzeko beharrezkoak diren konponketak 5.10+ kernelaren adar egonkorren mantentze-oharraldietan eskainiko dira. # nft list ruleset table ip x { set y { typeof tcp dport flags interval auto-fusion elements = { 24-30, 40-50 } } } # nft delete element ip xy { 25 } # nft list ruleset table ip x { set y { typeof tcp dport flags interval auto-fusion elements = { 24, 26-30, 40-50 } } }
  • Helbideen itzulpena (NAT) mapatzerakoan kontaktuak eta barrutiak erabiltzeko aukera ematen du. table ip nat { chain prerouting { type nat hook prerouting lehentasuna dstnat; politika onartu; dnat ip daddr. tcp dport mapa { 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 } iraunkorra } }
  • "Azken" adierazpenaren euskarria gehitu da, arau-elementu edo multzo-zerrenda baten azken erabileraren ordua jakiteko aukera ematen duena. Eginbidea Linux kernel 5.14tik hasita onartzen da. table ip x { set y { typeof ip daddr . tcp dport size 65535 flags dynamic,timeout last timeout 1h } chain z { type filter hook irteerako lehentasun-iragazkia; politika onartu; eguneratu @y { ip daddr . tcp dport } } } # nft list set ip xy table ip x { set y { typeof ip daddr . tcp dport size 65535 banderak dinamikoa, denbora-muga azken denbora-muga 1h elementuak = { 172.217.17.14 . 443 azken erabilitako 1s591ms denbora-muga 1h iraungitzen da 59m58s409ms, 172.67.69.19. 443 azken erabilitako 4s636ms denbora-muga 1h iraungitzen da 59m55s364ms, 142.250.201.72. 443 azken erabilitako 4s748ms denbora-muga 1h iraungitzen da 59m55s252ms, 172.67.70.134. 443 azken erabilitako 4s688ms denbora-muga 1h iraungitzen da 59m55s312ms, 35.241.9.150. 443 azken erabilitako 5s204ms denbora-muga 1h iraungitzen da 59m54s796ms, 138.201.122.174. 443 azken erabilitako 4s537ms denbora-muga 1h iraungitzen da 59m55s463ms, 34.160.144.191. 443 azken erabilitako 5s205ms denbora-muga 1h iraungitzen da 59m54s795ms, 130.211.23.194. 443 azken erabilitako 4s436ms denbora-muga 1h iraungitzen da 59m55s564ms } } }
  • Zerrendetan kuotak definitzeko gaitasuna gehitu da. Esate baterako, helburuko IP helbide bakoitzaren trafiko-kuota zehazteko, zehaztu dezakezu: table netdev x { set y { typeof ip daddr size 65535 quote over 10000 mbyte } chain y { type filter hook egress device "eth0" lehentasun-iragazkia; politika onartu; ip daddr @y drop } } # nft gehitu elementua 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 kuota 10000 mbyte baino gehiagoko elementu = { 8.8.8.8. 10000 kuota 196 mbyte baino gehiago erabiltzen 0 byte } } chain y { motako iragazkia kako irteteko gailua β€œethXNUMX” lehentasun-iragazkia; politika onartu; ip daddr @y drop }}
  • Multzo-zerrendetan konstanteak erabiltzea onartzen da. Adibidez, helmuga helbidea eta VLAN ID zerrenda-gako gisa erabiltzean, zuzenean zehaztu dezakezu VLAN zenbakia (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 onartu; ether mota != 8021q eguneratzea @s { ether daddr . 123 } kontagailua } }
  • Objektuak baldintzarik gabe ezabatzeko "suntsitu" komando berri bat gehitu da (ezabatu komandoak ez bezala, ez du ENOENT sortzen falta den objektu bat ezabatzen saiatzean). Gutxienez Linux kernel 6.3-rc behar du funtzionatzeko. suntsitu taula ip iragazkia

Iturria: opennet.ru

Gehitu iruzkin berria