nftables 0.9.3
Опубликован выпуск пакетного фильтра nftables 0.9.3, развивающегося в качестве замены iptables, ip6table, arptables и ebtables за счёт унификации интерфейсов фильтрации пакетов для IPv4, IPv6, ARP и сетевых мостов. В пакет nftables входят компоненты пакетного фильтра, работающие в пространстве пользователя, в то время как на уровне ядра работу обеспечивает подсистема nf_tables, входящая в состав ядра Linux начиная с выпуска 3.13. Необходимые для работы выпуска nftables 0.9.3 изменения включены в состав будущей ветки ядра Linux 5.5.

На уровне ядра предоставляется лишь общий интерфейс, не зависящий от конкретного протокола и предоставляющий базовые функции извлечения данных из пакетов, выполнения операций с данными и управления потоком. Непосредственно логика фильтрации и специфичные для протоколов обработчики компилируются в байткод в пространстве пользователя, после чего данный байткод загружается в ядро при помощи интерфейса Netlink и выполняется в специальной виртуальной машине, напоминающей BPF (Berkeley Packet Filters). Подобный подход позволяет значительно сократить размер кода фильтрации, работающего на уровне ядра и вынести все функции разбора правил и логики работы с протоколами в пространство пользователя.
Основные новшества:

Поддержка сопоставления пакетов по времени. Можно определить как диапазоны времени и дат, в которых будет срабатывать правило, так и настроить срабатывание в отдельные дни недели. Также добавлена новая опция "-T" для вывода эпохального времени в секундах.
 
meta time \"2019-12-24 16:00\" - \"2020-01-02 7:00\"
meta hour \"17:00\" - \"19:00\"
meta day \"Fri\"

Поддержка восстановления и сохранения меток SELinux (secmark).
 
ct secmark set meta secmark
meta secmark set ct secmark

Поддержка map-списков synproxy, позволяющих определять более одного правила на бэкенд.
 
    table ip foo {
            synproxy https-synproxy {
                    mss 1460
                    wscale 7
                    timestamp sack-perm
            }

            synproxy other-synproxy {
                    mss 1460
                    wscale 5
            }

            chain pre {
                    type filter hook prerouting priority raw; policy accept;
                    tcp dport 8888 tcp flags syn notrack
            }

            chain bar {
                    type filter hook forward priority filter; policy accept;
                    ct state invalid,untracked synproxy name ip saddr map { 192.168.1.0/24 : "https-synproxy", 192.168.2.0/24 : "other-synproxy" }
            }
     }

Возможность динамического удаления элементов set-наборов из правил обработки пакетов.
 
nft add rule ... delete @set5 { ip6 saddr . ip6 daddr }

Поддержка сопоставления VLAN по идентификатору и протоколу, определённых в метаданных интерфейса сетевого моста;
 
meta ibrpvid 100
meta ibrvproto vlan


Опция "-t" ("--terse") для исключения элементов set-наборов при отображении правил. При выполнении "nft -t list ruleset" будет выведено:
 
    table ip x {
        set y {
                type ipv4_addr
        }
    }


А при "nft list ruleset"
 
    table ip x {
        set y {
                type ipv4_addr
                elements = { 192.168.10.2, 192.168.20.1,
                             192.168.4.4, 192.168.2.34 }
        }
    }


Возможность указания более одного устройства в цепочках netdev (работает только с ядром 5.5) для объединения типовых правил фильтрации.

 
     add table netdev x
     add chain netdev x y { \
        type filter hook ingress devices = { eth0, eth1 } priority 0;
     }


Возможность добавления описаний типов данных.
 
    # nft describe ipv4_addr
    datatype ipv4_addr (IPv4 address) (basetype integer), 32 bits


Возможность сборки CLI-интерфейса с библиотекой linenoise вместо libreadline.
 
     ./configure --with-cli=linenoise
vop
2019-12-06 16:21:28
Avatar
Народ боится nft больше, чем ipv6 :)
 
foreverok
2019-12-06 16:40:25
Avatar
Народу то что? Он не шарит -  что такое iptables, ebtables, и иже с ними.
Ему только котиков подавай )
vop
2019-12-06 16:43:40
Avatar
Я про народ, который на тазиках сети строит. :)
911
2019-12-07 00:08:22
Avatar
ну а зачем, если iptables работает?)
foreverok
2019-12-07 04:18:22
Avatar
ну а зачем, если iptables работает?)

затем же, зачем и новое ядро использовать. 2-е ядро тоже работает, но почему то новые выходят...
prototip
2019-12-12 22:36:33
Avatar
Все зависит от того что ты хочешь, если все работает и больше ничего не нужно то и пропади пропадом новый функционал :)
fet4
2019-12-13 12:49:05
Avatar
Новой сервер на nft и строю, толковая вещь, мне нравится.
911
2019-12-13 13:29:31
Avatar
Новой сервер на nft и строю, толковая вещь, мне нравится.
а как туда добавить ipt_netflow? 
fet4
2019-12-13 14:03:09
Avatar
В моем случае ipt_netflow не используется. И вопрос больше разработчикам ipt_netflow, думаю это вопрос времени.
prototip
2019-12-13 14:49:10
Avatar
Ну да только нужен продакшин, а не тестирование со всеми вытекающими граблями .
You should to log in

loading