հիմնական փաթեթային ֆիլտրի թողարկում , որը զարգանում է ի որպես փոխարինում iptables, ip6tables, arptables և ebtables, միաժամանակ միավորելով փաթեթների ֆիլտրավորման ինտերֆեյսները IPv4, IPv6, ARP և ցանցային կամուրջների համար։ nftables փաթեթը ներառում է օգտվողի пространстве աշխատող փաթեթների ֆիլտրավորման հանգույցներ, մինչդեռ միջուկի մակարդակում աշխատանքը ապահովում է nf_tables ենթակառուցվածքը, որը ներառված է Linux միջուկում սկսած 3.13 թողարկումից։ nftables 0.9.3 թողարկման համար անհրաժեշտ փոփոխությունները ներառված են ապագա Linux միջուկի 5.5 ճյուղում։
Միջուկի մակարդակում տրամադրվում է միայն ընդհանուր ինտերֆեյս, որը կախված չէ հատուկ պրոտոկոլից և ապահովում է տվյալների քաղելու հիմնական ֆունկցիաները, տվյալների վրա գործողությունների իրականացումը և հոսքի կառավարումը։ Հատուկ ֆիլտրավորման տրամաբանությունն ու պրոտոկոլներին հատուկ պրոցեսորները կոմպիլացվում են байткոդի ռեժիմով օգտվողի пространстве, հետո այդ байткոդը ներբեռնվում է միջուկ, օգտագործելով Netlink ինտերֆեյսը և իրականանում է հատուկ վիրտուալ մեքենայում, որի նմանությունը պատերազմի ֆիլտրերին (BPF)։ Այս մոտեցումը մեծապես նվազեցնում է միջուկի մակարդակում աշխատող ֆիլտրավորման կոդի չափը, իսկ բոլոր կանոնների ուսումնասիրման ֆունկցիաներն ու պրոտոկոլների հետ աշխատելու տրամաբանությունը տեղափոխվում են օգտվողի пространстве։
Կարևոր նորույթները:
- Հարմարեցում շահումների ժամանակը։ Կարող եք սահմանել ինչպես ժամանակների և ամսաթվերի շարք, որոնց ընթացքում կանոն օգտագործվում է, այնպես էլ կանոնների ակտիվացումները յուրաքանչյուր շաբաթվա որոշակի օրերին։ Նոր «-T» ընտրանքը նույնպես ավելացվել է, որը թվային ժամանակի արտադրմանը թույլ է տալիս секунդներով։
meta time "2019-12-24 16:00" — "2020-01-02 7:00"
meta hour "17:00" — "19:00"
meta day "Fri" - SELinux (secmark) նշումներ վերականգնման և պահպանման աջակցություն։
ct secmark set meta secmark
meta secmark set ct secmark - synproxy map-սписокների աջակցություն, որոնք թույլ են տալիս սահմանել մեկից ավելի կանոններ բեքենդի համար։
լիցենզիա ip foo {
synproxy https-synproxy {
mss 1460
wscale 7
timestamp sack-perm
}synproxy other-synproxy {
mss 1460
wscale 5
}chain pre {
type filter hook prerouting priority raw; policy accept;
tcp dport 8888 tcp flags syn notrack
}աբով bar {
type filter hook forward priority filter; policy accept;
ct state invalid,untracked synproxy name ip saddr map { 192.168.1.0/24 : "https-synproxy", 192.168.2.0/24 : "other-synproxy" }
}
} - Dynamic түрде set-համայնքի տարրերի հեռացման հնարավորություն ֆիլտրացման կանոններում։
nft add rule … delete @set5 { ip6 saddr . ip6 daddr }
- VLAN-ների համարժեքության աջակցություն նպատակայնի ըստ պարզման և պրոտոկոլի, որը սահմանվել է ցանցային կամրջի ինտերֆեյսի մետագիտություններում;
meta ibrpvid 100
meta ibrvproto vlan - «-t» ("—terse") ընտրանքը set-համայնքի տարրերը բացառելու համար կանոնների ցուցադրման ժամանակ։ «nft -t list ruleset» հրամանն իրականացնելիս ցուցադրվելու է:
table ip x {
set y {
type ipv4_addr
}
}Եվ երբ «nft list ruleset»
table ip x {
set y {
type ipv4_addr
elements = { 192.168.10.2, 192.168.20.1,
192.168.4.4, 192.168.2.34 }
}
} - Կատարվածի հնարավորություն մի քանի սարքերի հաշվարկման հետևյալների netdev-ներում (աշխատում է միայն 5.5 միջուկով) համապատասխանված կանոնների տեսակների համար։
add table netdev x
add chain netdev x y { \
type filter hook ingress devices = { eth0, eth1 } priority 0;
} - Տվյալների տեսակների նկարագրությունների ավելացման հնարավորություն։
# nft describe ipv4_addr
datatype ipv4_addr (IPv4 հասցե) (basetype integer), 32 bits - CLI-հրահանգատուի հավաքման հնարավորություն linenoise գրադարանով libreadline-ի փոխարեն։
.\/configure —with-cli=linenoise
Ընտանիք: opennet.ru
