2016-02-12 60 views
0

为阻止xxx.com所有请求:如何使用iptable来过滤包含字符串的网址?

须藤的iptables -A OUTPUT -p tcp的-m串--string “xxx.com” --algo KMP -j DROP

什么会阻止请求任何包含xxx的网址都像?

google.com?q=xxx & ......

无阻塞google.com。

+0

我不认为你可以用iptables来做应用层的东西。即使可以,它也不适用于https(已加密)。你可能想安装一个过滤代理(你可以使用iptables来路由)。 – Thilo

回答

0

您建议的方法可能会阻止DNS请求,但是如果有人直接使用IP地址将被绕过。

如上所示,您可以使用http代理。

或者,我使用dnsmasq和ipset实施了对您提到的类型的限制,而不使用代理。我在这里列出的是如何做到这一点的高级步骤:

  1. 创建一个空的IPSET称为myprohibitedsites
  2. 运行自己的dnsmasq的实例(你不需要的dnsmasq的DHCP部分这一点,只是DNS高速缓存)
  3. 配置所有机器使用你的dnsmasq(或UDP端口53重定向到通过您的iptables的dnsmasq)
  4. 配置您的dnsmasq登录到IPSET myprohibitedsites所有DNS类型xxx.com的 请求(见的dnsmasq用户指南)
  5. configure iptables f ILTER下降具有作为目的地包含在myprohibitedsites
0

您可能需要使用kpcre的 IP地址的所有数据包,iptables的PCRE扩展。

例如,以过滤你已经指出的例子:

iptables -I INPUT -p tcp -m string --string "/\/.+xxx.+/i" --algo pcre -j DROP 

字符串“//.+xxx.+/i”表示不区分大小写的字符串,其以“/”开始,并包含“XXX” 。

相关问题