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

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

nftables бумасы пайдаланушы кеңістігінде жұмыс істейтін пакеттік сүзгі құрамдастарын қамтиды, ал ядро ​​деңгейіндегі жұмыс 3.13 шығарылымынан бері Linux ядросының бөлігі болып табылатын nf_tables ішкі жүйесі арқылы қамтамасыз етіледі. Ядро деңгейі пакеттерден деректерді алу, деректер операцияларын орындау және ағынды басқару үшін негізгі функцияларды қамтамасыз ететін жалпы протоколға тәуелсіз интерфейсті ғана қамтамасыз етеді.

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

Негізгі инновациялар:

  • Ережелерді оңтайландыру режимі қосылды, жаңа «-o» («--оңтайландыру») опциясы арқылы қосылды, оны нақты жүктемей-ақ ережелер жинағы файлына өзгертулерді тексеру және оңтайландыру үшін «--check» опциясымен біріктіруге болады. . Оңтайландыру ұқсас ережелерді біріктіруге мүмкіндік береді, мысалы, ережелер: 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.5 қабылдау ip saddr 1.1.1.1. .2.2.2.2 қабылдау ip saddr 2.2.2.2 ip daddr 3.3.3.3 тастау

    meta iifname біріктіріледі. ip саддр. ip daddr {eth1. 1.1.1.1. 2.2.2.3, eth1 . 1.1.1.2. 2.2.2.5} IP saddr қабылдау. ip daddr vmap {1.1.1.1. 2.2.2.2 : қабылдау, 2.2.2.2. 3.3.3.3 : тастау }

    Қолдану мысалы: # nft -c -o -f ruleset.test Біріктіру: ruleset.nft:16:3-37: ip daddr 192.168.0.1 санағышты қабылдау ережелері.nft:17:3-37: ip daddr 192.168.0.2 қарсы қабылдау ruleset.nft:18:3-37: ip daddr 192.168.0.3 санауыш қабылдау: ip daddr {192.168.0.1, 192.168.0.2, 192.168.0.3} санауыш пакеттер 0 байт 0 қабылдау

  • Жиын тізімдері ip және tcp опцияларын, сондай-ақ sctp бөліктерін көрсету мүмкіндігін жүзеге асырады: set s5 { typeof ip опциясы ra мән элементтері = { 1, 1024 } } set s7 { typeof sctp chunk init num-inbound-streams элементтері = { 1, 4 } } c5 тізбегі { ip опциясы ra мәні @s5 қабылдау } тізбек c7 { sctp chunk init num-inbound-streams @s7 қабылдау }
  • TCP fastopen, md5sig және mptcp опцияларына қолдау қосылды.
  • Салыстыруда mp-tcp ішкі түрін пайдалануға қолдау қосылды: tcp опциясы mptcp ішкі түрі 1
  • Жақсартылған ядро ​​жағындағы сүзу коды.
  • Flowtable қазір JSON пішіміне толық қолдау көрсетеді.
  • Ethernet жақтауын сәйкестендіру операцияларында «қабылдамау» әрекетін пайдалану мүмкіндігі қамтамасыз етілді. эфир saddr aa:bb:cc:dd:ee:ff ip daddr 192.168.0.1 қабылдамау

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

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