В Ubuntu 20.10 планируют перейти с iptables на nftables
Следом за Fedora и Debian разработчики Ubuntu рассматривают возможность перехода на использование по умолчанию пакетного фильтра nftables. Для сохранения обратной совместимости предлагается использовать пакет iptables-nft, предлагающий утилиты с тем же синтаксисом командной строки, как и в iptables, но транслирующий полученные правила в байткод nf_tables. Изменение планируется включить в состав осенного выпуска Ubuntu 20.10.
Это вторая попытка перехода Ubuntu на nftables. Первая попытка была предпринята в прошлом году, но была отклонена из-за несовместимости с LXD. Теперь в LXD уже имеется встроенная поддержка nftables и он может работать с новым бэкендом для фильтрации пакетов. Для пользователей, которым недостаточно прослойки для обеспечения совместимости, оставлена возможность установки классических утилит iptables, ip6tables, arptables и ebtables со старым бэкендом.
Напомним, что в пакетном фильтре nftables унифицированы интерфейсы фильтрации пакетов для IPv4, IPv6, ARP и сетевых мостов. В пакет nftables входят компоненты пакетного фильтра, работающие в пространстве пользователя, в то время как на уровне ядра работу обеспечивает подсистема nf_tables, входящая в состав ядра Linux начиная с выпуска 3.13. На уровне ядра предоставляется лишь общий интерфейс, не зависящий от конкретного протокола и предоставляющий базовые функции извлечения данных из пакетов, выполнения операций с данными и управления потоком.
Непосредственно правила фильтрации и специфичные для протоколов обработчики компилируются в байткод в пространстве пользователя, после чего данный байткод загружается в ядро при помощи интерфейса Netlink и выполняется в ядре в специальной виртуальной машине, напоминающей BPF (Berkeley Packet Filters). Подобный подход позволяет значительно сократить размер кода фильтрации, работающего на уровне ядра и вынести все функции разбора правил и логики работы с протоколами в пространство пользователя.
Источник: http://www.opennet.ru/opennews/art.shtml? num=53608
© OpenNet