Робота у мережі

nftables замінив iptables як типовий модуль фільтрування пакетів мережі

Комплект інструментів nftables надає можливості із класифікації пакетів і вважається наступником засобів iptables, ip6tables, arptables та ebtables. У ньому реалізовано численні удосконалення у зручності користування, можливостях та швидкодії, порівняно із попередніми інструментами фільтрування пакетів. Найпомітніші його особливості:

  • Таблиці пошуку замість лінійної обробки.

  • Єдиний комплект засобів для протоколів IPv4 і IPv6.

  • Усі правила застосовуються атомарно, без отримання, оновлення та зберігання повного набору правил.

  • Підтримка діагностики і трасування у наборі правил (nftrace) та спостереження за подіями трасування (у засобі nft).

  • Послідовніший і компактніший синтаксис, немає специфічних для протоколу розширень.

  • Програмний інтерфейс Netlink для сторонніх програм.

Подібно до iptables, nftables використовує таблиці для зберігання ланцюжків правил. Ланцюжки містять окремі правила для виконання дій. Програма nft замінює усі інструменти з попередніх комплектів засобів для фільтрування пакетів. Бібліотекою libnftables можна скористатися для низькорівневої взаємодії з програмним інтерфейсом Netlink nftables за допомогою бібліотеки libmnl.

Інструменти iptables, ip6tables, ebtables та arptables замінено на повністю сумісні замінники nftables із тими самими назвами. Хоча ззовні поведінка інструментів є ідентичною до поведінки попередників, всередині вони використовують nftables із модулями ядра шару сумісності netfilter із інтерфейсом сумісності там, де це потрібно.

За впливом модулів на набір правил nftables`можна спостерігати за допомогою команди `nft list ruleset. Оскільки ці засоби додають таблиці, ланцюжки і правила до набору правил nftables, слід мати на увазі, що дії із набором правил nftables, зокрема команда nft flush ruleset, можуть вплинути на набори правил, які було встановлено за допомогою раніше окремих застарілих команд.

Щоб пришвидшити ідентифікацію наявного варіанта засобу фільтрування, оновлено дані щодо версії так, щоб вони містили назву модуля фільтрування. У Fedora 32 заснований наe nftables інструмент iptables виводить такий рядок версії:

$ iptables --version
iptables v1.8.4 (nf_tables)

Для порівняння, ось такі дані щодо версії буде виведено, якщо встановлено застарілий засіб iptables:

$ iptables --version
iptables v1.8.4 (legacy)