iptables 实现域名过滤

1.需求

过滤指定的域名、网站:如www.baidu.com, www.bilibili.com

 

2.实现方案

方案1:字符串过滤

iptables -A FOWARD -m string --algo kmp --string “bilibili.com” -j DROP

方案缺点: 需要过滤所有报文,网络速率下降20%~50%

方案2:过滤dns请求报文

通过域名访问网站都需要通过dns解析,即过滤udp.port = 53的报文即可

参考博文:iptables拦截域名_使用iptables封锁对某个域名的DNS查询_文强孙的博客-CSDN博客

iptables -A FOWARD -p udp --dport 53 -m string --string "www.baidu.com" --algo bm -j #请参考博文,和DNS协议

iptables -A FOWARD -p udp --dport 53 -m string --hex-string "|03|www|05|baidu|03|com|" --algo bm -j DROP

iptables -A INPUT -p udp --dport 53 -m string --hex-string "|03|www|05|baidu|03|com|" --algo bm -j DROP

方案缺点: 不能过滤 hosts中用户配置的域名ip

3.注意事项

对于路由器

1.对于dhcp获取动态地址的设备,dns服务是网关(如192.168.1.1, 192.168.2.1),需要过滤INPUT链

2.对于手动设置静态ip的设备,  dns服务器223.5.5.5, 8.8.8.8, 需要过滤FORWARD链

3.我的做法是,新建链DNS_FILETER,同时添加到INPUT, FOWARD链中

4.其它问题与思考

1.如何过滤网站的子项,如B站舞蹈区 www.bilibili.com/dance

2.是否有更好的方案,欢迎大家讨论留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值