Тест для пакета НЕ соответствует набору
Я хотел бы написать правило nftables, которое соответствует полям пакета, которые НЕ находятся в наборе:
ip not ip saddr @local_networks drop
К сожалению, это дает синтаксическую ошибку: "неожиданно!" Перемещение "not" в другие вероятные точки утверждения не имеет значения для сообщения об ошибке. Разрешено ли отрицание?
1 ответ
В Debian 10 (nftables 0.9.0 + любые патчи Debian) этот синтаксис работает для отбрасывания пакетов с исходным IP-адресом, не входящим в набор local_networks:
ip saddr != @local_networks drop
Я изучил исходный код и обнаружил, что хотя "!" и "not" оба являются элементами синтаксиса - для них определены символы лексера, они нигде не используются в парсере. Я полагаю, мне придется подать запрос на улучшение.