首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iptables添加ip、端口和IP

iptables添加ip、端口和IP
EN

Unix & Linux用户
提问于 2020-01-14 03:14:29
回答 1查看 1.4K关注 0票数 1

现在我来做这个:

代码语言:javascript
复制
create blockipset hash:ip
add blockipset 192.168.1.5 -exist
add blockipset 192.168.3.115 -exist

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

代码语言:javascript
复制
192.168.1.5
192.168.3.115
192.168.1.55,80
192.168.1.53,22
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2020-01-14 11:04:22

不能使用ipset命令将不同类型的元素放在同一个集合中。但是您可以使用不同的集合,每种类型都使用一组(ipset help提供的完整列表):

代码语言:javascript
复制
hash:ip
hash:ip,port

例如:

代码语言:javascript
复制
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,.)。

现在,您的脚本必须检查它得到了哪种类型的元素,才能知道它将在什么ipset中添加它。这里的一个简单示例是检查,是否知道将其放在何处,同时从文件blocklist.txt中读取列表:

代码语言:javascript
复制
while read -r element; do
    if echo $element|grep -q ,; then
        ipset add blocklistipport $element
    else
        ipset add blocklistip $element
    fi
done < blocklist.txt

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

代码语言:javascript
复制
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意味着在查找hash:ip,port集合中的匹配时,沿着数据包中的目标端口地址使用源IP地址。

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

代码语言:javascript
复制
ipset create blocklist list:set
ipset add blocklist blocklistip
ipset add blocklist blocklistipport

并将前两条iptables规则替换为以下规则:

代码语言:javascript
复制
iptables -A INPUT -m set --match-set blocklist src,dst -j DROP

这与您的目标是一致的:这个单独的iptables规则将正确地使用带有或不带端口的set元素,如记录在ipset中

票数 4
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/561964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档