openwrt路由器怎么使用iptables进行域名过滤?
软件云 人气:0有时候在家想不让小孩乱上网,某些网址不能登陆,而这时如果家里的无线路由器刚好是openwrt时,可利用iptables使得当输入的网址包含相关字段是无法登陆该网页。
1、浏览器登陆192.168.1.1
2、然后按照下图点击设置
3、在防火墙自定义规则中写入如下语句:
iptables -I FORWARD -m string --string "gamersky" --algo kmp -j DROP
4、按下提交,这是到达如下页面:
状态=>防火墙
按下重启防火墙
网址包含gamersky时,无法登陆,即使在搜索引擎中键入gamersky也不行。
5、看到FORWARD中已经包含了信息。输入游民星空网址,试试,果然无法登陆了。可以看到已经拦截了请求的数据包。
- iptables -I FORWARD -m string --string "abcd" --algo kmp -j DROP
- or
- iptables -I FORWARD -m string --string "abcd" --algo bm -j DROP
使用string设置过滤域名。当网址中包含相关字段是无法上该网址。
使用ssh客户端可以
把过滤的命令写入/etc/firewall.user中,则每次启动后firewall就会添加进入规则当中。
而且这样添加后,在搜索引擎中也不能够出现该字段,否则不能进行相关搜索。
必须把规则放入FORWARD链中,因为FORWARD是路由器进行转发的中心部分。
当然也可以这样写:
iptables -I FORWARD -s www.xxxx.com -m state --state NEW,RELATED,ESTABLISHED -j DROP
但是可能有问题,首先,一般防火墙会在链接互联网之前就启动,这样域名得不到转化,导致错误。而如果写上ip地址,虽然默认计算机上网是要转化为ip的,但是有一些网站ip有很多个,这样写有问题。不能用
所以经过试验,使用string模块是有效的。但是效率比较低,可能拖慢网速。不知道是不是ipset可以提高效率。
加载全部内容