Выпуск пакетного фильтра nftables 0.9.7
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Опубликован выпуск пакетного фильтра nftables 0.9.7, развивающегося в качестве замены iptables, ip6table, arptables и ebtables за счёт унификации интерфейсов фильтрации пакетов для IPv4, IPv6, ARP и сетевых мостов. В пакет nftables входят компоненты пакетного фильтра, работающие в пространстве пользователя, в то время как на уровне ядра работу обеспечивает подсистема nf_tables, входящая в состав ядра Linux начиная с выпуска 3.13. Необходимые для работы выпуска nftables 0.9.7 изменения включены в состав ядра Linux 5.10-rc1.
На уровне ядра предоставляется лишь общий интерфейс, не зависящий от конкретного протокола и предоставляющий базовые функции извлечения данных из пакетов, выполнения операций с данными и управления потоком. Непосредственно правила фильтрации и специфичные для протоколов обработчики компилируются в байткод в пространстве пользователя, после чего данный байткод загружается в ядро при помощи интерфейса Netlink и выполняется в ядре в специальной виртуальной машине, напоминающей BPF (Berkeley Packet Filters). Подобный подход позволяет значительно сократить размер кода фильтрации, работающего на уровне ядра и вынести все функции разбора правил и логики работы с протоколами в пространство пользователя.
Основные новшества:
- Поддержка неявных цепочек, которые создаются динамически. При удалении связанного с неявной цепочкой правила автоматически удаляется и сама цепочка. Например, теперь можно группировать правила без необходимости отдельного определения цепочек:
table inet x {
chain y {
type filter hook input priority 0;
tcp dport 22 jump {
ip saddr { 127.0.0.0/8, 172.23.0.0/16, 192.168.13.0/24 } accept
ip6 saddr ::1/128 accept;
}
}
}
- Поддержка цепочек "ingress" для семейства протоколов inet (охватывает сразу IPv4 и IPv6), позволяющих фильтровать пакеты IPv4 и IPv6 на том же уровне, что ingress-обработчик в цепочке netdev (hook ingress), т.е. на стадии когда драйвер передаёт пакет сетевому стеку ядра. Для использования ingress-цепочек требуется ядро 5.10-rc1, в котором появились необходимые обработчики. Предоставленная возможность позволяет использовать общие set- и map-списки с цепочками prerouting, input, forward, output и postrouting, например:
table inet filter {
chain ingress {
type filter hook ingress device "veth0" priority filter; policy accept; }
chain input {
type filter hook input priority filter; policy accept;
}
chain forward {
type filter hook forward priority filter; policy accept;
}
}
- Добавлена возможность отклонения пакетов на стадии до проверки маршрутизации - выражение REJECT теперь может использоваться не только в цепочках INPUT, FORWARD и OUTPUT, но и на стадии PREROUTING:
table inet x {
chain y {
type filter hook prerouting priority 0; policy accept;
tcp dport 22 reject with tcp reset
}
}
- Добавлен режим сокращённого вывода в формате JSON, активируемый при указании опции "--terse" (исключает элементы set-списков при отображении правил):
nft --terse -j list ruleset
- При выводе в JSON ("-j") обеспечено отображение значений счётчиков для set-списков:
nft -j list set
- Добавлена возможность сброса счётчиков командой "reset" вместе с выводом в формате JSON:
nft -j reset counters
- Предоставления возможность сопоставления слушающих сокетов по маске (socket wildcard):
table inet x {
chain y {
type filter hook prerouting priority -150; policy accept;
socket transparent 1 socket wildcard 0 mark set 0x00000001
}
}
- Добавлена возможность извлечения элементов map-списка:
nft get element inet filter test "{ 18.51.100.17 . ad:c1:ac:c0:ce:c0 . 3761 : 0x42 }" table inet filter {
map test {
type ipv4_addr . ether_addr . inet_service : mark
flags interval,timeout
elements = { 18.51.100.17 . ad:c1:ac:c0:ce:c0 . 3761 : 0x00000042 }
}
}
- Добавлена поддержка комментариев в set-списках, так же как в таблицах и stateful-объектах (квоты, ограничения, счётчики):
table ip x {
set s {
type ipv4_addr;
comment "list of unwanted traffic by IP address"
elements = { 1.1.1.1, 1.2.3.4 }
}
}
- Реализована возможность определения пустых set-списков в переменных:
define BASE_ALLOWED_INCOMING_TCP_PORTS = {22, 80, 443}
define EXTRA_ALLOWED_INCOMING_TCP_PORTS = {}
table inet x {
chain y {
type filter hook input priority 0; policy drop;
ct state new tcp dport { $BASE_ALLOWED_INCOMING_TCP_PORTS, $EXTRA_ALLOWED_INCOMING_TCP_PORTS } counter accept }
}
- Предоставлена возможность использования переменных в строках, определяющих префикс записей в логе:
define foo= "state"
define bar = "match"
table x {
chain y {
ct state invalid log prefix "invalid $foo $bar:"
}
}
- Предоставлена возможность использования переменных в определениях цепочек и flowtable:
define if_main = lo
table netdev x {
chain y {
type filter hook ingress device $if_main priority -500; policy accept;
}
}
- Разрешено указание отрицательных значений в переменных:
define post = -10
define for = "filter - 100"
table inet global {
chain forward {
type filter hook prerouting priority $for
policy accept
}
chain postrouting {
type filter hook postrouting priority $post
policy accept
}
}
- Улучшена пометка ошибок в выражениях. Например, при отсутствии цепочки будет подсвечено проблемное имя:
# nft add rule x y jump test
Error: Could not process rule: No such file or directory
add rule x y jump test
^^^^
- Реализована поддержка трансляции адресов (NAT) для SCTP, не учитывающая состояние соединения (stateless).
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://www.mail-archive.com/n...)
- OpenNews: Выпуск пакетного фильтра nftables 0.9.5
- OpenNews: Релиз сетевого конфигуратора NetworkManager 1.26.0
- OpenNews: Релиз ядра Linux 5.9
- OpenNews: В ядре Linux 5.7 будут ускорены сложные сопоставления по спискам в NetFilter
- OpenNews: В Debian 11 предлагается по умолчанию задействовать nftables и firewalld
Похожие новости:
- Инициатива по прекращению поддержки WiMAX в ядре Linux
- [Настройка Linux, Open source, Софт] Вышел релиз Fedora 33. Что нового?
- [Информационная безопасность, Habr, Системное администрирование, Разработка под Linux] Команда find в Linux – мощный инструмент сисадмина
- Ядро Linux 5.10 отнесено к категории выпусков с длительным сроком поддержки
- [Настройка Linux, Совершенный код, Разработка под Linux] Кроа-Хартман из Linux: мы не боремся с новыми разработчиками, узким местом является проверка кода
- [Настройка Linux] Год на Gentoo после Xubuntu и macOS: мой опыт (мне нравится)
- [Браузеры, Тестирование веб-сервисов, Microsoft Edge, Разработка под Linux, Софт] Тесты Microsoft Edge на Linux показали хорошие результаты
- [Настройка Linux, Open source, Разработка под Linux] Разбираемся с системными вызовами в Linux с помощью strace (перевод)
- [Open source, *nix] FOSS News №39 – дайджест новостей и других материалов о свободном и открытом ПО за 19–25 октября 2020 года
- [Настройка Linux, Системное администрирование, Сетевые технологии, Серверное администрирование, DNS] Отказоустойчивый кластер с балансировкой нагрузки с помощью keepalived
Теги для поиска: #_nftables, #_netfilter, #_linux
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 20:20
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Опубликован выпуск пакетного фильтра nftables 0.9.7, развивающегося в качестве замены iptables, ip6table, arptables и ebtables за счёт унификации интерфейсов фильтрации пакетов для IPv4, IPv6, ARP и сетевых мостов. В пакет nftables входят компоненты пакетного фильтра, работающие в пространстве пользователя, в то время как на уровне ядра работу обеспечивает подсистема nf_tables, входящая в состав ядра Linux начиная с выпуска 3.13. Необходимые для работы выпуска nftables 0.9.7 изменения включены в состав ядра Linux 5.10-rc1. На уровне ядра предоставляется лишь общий интерфейс, не зависящий от конкретного протокола и предоставляющий базовые функции извлечения данных из пакетов, выполнения операций с данными и управления потоком. Непосредственно правила фильтрации и специфичные для протоколов обработчики компилируются в байткод в пространстве пользователя, после чего данный байткод загружается в ядро при помощи интерфейса Netlink и выполняется в ядре в специальной виртуальной машине, напоминающей BPF (Berkeley Packet Filters). Подобный подход позволяет значительно сократить размер кода фильтрации, работающего на уровне ядра и вынести все функции разбора правил и логики работы с протоколами в пространство пользователя. Основные новшества:
=========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 20:20
Часовой пояс: UTC + 5