是否有一个模块可以让我iptables
使用纯文本文件中的 IP 地址提供规则?
示例:我有一个由iptables-restore
自定义规则集生成的自定义链,以允许 WhatsApp 相关的 IP 地址:
:_WHATSAPP_ - [0:0]
-A _WHATSAPP_ -j ACCEPT
-A FORWARD -s <src_host> -d 31.13.64.51/32 -j _WHATSAPP_
-A FORWARD -s <src_host> -d 31.13.65.49/32 -j _WHATSAPP_
-A FORWARD -s <src_host> -d 31.13.66.49/32 -j _WHATSAPP_
-A FORWARD -s <src_host> -d 31.13.67.51/32 -j _WHATSAPP_
-A FORWARD -s <src_host> -d 31.13.68.52/32 -j _WHATSAPP_
-A FORWARD -s <src_host> -d 31.13.69.240/32 -j _WHATSAPP_
----snip-----
WhatsApp 使用的所有 IP 地址可在以下位置找到:这个链接。
有时下载此文件、过滤 ipv4 地址并使用可以向 iptables 提供以下信息的开关(如果存在)会更快:
:_WHATSAPP_ - [0:0]
-A _WHATSAPP_ -j ACCEPT
-A FORWARD -s <src_host> --from-file-dst /etc/iptables/whatsapp_cidr.txt -j _WHATSAPP_
这个功能存在吗?在联机帮助页上找不到它。
它需要是一些可以加载和读取文件的模块,因为我们有一个自定义防火墙脚本,它已经使用iptables-restore
sintax 规则处理文件。
答案1
我可以建议一种通过使用来提供iptables
列表的方法。IPs
ipset
您可以简单地创建并ipset
:
ipset -N <ipset name> iphash
然后您可以IP
使用以下命令将任何内容添加到集合中:
ipset add <ipset name> IP
之后您可以在以下位置使用该集合iptables
:
-A FORWARD -d <dst> -m set --match-set <ipset name> src -j _WHATSAPP_
您可以编写一个简单的脚本,可以在运行时向集合提供数据IPs
并从中删除,而无需执行iptables-restore
答案2
我认为一个好主意可能是使用这个https://gist.github.com/woods/25ef91a95da85bf10974 然后,您使用 IP 创建一个单独的 .csv 文件并将其提供给 IPTABLES