Openwrt的url过滤配置流程
在实际的防火墙开发过程中,我们有时需要开发带url过滤的功能,那此时我们该怎么办呢?小编在这里给大家讲解一下。
如果linux内核已经全部编过相关iptables的各种模块,则可以用以下两条配置好。
iptables -I FORWARD -m string --string "baidu.com" --algo kmp -j DROP
iptables -I FORWARD -m string --string "baidu.com" --algo bm -j DROP。
上面两条命令可以过滤baidu.com的网页。即连接到此路由的客户端设备无法访问百度。
这两条命令我试过。可以过滤http和https。
-- algo kmp和--algo bm属于指定字符串匹配的算法。具体可以查看相关知识。
若linux内核没有包括url过滤相关的iptables模块,则我们需要自己配置相关的模块,重新编译的才能支持url过滤相关。Linux内核的配置流程如下所示。
1 查看NETFILTER_XT_MATCH_STRING模块有没有配置。如果没有,可以在软件包的根目录用make kernel_menuconfig。在弹出的菜单里,在Networking support->Networking option-> Network packet filtering framework (Netfilter) -> Core Netfilter Configuration-> Netfilter Xtables support选择。注意先要打开NETFILTER_XT_MATCH_STRING需要依赖的模块。
2 配置安装iptables-mod-filter数据包。在软件包的根目录用make menuconfig。在弹出的菜单里。Netwrok->firewall->iptables选择。
3 重新make V=s
4 以mtk的mt7621为例,会在staging_dir/target-mipsel_24kc_glibc-2.24/root-ramips/lib/modules/4.4.182下看到有xt_string.ko生成。此时可以确定配置成功。
5 烧录新编的版本验证。在可以看做机器的终端/lib/modules/4.4.182目录下也有xt_string.ko。
6 执行iptables -I FORWARD -m string --string "baidu.com" --algo kmp -j DROP
iptables -I FORWARD -m string --string "baidu.com" --algo bm -j DROP。