Հրապարակվել է փաթեթային ֆիլտրի nftables 1.0.2 թողարկումը, որը միավորում է փաթեթների զտման միջերեսները IPv4, IPv6, ARP և ցանցային կամուրջների համար (նպատակված է փոխարինել iptables, ip6table, arptables և ebtables): Nftables 1.0.2-ի թողարկման համար անհրաժեշտ փոփոխությունները ներառված են Linux միջուկի 5.17-rc-ում:
Nftables փաթեթը ներառում է փաթեթի զտիչ բաղադրիչներ, որոնք աշխատում են օգտագործողի տարածքում, մինչդեռ միջուկի մակարդակի աշխատանքը տրամադրվում է nf_tables ենթահամակարգի կողմից, որը Linux միջուկի մաս է կազմում 3.13-ի թողարկումից ի վեր: Միջուկի մակարդակը ապահովում է միայն ընդհանուր պրոտոկոլից անկախ ինտերֆեյս, որն ապահովում է հիմնական գործառույթները փաթեթներից տվյալներ հանելու, տվյալների գործողություններ կատարելու և հոսքի վերահսկման համար:
Ինքնին զտման կանոնները և պրոտոկոլի հատուկ մշակիչները կազմվում են օգտագործողի տարածության բայթկոդի մեջ, որից հետո այս բայթկոդը բեռնվում է միջուկում՝ օգտագործելով Netlink ինտերֆեյսը և գործարկվում միջուկում հատուկ վիրտուալ մեքենայի մեջ, որը նման է BPF-ին (Berkeley Packet Filters): Այս մոտեցումը հնարավորություն է տալիս զգալիորեն նվազեցնել միջուկի մակարդակով աշխատող զտիչ կոդի չափը և վերլուծության կանոնների բոլոր գործառույթները և արձանագրությունների հետ աշխատելու տրամաբանությունը տեղափոխել օգտվողի տարածք:
Հիմնական նորամուծությունները.
- Ավելացվել է կանոնների օպտիմալացման ռեժիմ, որը միացված է նոր «-o» («--optimize») տարբերակի միջոցով, որը կարող է զուգակցվել «--check» տարբերակի հետ՝ ստուգելու և օպտիմալացնելու կանոնների ֆայլի փոփոխությունները՝ առանց այն փաստացի բեռնելու: . Օպտիմալացումը թույլ է տալիս համատեղել նմանատիպ կանոնները, օրինակ՝ կանոնները. .1 ընդունել ip saddr 1.1.1.1 ip daddr 2.2.2.3 կաթիլ
կմիավորվի մետա iifname-ի մեջ: ip saddr. ip daddr {eth1. 1.1.1.1. 2.2.2.3, էթ1. 1.1.1.2. 2.2.2.5 } ընդունել ip saddr . ip daddr vmap {1.1.1.1. 2.2.2.2. ընդունել, 2.2.2.2. 3.3.3.3: թողնել }
Օգտագործման օրինակ՝ # nft -c -o -f ruleset.test Միաձուլում՝ ruleset.nft:16:3-37: ip daddr 192.168.0.1 հաշվիչ ընդունում ruleset.nft:17:3-37: ip daddr 192.168.0.2 հաշվիչ ընդունում ruleset.nft:18:3-37: ip daddr 192.168.0.3 հաշվիչ ընդունել՝ ip daddr {192.168.0.1, 192.168.0.2, 192.168.0.3 } հաշվիչ փաթեթներ 0 բայթ 0 ընդունել
- Կոմպլեկտների ցուցակներն իրականացնում են ip և tcp տարբերակները, ինչպես նաև sctp հատվածները նշելու հնարավորությունը. set s5 {typof ip option ra value elements = { 1, 1024 } } set s7 { typeof sctp chunk init num-inbound-streams elements = { 1, 4 } } chain c5 { ip option ra value @s5 ընդունել } chain c7 { sctp chunk init num-inbound-streams @s7 accept }
- Ավելացվեց աջակցություն TCP ընտրանքների համար fastopen, md5sig և mptcp:
- Ավելացվել է mp-tcp ենթատեսակի օգտագործման աջակցություն քարտեզագրումներում. tcp տարբերակ mptcp ենթատեսակ 1
- Բարելավված միջուկի կողմից զտման կոդը:
- Flowtable-ն այժմ լիարժեք աջակցություն ունի JSON ձևաչափին:
- Ապահովված է «մերժել» գործողությունը Ethernet-ի շրջանակների համապատասխանող գործողություններում օգտագործելու հնարավորությունը: եթեր saddr aa:bb:cc:dd:ee:ff ip daddr 192.168.0.1 մերժել
Source: opennet.ru