Нусхаи филтри бастаи nftables 1.0.3

Нашри филтри пакети nftables 1.0.3 нашр шуд, ки интерфейсҳои филтркунии бастаҳоро барои IPv4, IPv6, ARP ва пулҳои шабакавӣ муттаҳид мекунад (барои иваз кардани iptables, ip6table, arptables ва ebtables). Тағиротҳое, ки барои версияи nftables 1.0.3 барои кор заруранд, ба ядрои Linux 5.18 дохил карда шудаанд.

Бастаи nftables ҷузъҳои филтри бастаҳоро дар бар мегирад, ки дар фазои корбар кор мекунанд, дар ҳоле ки кори сатҳи ядро ​​аз ҷониби зерсистемаи nf_tables таъмин карда мешавад, ки аз замони нашри 3.13 қисми ядрои Linux мебошад. Сатҳи ядро ​​​​танҳо интерфейси мустақили протоколро таъмин мекунад, ки вазифаҳои асосиро барои истихроҷи додаҳо аз пакетҳо, иҷрои амалиёти додаҳо ва назорати ҷараён таъмин мекунад.

Қоидаҳои филтркунӣ ва коркардкунандагони мушаххаси протокол дар фазои корбар ба байткод тартиб дода мешаванд, ки баъд аз он ин байт код бо истифода аз интерфейси Netlink ба ядро ​​бор карда мешавад ва дар ядро ​​дар мошини махсуси виртуалӣ, ки BPF-ро (Беркли Пакет Филтрҳо) ба ёд меорад, иҷро мешавад. Ин равиш ба шумо имкон медиҳад, ки андозаи коди филтркуниро, ки дар сатҳи ядро ​​кор мекунад, хеле кам кунед ва тамоми функсияҳои қоидаҳои таҳлил ва мантиқи кор бо протоколҳоро ба фазои корбар интиқол диҳед.

Навовариҳои асосӣ:

  • Рӯйхати маҷмӯаҳо ҳоло номҳои мувофиқи интерфейси шабакаро бо ниқоб дастгирӣ мекунанд, масалан, бо истифода аз аломати "*" муайяншуда: table inet testifsets { set simple_wild { type ifname flags elements interval = { "abcdef*", "othername", "ppp0" } } занҷири v4icmp {навъи филтр авлавияти вуруди қалмоқ 0; қабули сиёсат; iifname @simple_wild бастаҳои ҳисобкунак 0 байт 0 iifname { “abcdef*”, “eth0” } бастаҳои ҳисобкунанда 0 байт 0 } }
  • Якҷоякунии автоматии унсурҳои рӯйхатҳои ҷудошаванда ҳангоми кор амалӣ карда шуд. Пештар, вақте ки опсияи "авто-муттаҳидшавӣ" муқаррар карда шуда буд, якҷоякунӣ дар марҳилаи эълони қоидаҳо анҷом дода мешуд, аммо ҳоло он инчунин вақте кор мекунад, ки унсурҳои нав дар давоми амалиёт тадриҷан илова карда мешаванд. Масалан, дар марҳилаи эъломия, рӯйхат маҷмӯи y { flags interval auto-merge elements = { 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/24, 3.3.3.3-3.3.3.5, 4.4.4.4-4.4.4.8 } ва агар шумо унсурҳои нав илова кунед # nft элемент илова кунед ip xy {1.2.3.0 -1.2.4.255, 3.3.3.6 } ба унсурҳо монанд хоҳад буд = {1.2.3.0-1.2.4.255, 3.3.3.3-3.3.3.6, 4.4.4.4-4.4.4.8 }

    Вақте ки шумо ҷузъҳои алоҳидаро аз рӯйхат хориҷ мекунед, ки ба ҷузъҳои диапазони мавҷуда дохил мешаванд, диапазон кӯтоҳ ё тақсим мешавад.

  • Дастгирии якҷоя кардани қоидаҳои тарҷумаи суроғаҳои сершумор (NAT) дар рӯйхати харита ба оптимизатори қоидаҳо илова карда шудааст, ки ҳангоми муайян кардани опсияи “-o/—optimize” даъват карда мешавад. Масалан, барои маҷмӯи # cat ruleset.nft table ip x { chain y { type nat hook postrouting priority srcnat; паст кардани сиёсат; 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" қоидаҳои алоҳидаи "ip saddr" -ро ба рӯйхати харита табдил медиҳад: snat ба ip saddr . Харитаи tcp dport {1.1.1.1. 8000: 4.4.4.4. 80, 2.2.2.2. 8001: 5.5.5.5. 90}

    Ба ҳамин монанд, ибораҳои хомро ба рӯйхати харитаҳо табдил додан мумкин аст: # cat ruleset.nft table ip x { […] chain nat_dns_acme { udp length 47-63 @th,160,128 0x0e373135363130333131303735353203ns ,62 78x160,128e0e goto nat_dns_this_0 дарозии udp 31393032383939353831343037320-5301 @th,62 78x160,128e0e goto nat_dns_saturn_0 дарозии udp 31363436323733373931323934300-5301 @th,62 78x160,128 0e goto nat_dns_saturn_0 udp дарозии 32393535373539353636383732310-5302 @th,62 78x160,128e0e goto nat_dns_saturn_0 тарк кунед }}

    пас аз оптимизатсия мо рӯйхати харитаро мегирем: udp length . @th,160,128 vmap {47-63. 0x0e373135363130333131303735353203: goto nat_dns_dnstc, 62-78. 0x0e31393032383939353831343037320e: goto nat_dns_this_5301, 62-78. 0x0e31363436323733373931323934300e: goto nat_dns_saturn_5301, 62-78. 0x0e32393535373539353636383732310e: goto nat_dns_saturn_5302, 62-78. 0x0e38353439353637323038363633390e : goto nat_dns_saturn_5303 }

  • Истифодаи ибораҳои хом дар амалиёти пайвандкунӣ иҷозат дода мешавад. Масалан: #nft add rule xy ip saddr. @ih,32,32 {1.1.1.1. 0x14, 2.2.2.2. 0x1e } ё ҷадвали x { set y { typeof ip saddr . @ih,32,32 унсурҳои = {1.1.1.1. 0x14 } }
  • Дастгирии иловашуда барои муайян кардани майдонҳои сарлавҳаи бутун дар амалиёти пайвандсозӣ: table inet t { map m1 { typeof udp length . @ih,32,32: ҳукми парчамҳои фосилаи унсурҳои = {20-80. 0x14: қабул, 1-10. 0xa: тарки } } занҷири c {навъи филтр авлавияти вуруди қалмоқ 0; паст кардани сиёсат; дарозии udp. @ih,32,32 vmap @m1 } }
  • Дастгирии иловашуда барои аз нав танзимкунии имконоти TCP (танҳо бо Linux ядрои 5.18+ кор мекунад): tcp flags syn reset tcp option sack-perm
  • Иҷрои фармонҳои баромади занҷир (“nft list chain xy”) суръат гирифт.

Манбаъ: opennet.ru

Илова Эзоҳ