IPv4, IPv6, ARP және желілік көпірлер үшін пакеттік сүзгілеу интерфейстерін біріктіретін пакеттік сүзгілеу құрылымы nftables 1.0.1 шығарылды (iptables, ip6table, arptables және ebtables ауыстыру ретінде бағытталған). nftables 1.0.1 үшін қажетті өзгерістер ядроға енгізілді. Linux 5.16-rc1.
nftables пакеті пайдаланушы кеңістігінде жұмыс істейтін пакет сүзгісінің компоненттерін қамтиды, ал ядро деңгейіндегі жұмыс ядроның бөлігі болып табылатын nf_tables ішкі жүйесімен қамтамасыз етіледі. Linux 3.13 шығарылымынан бастап, ядро деңгейінде тек жалпы хаттамаға тәуелсіз интерфейс қамтамасыз етілген, ол пакеттерден деректерді алу, деректер операцияларын орындау және ағынды басқару үшін негізгі функцияларды қамтамасыз етеді.
Сүзу ережелерінің өзі және хаттамаға тән өңдегіштер пайдаланушы кеңістігінде байткодқа компиляцияланады, содан кейін бұл байткод Netlink интерфейсін пайдаланып ядроға жүктеледі және ядрода арнайы түрде орындалады виртуалды машина, BPF (Berkeley Packet Filters) еске түсіреді. Бұл тәсіл ядро деңгейінде жұмыс істейтін сүзу кодының өлшемін айтарлықтай азайтуға мүмкіндік береді және барлық ереже талдауы мен хаттама логикасын пайдаланушы кеңістігіне жылжытады.
Негізгі инновациялар:
- Үлкен жиынтықты және карта тізімдерін жүктеген кезде жад шығыны азайтылды.
- Жиынтық және карта тізімдерін қайта жүктеу жылдамдатылды.
- Үлкен ережелер жиынындағы таңдалған кестелер мен тізбектерді шығару жеделдетілді. Мысалы, 100 000 жолды қамтитын ережелер жинағын шығаруға арналған «nft list ережелер жинағы» пәрменінің орындалу уақыты 3.049 секундты құрайды, ал тек nat және сүзгі кестелерін («nft list table nat» және «nft list table filter») шығару кезінде ол тиісінше 1.969 секундқа және 0.697 секундқа дейін қысқарады.
- Үлкен жиынтық және карта тізімдері бар ережелерді өңдеу кезінде "--terse" опциясы арқылы сұрауларды орындауды жылдамдату.
- Шығу тізбегінен трафикті сүзу мүмкіндігі енді қол жетімді. Бұл трафик netdev тізбегіндегі шығу өңдегішімен бірдей деңгейде өңделеді (ілмек шығу), яғни драйвер ядро желісінің стекінен пакетті алған кезде. кесте netdev сүзгісі { тізбектің шығуы { түрі сүзгі ілмегі шығу құрылғылары = { eth0, eth1 } басымдық 0; мета басымдылық жиынтығы IP saddr картасы {192.168.10.2: abcd:2, 192.168.10.3: abcd:3}}}
- Пакет тақырыбы мен мазмұндағы байттарды көрсетілген ығысуда сәйкестендіруге және өзгертуге мүмкіндік береді. # nft қосу ережесі xy @ih,32,32 0x14000000 есептегіш # nft қосу ережесі xy @ih,32,32 0x14000000 есептегішін орнату
Ақпарат көзі: opennet.ru
