nftables փաթեթային ֆիլտր 0.9.9 թողարկում

Հրապարակվել է փաթեթային ֆիլտրի nftables 0.9.9 թողարկումը, որը միավորում է փաթեթների զտման միջերեսները IPv4, IPv6, ARP և ցանցային կամուրջների համար (նպատակված է փոխարինել iptables, ip6table, arptables և ebtables): Միևնույն ժամանակ հրապարակվել է ուղեկից գրադարանի libnftnl 1.2.0 թողարկումը, որն ապահովում է ցածր մակարդակի API՝ nf_tables ենթահամակարգի հետ փոխգործակցության համար։ Nftables 0.9.9-ի թողարկման համար անհրաժեշտ փոփոխությունները ներառված են Linux միջուկում 5.13-rc1:

Nftables փաթեթը ներառում է փաթեթի զտիչ բաղադրիչներ, որոնք աշխատում են օգտագործողի տարածքում, մինչդեռ միջուկի մակարդակի աշխատանքը տրամադրվում է nf_tables ենթահամակարգի կողմից, որը Linux միջուկի մաս է կազմում 3.13-ի թողարկումից ի վեր: Միջուկի մակարդակը ապահովում է միայն ընդհանուր պրոտոկոլից անկախ ինտերֆեյս, որն ապահովում է հիմնական գործառույթները փաթեթներից տվյալներ հանելու, տվյալների գործողություններ կատարելու և հոսքի վերահսկման համար:

Ինքնին զտման կանոնները և պրոտոկոլի հատուկ մշակիչները կազմվում են օգտագործողի տարածության բայթկոդի մեջ, որից հետո այս բայթկոդը բեռնվում է միջուկում՝ օգտագործելով Netlink ինտերֆեյսը և գործարկվում միջուկում հատուկ վիրտուալ մեքենայի մեջ, որը նման է BPF-ին (Berkeley Packet Filters): Այս մոտեցումը հնարավորություն է տալիս զգալիորեն նվազեցնել միջուկի մակարդակով աշխատող զտիչ կոդի չափը և վերլուծության կանոնների բոլոր գործառույթները և արձանագրությունների հետ աշխատելու տրամաբանությունը տեղափոխել օգտվողի տարածք:

Հիմնական նորամուծությունները.

  • Գործարկվել է հոսքի աղյուսակի մշակումը ցանցային ադապտերի կողմ տեղափոխելու հնարավորությունը, որը միացված է «բեռնաթափման» դրոշակի միջոցով: Flowtable-ը փաթեթների վերահասցեավորման ուղին օպտիմալացնելու մեխանիզմ է, որում կանոնների մշակման բոլոր շղթաների ամբողջական անցումը կիրառվում է միայն առաջին փաթեթի վրա, իսկ հոսքի մյուս բոլոր փաթեթները ուղղակիորեն փոխանցվում են: սեղանի ip global { flowtable f { hook ingress priority filter + 1 device = { lan3, lan0, wan } flags offload } chain forward { type filter hook forward priority filter; քաղաքականության ընդունում; ip արձանագրություն { tcp, udp } flow add @f } chain post { type nat hook postrouting priority filter; քաղաքականության ընդունում; oifname «wan» դիմակահանդես } }
  • Ավելացվեց սեփականատիրոջ դրոշը սեղանին կցելու աջակցություն՝ գործընթացի միջոցով աղյուսակի բացառիկ օգտագործումը ապահովելու համար: Երբ գործընթացն ավարտվում է, դրա հետ կապված աղյուսակը ինքնաբերաբար ջնջվում է: Գործընթացի մասին տեղեկատվությունը ցուցադրվում է կանոնների աղբավայրում մեկնաբանության տեսքով. աղյուսակ ip x { # progname nft flags սեփականատեր շղթա y { type filter hook input priority filter; քաղաքականության ընդունում; հաշվիչ փաթեթներ 1 բայթ 309 } }
  • Ավելացված է աջակցություն IEEE 802.1ad-ի ճշգրտմանը (VLAN stacking կամ QinQ), որը սահմանում է մի քանի VLAN պիտակներ մեկ Ethernet շրջանակի մեջ փոխարինելու միջոց: Օրինակ՝ արտաքին Ethernet շրջանակի 8021ad և vlan id=342 տեսակը ստուգելու համար կարող եք օգտագործել ... ether type 802.1ad vlan id 342 կոնստրուկցիան՝ ստուգելու Ethernet շրջանակի արտաքին տեսակը 8021ad/vlan id=1, nested 802.1: q/vlan id=2 և հետագա IP փաթեթի ինկապսուլացիա՝ ... եթերի տեսակ 8021ad vlan id 1 vlan տեսակ 8021q vlan id 2 vlan տիպի ip հաշվիչ
  • Ավելացվեց աջակցություն ռեսուրսների կառավարման համար՝ օգտագործելով cgroups միասնական հիերարխիա v2: cgroups v2 և v1 հիմնական տարբերությունը cgroups-ի ընդհանուր հիերարխիայի օգտագործումն է բոլոր տեսակի ռեսուրսների համար, CPU-ի ռեսուրսների բաշխման, հիշողության սպառումը կարգավորելու և I/O-ի համար առանձին հիերարխիայի փոխարեն: Օրինակ՝ ստուգելու համար, թե արդյոք cgroupv2 առաջին մակարդակի վարդակի նախահայրը համընկնում է «system.slice» դիմակին, կարող եք օգտագործել կառուցվածքը՝ ... socket cgroupv2 մակարդակ 1 «system.slice»
  • Ավելացվեց SCTP փաթեթների բաղադրիչները ստուգելու հնարավորությունը (դրա համար պահանջվող ֆունկցիոնալությունը կհայտնվի Linux միջուկում 5.14): Օրինակ՝ ստուգելու համար, թե արդյոք փաթեթը պարունակում է «տվյալներ» տիպով և «տիպ» դաշտի կտոր.
  • Կանոնների բեռնման գործողության կատարումն արագացվել է մոտ երկու անգամ՝ օգտագործելով «-f» դրոշակը: Արագացվել է նաև կանոնների ցանկի թողարկումը։
  • Տրվում է կոմպակտ ձև՝ ստուգելու համար, թե արդյոք դրոշի բիթերը դրված են: Օրինակ՝ ստուգելու համար, որ snat և dnat կարգավիճակի բիթերը սահմանված չեն, կարող եք նշել՝ ... ct status ! snat,dnat ստուգելու համար, որ syn bit-ը սահմանված է bitmask syn,ack: ... tcp flags syn / syn,ack ստուգելու համար, որ fin և rst բիթերը սահմանված չեն bitmask syn,ack,fin,rst: ... tcp դրոշներ ! = fin,rst / syn,ack,fin,rst
  • Թույլատրել «դատավճիռ» հիմնաբառը սահմանված/քարտեզի տեսակի սահմանումների մեջ. ավելացնել քարտեզ xm { typeof iifname . ip արձանագրություն th dport: դատավճիռ;}

Source: opennet.ru

Добавить комментарий