Utgivning av paketfiltret nftables 1.0.7

UtgÄvan av nftables paketfilter 1.0.7 har publicerats, vilket enar grÀnssnitten för paketfiltrering för IPv4, IPv6, ARP och nÀtverksbroar (inriktad pÄ att ersÀtta iptables, ip6tables, arptables och ebtables). Nftables-paketet innehÄller komponenter för paketfilter som arbetar i anvÀndarutrymmet, medan kÀrnnivÄns arbete tillhandahÄlls av delsystemet nf_tables, som ingÄr i Linux-kÀrnan frÄn version 3.13. PÄ kÀrnnivÄ tillhandahÄlls endast ett allmÀnt grÀnssnitt som inte Àr beroende av nÄgot specifikt protokoll och som erbjuder grundlÀggande funktioner för datautvinning frÄn paket, databehandling och strömhantering.

SjÀlva filtreringsreglerna och protokollspecifika hanterare kompileras till bytekod i anvÀndarrummet, som sedan laddas in i kÀrnan via Netlink-grÀnssnittet och utförs i kÀrnan i en speciell en virtuell maskin, liknande BPF (Berkeley Packet Filters). Denna metod gör det möjligt att avsevÀrt minska storleken pÄ den filterkod som körs pÄ kÀrnnivÄ och flytta alla funktioner för tolkning av regler och logik som rör protokoll till anvÀndarrummet.

Huvudsakliga förÀndringar:

  • För system med Linux-kĂ€rna 6.2+ har stöd för protokollavstĂ€mning av vxlan, geneve, gre och gretap lagts till, vilket möjliggör anvĂ€ndning av enkla uttryck för att kontrollera rubriker i inkapslade paket. Till exempel för att kontrollera IP-adresser i rubriken för ett inkapslat paket frĂ„n VxLAN kan man nu anvĂ€nda regler (utan att behöva avkapitulera rubriken VxLAN i förvĂ€g och koppla filtret till grĂ€nssnittet vxlan0): 
 udp dport 4789 vxlan ip protocol udp 
 udp dport 4789 vxlan ip saddr 1.2.3.0/24 
 udp dport 4789 vxlan ip saddr . vxlan ip daddr { 1.2.3.4 . 4.3.2.1 }
  • Stöd för automatisk sammanslagning av rester efter partiell borttagning av element ur set-listan har implementerats, vilket gör det möjligt att ta bort ett element eller en del av en intervall frĂ„n ett befintligt intervall (tidigare kunde ett intervall endast tas bort helt). Till exempel, efter att ha tagit bort element 25 frĂ„n set-listan med intervall 24-30 och 40-50, kommer listan att innehĂ„lla 24, 26-30 och 40-50. Korrigeringar som behövs för att aktivera automatiskt sammanslagning kommer att erbjudas i korrigerande utgĂ„vor av stabila kĂ€rnversioner 5.10+. # nft list ruleset table ip x { set y { typeof tcp dport flags interval auto-merge elements = { 24-30, 40-50 } } } # nft delete element ip x y { 25 } # nft list ruleset table ip x { set y { typeof tcp dport flags interval auto-merge elements = { 24, 26-30, 40-50 } } }
  • AnvĂ€ndning av kontaktpunkter och intervall för adresstranslation (NAT) har godkĂ€nts. table ip nat { chain prerouting { type nat hook prerouting priority dstnat; policy accept; dnat to ip daddr . tcp dport map { 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 } persistent } }
  • Stödet för uttrycket "last" har lagts till, vilket gör det möjligt att ta reda pĂ„ tidpunkten för den senaste anvĂ€ndningen av ett element i regeln eller set-listan. Möjligheten stöds frĂ„n och med kĂ€rna Linux 5.14. table 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; policy accept; update @y { ip daddr . tcp dport } } } # nft list set ip x y table ip x { set y { typeof ip daddr . tcp dport size 65535 flags dynamic,timeout last timeout 1h elements = { 172.217.17.14 . 443 last used 1s591ms timeout 1h expires 59m58s409ms, 172.67.69.19 . 443 last used 4s636ms timeout 1h expires 59m55s364ms, 142.250.201.72 . 443 last used 4s748ms timeout 1h expires 59m55s252ms, 172.67.70.134 . 443 last used 4s688ms timeout 1h expires 59m55s312ms, 35.241.9.150 . 443 last used 5s204ms timeout 1h expires 59m54s796ms, 138.201.122.174 . 443 last used 4s537ms timeout 1h expires 59m55s463ms, 34.160.144.191 . 443 last used 5s205ms timeout 1h expires 59m54s795ms, 130.211.23.194 . 443 last used 4s436ms timeout 1h expires 59m55s564ms } } }
  • Möjligheten att definiera kvoter i set-listor har lagts till. Till exempel, för att definiera en kvot för trafik för varje mĂ„lad IP-adress kan du ange: table netdev x { set y { typeof ip daddr size 65535 quota over 10000 mbytes } chain y { type filter hook egress device «eth0» priority filter; policy accept; ip daddr @y drop } } # nft add element inet x y { 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 quota over 10000 mbytes used 196 bytes } } chain y { type filter hook egress device «eth0» priority filter; policy accept; ip daddr @y drop } }
  • AnvĂ€ndning av konstanter i set-listor har tillĂ„tits. Till exempel, nĂ€r man anvĂ€nder destinationsadressen och VLAN-ID som nyckel i listan kan man direkt ange VLAN-numret (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; policy accept; ether type != 8021q update @s { ether daddr . 123 } counter } }
  • Ett nytt kommando "destroy" har lagts till för oĂ„terkallelig borttagning av objekt (till skillnad frĂ„n kommandot delete, som inte genererar ENOENT vid försök att radera ett icke-existerande objekt). För att fungera krĂ€vs minst kĂ€rna Linux 6.3-rc. destroy table ip filter

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster