nftables багц шүүлтүүрийн хувилбар 1.0.1

Опубликован выпуск пакетного фильтра nftables 1.0.1, унифицирующего интерфейсы фильтрации пакетов для IPv4, IPv6, ARP и сетевых мостов (нацелен на замену iptables, ip6table, arptables и ebtables). Необходимые для работы выпуска nftables 1.0.1 изменения включены в состав ядра Linux 5.16-rc1.

Nftables багц нь хэрэглэгчийн орон зайд ажилладаг пакет шүүлтүүрийн бүрэлдэхүүн хэсгүүдийг агуулдаг бол цөмийн түвшний ажлыг 3.13 хувилбараас хойш Линуксийн цөмийн нэг хэсэг болсон nf_tables дэд системээр хангадаг. Цөмийн түвшин нь пакетуудаас өгөгдөл гаргаж авах, өгөгдлийн үйлдлүүдийг гүйцэтгэх, урсгалыг хянах үндсэн функцуудыг хангадаг ерөнхий протоколоос хамааралгүй интерфэйсийг л хангадаг.

Шүүлтүүрийн дүрмүүд болон протоколын тусгай зохицуулагч нар нь хэрэглэгчийн орон зайн байт код руу хөрвүүлэгдэж, дараа нь энэ байт кодыг Netlink интерфейсийг ашиглан цөмд ачаалж, BPF (Беркли Пакет шүүлтүүр) -тэй төстэй тусгай виртуал машинд цөмд ажиллуулдаг. Энэхүү арга нь цөмийн түвшинд ажиллаж байгаа шүүлтүүрийн кодын хэмжээг эрс багасгаж, задлан шинжлэх дүрмийн бүх функцууд болон протоколуудтай ажиллах логикийг хэрэглэгчийн орон зайд шилжүүлэх боломжийг олгодог.

Гол инноваци:

  • Сокращено потребление памяти при загрузке больших set- и map-списков.
  • Ускорена перезагрузка set- и map-списков.
  • Ускорен вывод избранных таблиц и цепочек в больших наборах правил. Например, время выполнения команды «nft list ruleset» для вывода набора правил, насчитывающего 100 тысяч строк, составляет 3.049 секунды, а при выводе только таблиц nat и filter («nft list table nat», «nft list table filter») сокращается до 1.969 и 0.697 секунд.
  • Ускорено выполнение запросов с опцией «—terse» при обработке правил с большими set- и map-списками.
  • Предоставлена возможность фильтрации трафика из цепочки «egress», обрабатываемой на том же уровне, что egress-обработчик в цепочке netdev (hook egress), т.е. на стадии когда драйвер получает пакет от сетевого стека ядра. table netdev filter { chain egress { type filter hook egress devices = { eth0, eth1 } priority 0; meta priority set ip saddr map { 192.168.10.2 : abcd:2, 192.168.10.3 : abcd:3 } } }
  • Разрешено сопоставление и изменение байтов в заголовке и содержимом пакета по заданному смещению. # nft add rule x y @ih,32,32 0x14000000 counter # nft add rule x y @ih,32,32 set 0x14000000 counter

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх