nftables paket filtri 1.0.3 buraxılışı

IPv1.0.3, IPv4, ARP və şəbəkə körpüləri (iptables, ip6table, arptables və ebtables əvəz etmək məqsədi daşıyır) üçün paket filtrləmə interfeyslərini birləşdirən nftables 6 paket filtri buraxılışı nəşr edilmişdir. Nftables 1.0.3 buraxılışının işləməsi üçün tələb olunan dəyişikliklər Linux 5.18 nüvəsinə daxil edilmişdir.

Nftables paketinə istifadəçi məkanında işləyən paket filtri komponentləri daxildir, nüvə səviyyəsi isə 3.13 buraxılışından bəri Linux nüvəsinin bir hissəsi olan nf_tables alt sistemi tərəfindən təmin edilir. Kernel səviyyəsində paketlərdən məlumatların çıxarılması, verilənlər üzərində əməliyyatların yerinə yetirilməsi və axını idarə etmək üçün əsas funksiyaları təmin edən yalnız ümumi protokoldan asılı olmayan interfeys təmin edilir.

Filtrləmə qaydalarının özləri və protokola xas işləyicilər istifadəçi məkanı bayt koduna tərtib edilir, bundan sonra bu bayt kodu Netlink interfeysindən istifadə edərək nüvəyə yüklənir və BPF-ə (Berkeley Paket Filtrləri) bənzəyən xüsusi virtual maşında nüvədə icra olunur. Bu yanaşma nüvə səviyyəsində işləyən filtrləmə kodunun ölçüsünü əhəmiyyətli dərəcədə azaltmağa və təhlil qaydaları və protokollarla işləmək məntiqinin bütün funksiyalarını istifadəçi sahəsinə köçürməyə imkan verir.

Əsas yeniliklər:

  • Set-siyahıları indi maska ​​ilə uyğun gələn şəbəkə interfeysi adlarını dəstəkləyir, məsələn, "*" simvolundan istifadə etməklə: cədvəl inet testifsets { set simple_wild { type ifname bayraqları interval elementləri = { "abcdef*", "othername", "ppp0" } } zəncir v4icmp { növü filter qarmaq giriş prioriteti 0; siyasəti qəbul etmək; iifname @simple_wild sayğac paketləri 0 bayt 0 iifname { "abcdef*", "eth0" } sayğac paketləri 0 bayt 0 } }
  • Əməliyyat zamanı kəsişən dəst siyahısı elementlərinin avtomatik birləşməsini həyata keçirdi. Əvvəllər "avtomatik birləşmə" seçimini təyin edərkən birləşmə qaydaların elan edilməsi mərhələsində həyata keçirilirdi, indi isə prosesə tədricən yeni elementlər əlavə edərkən də işləyir. Məsələn, bəyannamə addımında siyahı müəyyən edilir y { bayraqlar intervalı avtomatik birləşmə elementləri = { 1.2.3.0, 1.2.3.255, 1.2.3.0/24, 3.3.3.3, 4.4.4.4, 4.4.4.4-4.4.4.8. 3.3.3.4, 3.3.3.5, 1.2.3.0 } } elementlərə çevriləcək = {24/3.3.3.3, 3.3.3.5-4.4.4.4, 4.4.4.8-1.2.3.0 } və sonra yeni elementlər əlavə etsəniz # nft element əlavə edin ip xy { 1.2.4.255 -3.3.3.6, 1.2.3.0 } elementlərə çevrilir = { 1.2.4.255-3.3.3.3, 3.3.3.6-4.4.4.4, 4.4.4.8-XNUMX }

    Mövcud diapazonlu elementlərə daxil olan fərdi elementləri siyahıdan sildiyiniz zaman diapazon azalır və ya bölünür.

  • "-o/--optimize" seçimi ilə çağırılan qayda optimallaşdırıcıda birdən çox ünvan tərcüməsi (NAT) qaydalarını xəritə siyahısında birləşdirmək üçün əlavə dəstək. Məsələn, # cat ruleset.nft cədvəli üçün ip x { chain y { type nat hook postrouting priority srcnat; siyasətin azalması; ip saddr 1.1.1.1 tcp dport 8000 snat - 4.4.4.4:80 ip saddr 2.2.2.2 tcp dport 8001 snat - 5.5.5.5:90 } }

    "nft -o -c -f ruleset.nft" yerinə yetirilməsi ayrıca "ip saddr" qaydalarını xəritə siyahısına çevirəcək: snat to ip saddr . tcp dport xəritəsi {1.1.1.1. 8000 : 4.4.4.4 . 80, 2.2.2.2. 8001:5.5.5.5. 90}

    Eynilə, xam ifadələr xəritə siyahılarına çevrilə bilər: # cat ruleset.nft table ip x { […] chain nat_dns_acme { udp length 47-63 @th,160,128 0x0e373135363130333131303735353203 goto62 goto78nst @160,128-0pnd th,0 31393032383939353831343037320x5301e62e get nat_dns_this_78 udp uzunluğu 160,128-0 @th,0 31363436323733373931323934300x5301e62e get nat_dns_saturn_78 udp uzunluğu 160,128-0 @0e, 32393535373539353636383732310e goto nat_dns_saturn_5302 udp uzunluğu 62-78 @th,160,128 0x0e38353439353637323038363633390e goto nat_dns_saturn_5303 buraxın

    optimallaşdırmadan sonra xəritə siyahısı əldə edirik: udp uzunluğu. @th,160,128 vmap {47-63 . 0x0e373135363130333131303735353203 : get nat_dns_dnstc, 62-78 . 0x0e31393032383939353831343037320e : get nat_dns_this_5301, 62-78 . 0x0e31363436323733373931323934300e : get nat_dns_saturn_5301, 62-78 . 0x0e32393535373539353636383732310e : get nat_dns_saturn_5302, 62-78 . 0x0e38353439353637323038363633390e : get nat_dns_saturn_5303 }

  • Birləşdirmə əməliyyatlarında xam ifadələrin istifadəsinə icazə verilir. Məsələn: # nft əlavə qaydası xy ip saddr . @ih,32,32 { 1.1.1.1 . 0x14, 2.2.2.2 . 0x1e } və ya cədvəl x { set y { typeof ip saddr . @ih,32,32 element = { 1.1.1.1 . 0x14 } }
  • Birləşdirmə əməliyyatlarında tam başlıq sahələrini təyin etmək üçün əlavə dəstək: cədvəl inet t { map m1 { typeof udp length . @ih,32,32 : hökm bayraqları interval elementləri = { 20-80 . 0x14: qəbul edin, 1-10. 0xa : drop } } chain c { type filter qarmaq giriş prioriteti 0; siyasətin azalması; udp uzunluğu. @ih,32,32 vmap @m1 } }
  • TCP seçimlərinin sıfırlanması üçün əlavə dəstək (yalnız Linux kernel 5.18+ ilə işləyir): tcp flags syn reset tcp option sack-perm
  • Zəncirvari çıxış əmrlərinin daha sürətli icrası (“nft list chain xy”).

Mənbə: opennet.ru

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