iptables 添加 ip、端口以及 IP

iptables 添加 ip、端口以及 IP

现在我执行这个:

create blockipset hash:ip
add blockipset 192.168.1.5 -exist
add blockipset 192.168.3.115 -exist

iptables 和 ipset 是否可以阻止 ip、端口和 ip?例如,该列表包含:

192.168.1.5
192.168.3.115
192.168.1.55,80
192.168.1.53,22

答案1

您不能使用该ipset命令将不同类型的元素放入同一集合中。但您可以使用不同的集合,每种类型一个(完整列表可通过ipset help):

hash:ip
hash:ip,port

例如:

ipset create blocklistip hash:ip
ipset create blocklistipport hash:ip,port

ipset add blocklistip 192.0.2.3
ipset add blocklistipport 192.0.2.2,80
ipset add blocklistipport 192.0.2.3,udp:53

请注意,如上所述,默认情况下端口的协议是 TCP,除非另有明确说明(udp:对于 UDP、sctp:对于 SCTP,...)。

现在您的脚本必须检查它获得的元素类型,以了解其内容IP集它会添加它。这里的一个简单示例是,在从文件中读取列表时检查以了解将其放在哪里blocklist.txt

while read -r element; do
    if echo $element|grep -q ,; then
        ipset add blocklistipport $element
    else
        ipset add blocklistip $element
    fi
done < blocklist.txt

您可以阻止列表中的所有内容,例如:

iptables -A INPUT -m set --match-set blocklistip src -j DROP
iptables -A INPUT -m set --match-set blocklistipport src,dst -j DROP

上述src,dst意味着在数据包中查找匹配项时,使用数据包中的源 IP 地址和目标端口地址hash:ip,port

还,IP集list:set有一个由其他集合列表组成的特殊集合。这不会改变使用命令单独填充集合的方式ipset,但您可以这样做:

ipset create blocklist list:set
ipset add blocklist blocklistip
ipset add blocklist blocklistipport

并替换之前的两个iptables仅包含以下一项的规则:

iptables -A INPUT -m set --match-set blocklist src,dst -j DROP

这将有助于实现你的目标:这首单曲iptables规则将正确地处理带有或不带有端口的集合元素,如记录在 ipset 中

相关内容