
Iptables может сопоставлять пакеты по строке.
Пример для DNS:
iptables -A INPUT -i eth0 -p udp --dport 53 -m string --hex-string "|09|proxypipe|03|net" --algo bm -j DROP
Как выполнить такое сопоставление в nftables?
решение1
С помощью nftables вы можете использовать синтаксис Raw Payload Expression (задокументированздесь) для сопоставления пакета на основе содержимого фрагмента битов.
Итак, правило для блокировки запросов proxypipe.net
будет выглядеть так:
meta l4proto udp udp dport 53 @th,160,120 0x0970726f787970697065036e657400 counter drop comment "block queries for proxypipe.net"
Вышеприведенный код захватывает 120 бит данных, начиная с бита 160 транспортного заголовка ( @th
), и сравнивает их с шестнадцатеричным эквивалентом|09|proxypipe|03|net
Обратите внимание, что в отличие от версии iptables, вышеприведенный вариант будет соответствовать только proxypipe.net
фиксированной позиции в пакете. Это означает, что он не будет блокировать foobar.proxypipe.net
или любые другие поддомены.