root@OpenWrt:/man/ipk# iptables -I FORWARD -m string --algo bm --string "instagram" -j DROP
iptables: No chain/target/match by that name.
root@OpenWrt:/man/ipk#
Кто-либо может предложить, почему это не работает?
Это зависит от того, был ли строковый модуль netfilter скомпилирован в ядро, или как модуль, или нет. Несколько лет назад из-за потенциальной высокой загрузки ЦП модулем «string» он не был доступен по умолчанию в ядрах Ubuntu. В последние годы (я не помню, когда именно) он доступен по умолчанию как модуль. Способ проверить ваше ядро Ubuntu - найти его в модуле конфигурации ядра. Пример:
doug@s17:~$ uname -a
Linux s17 4.15.0-36-generic #39-Ubuntu SMP Mon Sep 24 16:19:09 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
doug@s17:~$ grep -i NETFILTER_XT_MATCH_STRING /boot/config-4.15.0-36-generic
CONFIG_NETFILTER_XT_MATCH_STRING=m
Итак, он есть как модуль в моей системе. И команда загружается нормально для меня:
doug@s17:~$ sudo iptables -I FORWARD -m string --algo bm --string "instagram" -j DROP
doug@s17:~$ sudo iptables -v -x -n -L
Chain INPUT (policy ACCEPT 210 packets, 15763 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 STRING match "instagram" ALGO name bm TO 65535
Chain OUTPUT (policy ACCEPT 141 packets, 36585 bytes)
pkts bytes target prot opt in out source destination