В NetBSD-current появился новый пакетный фильтр npf, написанный с нуля литовцем Миндаугасом Расюкевичиусом (Mindaugas Rasiukevičius). Основные возможности:
- фильтр разработан с учётом многопроцессорных машин и без использования блокировок для получения масштабируемой производительности — теперь пакетный фильтр не является узким местом на многопроцессорном маршрутизаторе;
- быстрый поиск по хеш-таблице и красно-чёрному дереву;
- динамическая фильтрация пакетов (на основе информации о соединениях), преобразование сетевых адресов и портов (NAPT) и шлюзы уровня приложений (ALG);
- новый «движок» N-Code, написанный по основным принципам BPF: N-Code использует для нахождения соответствия в пакетах основные RISC-подобные инструкции и несколько CISC-подобных инструкций для обычных шаблонов наподобие адресов IPv4;
- уже знакомые синтаксис конфигурирования и утилиты;
- модульность и расширяемость: пользователи могут расширить NPF путём загрузки модуля ядра; NPF предоставляет разработчикам API, а правила NPF могут использовать специальный метод для активизации расширения.
Таким образом, к январю пользователи NPF получат все те возможности, которые они получают от других пакетных фильтров:
- повторная сборка пакетов IPv4;
- двунаправленные NAT и перенаправление портов;
- поддержка прокси FTP;
- чистка флагов в заголовке IP;
- блокировка пакетов ICMP и TCP RST;
- сохранение и восстановление состояния;
- журналирование пакетов, настраиваемые правила фильтрации.
Стоит отметить, что в NPF ещё не реализована поддержка IPv6. Автор NPF согласился предоставить техническую поддержку разработчикам, которые будут этим заниматься. Поддержку IPv6 обещают в ближайшем будущем.
>>> Подробности