paket filtrinin buraxılışı , inkişaf edən iptables, ip6table, arptables və ebtables yerini tutmaq üçün IPv4, IPv6, ARP və şəbəkə körpüləri üçün paket filtrasiya interfeyslərinin birləşdirilməsinə əsaslanır. nftables paketində istifadəçi məkanında fəaliyyət göstərən paket filtr komponentləri daxildir, kernel səviyyəsində isə Linux-un 3.13 buraxılışından etibarən nf_tables alt sistemi fəaliyyət göstərir. nftables 0.9.3 buraxılışı üçün lazım olan dəyişikliklər gələcək Linux 5.5 kernel qismində daxil edilmişdir.
Kernel səviyyəsində konkret protokoldan asılı olmayan ümumi bir interfeys təqdim edilir və paketlərdən məlumatları çıxarmaq, məlumatlarla əməliyyatlar aparmaq və axın idarəetməsi üçün əsas funksiyalar təmin edir. Filtrasiya məntiqi və protokola spesifik emalçılar istifadəçi məkanında byte koduna tərtib olunur, daha sonra bu byte kod Netlink interfeysi vasitəsilə kernelə yüklənir və BPF (Berkeley Packet Filters)-ə bənzər xüsusi virtual maşında icra olunur. Bu yanaşma kernel səviyyəsində filtrasiya kodunun ölçüsünü əhəmiyyətli dərəcədə azaltmağa imkan verir və qayda analiz funksiyalarını və protokollarla işləmə məntiqini istifadəçi məkanına keçirir.
Əsas yeniliklər:
- Paketlərin zamanla uyğunlaşmasını dəstəkləyir. Qaydanın işləməsi üçün həm dəqiqələrdə, həm də tarixlərdə aralığı müəyyənləşdirmək mümkündür, eyni zamanda müəyyən günlərdə işləməyi tənzimləmək mümkündür. Yeni «-T» seçimi, epoxal vaxtın saniyələrlə çıxarılması üçün əlavə olunub.
meta time "2019-12-24 16:00" — "2020-01-02 7:00"
meta hour "17:00" — "19:00"
meta day "Fri" - SELinux (secmark) etiketlərinin bərpa və saxlama dəstəyi.
ct secmark set meta secmark
meta secmark set ct secmark - Bir neçə qaydanı backend-də müəyyən etməyə imkan verən synproxy map-larını dəstəkləyir.
table 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
}chain 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" }
}
} - Paket emalı qaydalarından set-küme elementlərini dinamik olaraq silmək imkanı.
nft add rule … delete @set5 { ip6 saddr . ip6 daddr }
- VLAN-ları identifikator və protokol üzrə meta məlumatlarda müəyyən edilmiş interfeysə uyğunlaşdırmaq dəstəyi;
meta ibrpvid 100
meta ibrvproto vlan - «-t» («—terse») seçimi, qaydaları göstərərkən set-küme elementlərinin xaric edilməsi üçün. "nft -t list ruleset" işləndikdə göstərəcəkdir:
table ip x {
set y {
type ipv4_addr
}
}Və "nft list ruleset" zamanı
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 }
}
} - Şəbəkə cihazları zəncirlərində bir neçə cihazın göstərilməsi imkanı (yalnız 5.5 kernel ilə işləyir) üçün standart filtrasiya qaydalarını birləşdirmək.
add table netdev x
add chain netdev x y { \
type filter hook ingress devices = { eth0, eth1 } priority 0;
} - Məlumat növü tipləri üçün təsvirlərin əlavə edilməsi imkanı.
# nft describe ipv4_addr
datatype ipv4_addr (IPv4 address) (basetype integer), 32 bits - CLI interfeysinin linenoise kitabxanası ilə libreadline əvəzinə yığılması imkanı.
./configure —with-cli=linenoise
Mənbə: opennet.ru
