Проверяем прошивку, есть ли xt_string в ядре:
lsmod
Если есть переходим к последнему пункту
Если нет проверяем есть ли модуль в прошивке
modprobe -l | grep xt_
Если нет такой строки kernel/net/netfilter/xt_string.ko, значит нет и модуля и прошивку надо собрать самому.
Прошивку сробираем скриптом PROMETHEUS из git Linaro1985/padavan-ng
Переходим в конфиг ядра mir3g (в примере роутер Xiaomi Mi WiFi Router 3G)
nano ~/padavan-ng/trunk/configs/boards/XIAOMI/MI-R3G/kernel-3.4.x.config
Ищем CTRL+W # CONFIG_NETFILTER_XT_MATCH_STRING is not set
Добавляем в ядро CONFIG_NETFILTER_XT_MATCH_STRING=y
Добавляем модулем CONFIG_NETFILTER_XT_MATCH_STRING=m
Сохраняем и собираем стандартно проршивку )
Устанавливаем прошивку
Проверяем если модулем то modprobe -l | grep xt_, в ядро lsmod
Если собирали модулем делаем следующее:
В роутере переходим и правим скрипт Выполнить перед инициализацией маршрутизатора, добавляем
### PKH
modprobe xt_string
modprobe xt_connbytes
Для любого варианта сборки:
В роутере переходим и правим скрипт Выполнить после перезапуска правил брандмауэра, добавляем:
### PKH
iptables -t raw -I PREROUTING -p tcp --sport 80 -m string --hex-string 'Location: http://warning.rt.ru' --algo bm --from 50 --to 200 -j DROP
iptables -t mangle -I PREROUTING -p tcp --sport 443 -m connbytes --connbytes 1:4 --connbytes-mode packets --connbytes-dir reply -m u32 --u32 "0x4=0x10000 && 0x1E&0xffff=0x5004" -j DROP
P.S.
Этот вариант для Ростелекома, другие варианты можно посмотреть тут