IPTables可以使用通配符子域引用阻止传出stream量吗?

我想阻止使用IPTables的任何域或子域的所有传出stream量。 这看起来-d选项允许一个引用一个域。 我通过Googlesearchfind了以下内容,表明可以通过以下方式引用它:只允许特定域的HTTP通信,

同样的,我们也可以使用上面的方法来过滤其他的端口和协议,比如在tcp端口80上运行的标准networkingstream量。

 iptables -I FORWARD 1 -p tcp -d dd-wrt.com --dport 80 -j ACCEPT iptables -I FORWARD 2 -p tcp --dport 80 -j DROP 

这将接受所有的HTTPstream量dd-wrt.com,同时阻止传出httpstream量到其他地方。 如果您希望允许多个站点,请在DROP之前插入其他规则(确保正确命令并编号)。

然而,我想要做的是参考*。域名.com(例如阻止所有传出的stream量* .youtube.com或类似)。

有谁知道这是否可能,如果是这样,IPTables中的-d选项的语法是什么,以支持通配符子域?

IPtables中的DNSparsing有点有趣。 在运行时,防火墙只作用于IP地址,而不作用于域名。 为了清晰起见,我们一步步地进行这个过程。

  1. 你添加一个规则: iptables -I FORWARD 1 -p tcp -d dd-wrt.com --dport 80 -j ACCEPT
  2. IPtables将dd-wrt.com传递给parsing器子系统。
  3. parsing器子系统返回: 83.141.4.210
  4. IPtables修改并创build规则为-p tcp -d 83.141.4.210 --dport 80 -j ACCEPT

如果域名返回多个地址(例如www.google.com),则为每个返回的IP地址插入该规则的副本。 当然,除非使用--replace选项,在这种情况下多个返回的地址将导致它失败。

这个查找发生在添加规则时。 所以,如果dd-wrt.com被移动到一个新的主机,那么你的规则将不再正常工作。 您将不得不删除并重新添加或重新启动防火墙以使新地址生效。

因此,您可以简单地意味着您根本不能根据域名使用它来阻止。 你只能阻止IP地址,你可能只是简单地使用域名来偶尔检索地址。 同样,通配符也不行。 主机名*.dd-wrt.com没有Alogging,因此无法转换为IP地址。

一般来说,您最好根据IP地址来阻止或拒绝。 这样,对于您或您的员工而言,对于应该被阻止(或允许)与实际是什么相比,并不存在混淆。