nftables пакеттік сүзгі 1.0.6 шығарылымы

IPv1.0.6, IPv4, ARP және желілік көпірлер (iptables, ip6table, arptables және ebtables ауыстыруға бағытталған) үшін пакеттерді сүзгілеу интерфейстерін біріктіретін nftables 6 пакеттік сүзгі шығарылымы жарияланды. nftables бумасы пайдаланушы кеңістігінде жұмыс істейтін пакеттік сүзгі құрамдастарын қамтиды, ал ядро ​​деңгейін 3.13 шығарылымынан бері Linux ядросының бөлігі болып табылатын nf_tables ішкі жүйесі қамтамасыз етеді. Ядро деңгейінде пакеттерден деректерді алу, деректермен операцияларды орындау және ағынды басқару үшін негізгі функцияларды қамтамасыз ететін жалпы протоколға тәуелсіз интерфейс ғана қамтамасыз етіледі.

Сүзгілеу ережелерінің өздері және хаттамаға тән өңдеушілер пайдаланушы кеңістігінің байт-кодына құрастырылады, содан кейін бұл байт код Netlink интерфейсінің көмегімен ядроға жүктеледі және ядрода BPF (Berkeley Packet Filters) ұқсайтын арнайы виртуалды машинада орындалады. Бұл тәсіл ядро ​​деңгейінде жұмыс істейтін сүзгілеу кодының өлшемін айтарлықтай азайтуға және талдау ережелерінің барлық функцияларын және протоколдармен жұмыс істеу логикасын пайдаланушы кеңістігіне жылжытуға мүмкіндік береді.

Негізгі өзгерістер:

  • "-o/--оңтайландыру" опциясын көрсету кезінде шақырылатын ережелерді оңтайландырушыда ережелерді автоматты түрде орау оларды біріктіру және оларды карта мен жиын тізімдеріне түрлендіру арқылы орнатылды. Мысалы, ережелер мыналар болып табылады: # cat ruleset.nft table ip x { chain y { type сүзгі ілгегі кіріс басымдылық сүзгісі; саясаттың төмендеуі; meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 қабылдаңыз meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 қабылданыңыз meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.3.0.i қабылданыңыз ipad ipad 24.i. .1 ip daddr 1.1.1.2-2.2.4.0 қабылдау мета iifname eth2.2.4.10 ip saddr 2 ip daddr 1.1.1.3 қабылдау } } кейін "nft -o -c -f ruleset.nft" келесіге түрлендіріледі: ережелер жинағы. nft:2.2.2.5:4-17: meta iifname eth74 ip saddr 1 ip daddr 1.1.1.1 accept ruleset.nft:2.2.2.3:5-17: meta iifname eth74 ip saddr 1 ip daddr 1.1.1.2 ережелер жинағы.nft қабылдау 2.2.2.4:6-17: meta iifname eth77 ip saddr 1 ip daddr 1.1.1.2/2.2.3.0 accept ruleset.nft:24:7-17: meta iifname eth83 ip saddr 1 ip daddr 1.1.1.2-2.2.4.0. ruleset.nft:2.2.4.10:8-17: meta iifname eth74 ip saddr 2 ip daddr 1.1.1.3 қабылдаңыз: iifname . ip saddr. ip daddr {eth2.2.2.5. 1. 1.1.1.1, eth2.2.2.3 . 1. 1.1.1.2, eth2.2.2.4 . 1. 1.1.1.2/2.2.3.0, eth24 . 1. 1.1.1.2-2.2.4.0, eth2.2.4.10 . 2. 1.1.1.3 } қабылдау
  • Оңтайландырушы қарапайым жиынтық тізімдерін бұрыннан пайдаланатын ережелерді ықшам пішінге қысқарта алады, мысалы: # cat ruleset.nft table ip filter { chain input { type сүзгі ілмек кірісінің басымдылық сүзгісі; саясаттың төмендеуі; IIfName «LO» құрылған CT-ді қабылдайды, «ENP0S31F6» IP-дің «enp209.115.181.102s216.197.228.230f10.0.0.149» eNP123S32768F65535 «IP Sadd [0} IP Daddr 31 UDP Sport 6 UDP Sport 64.59.144.17-64.59.150.133 iifname "enp10.0.0.149s53f32768" ip saddr { 65535, 6 } ip daddr 22 udp sport 149 udp dport 0-31 қабылданады } -} - пакет іске қосылғаннан кейін ережелер "nftc" сияқты болады. : ruleset.nft:6:209.115.181.102-216.197.228.230: iifname "enp10.0.0.149s123f32768" ip saddr {65535, 7 } ip daddr 22 udp спорт 143 ережелері udp0s31f6: d64.59.144.17: қабылдау -64.59.150.133 10.0.0.149 : iifname "enp53s32768f65535" ip saddr {0, 31 } ip daddr 6 udp спорт 209.115.181.102 udp dport 10.0.0.149-123 қабылдау: iifname. ip saddr. ip Daddr. udp спорт. udp dport {enp32768s65535f0. 31. 6. 216.197.228.230. 10.0.0.149-123, enp32768s65535f0 . 31. 6. 64.59.144.17. 10.0.0.149-53, enp32768s65535f0 . 31. 6. 64.59.150.133 . 10.0.0.149-53, enp32768s65535fXNUMX . XNUMX. XNUMX. XNUMX . XNUMX-XNUMX } қабылдаңыз
  • IPv4 (желілік индиан) және мета белгісі (жүйе индианиясы) сияқты әртүрлі индианциясы бар түрлерді пайдаланатын аралықтарды біріктіру үшін байт-кодты құру мәселесі шешілді. кесте IP x {карта w { typeof IP saddr. мета белгісі: үкім жалаулары аралығы қарсы элементтері = {127.0.0.1-127.0.0.4. 0x123434-0xb00122 : қабылдау, 192.168.0.10-192.168.1.20 . 0x0000aa00-0x0000aaff : қабылдау, } } тізбек k {түрі сүзгі ілмегі кіріс басымдылығы сүзгісі; саясаттың төмендеуі; ip saddr. мета белгісі vmap @w } }
  • Шикі өрнектерді пайдаланған кезде жақсартылған сирек протокол салыстырулары, мысалы: meta l4proto 91 @th,400,16 0x0 қабылданады
  • Ережелерді аралықпен қосуға қатысты түзетілген мәселелер: кірістіру ережесі xy tcp sport {3478-3497, 16384-16387 } санауыш қабылдау
  • JSON API жиынтық және карта тізімдеріндегі өрнектерді қолдау үшін жақсартылды.
  • nftables python кітапханасының кеңейтімдерінде ережелер жиынын тексеру режимінде («-c») өңдеу үшін жүктеуге рұқсат етіледі және сыртқы айнымалы анықтамасына қолдау қосылды.
  • Пікірлерді қосу жиын тізімдерінің элементтерінде рұқсат етіледі.
  • Байт жылдамдығы шегінде нөлдік мәнді көрсетуге рұқсат етіледі.

Ақпарат көзі: opennet.ru

пікір қалдыру