当前位置: 首页 > 工具软件 > ipset > 使用案例 >

ipset 简介

穆嘉
2023-12-01

我的博客主页 https://blog.csdn.net/h934070878

ipset

原文地址 : http://ipset.netfilter.org/

ipset 资料: https://www.linuxjournal.com/content/advanced-firewall-configurations-ipset

简介

ip set 是linux内核的一个内部框架, 可由ipset工具管理,ip set 可以分为以下几种类型:ip地址, 网路地址(网段),tcp/udp 端口号, mac地址, 网卡名称。或者是上述类型的组合,并保证快速的匹配。

ipset 适用于以下几种场景:

(1)一次性存储大量的ip或者端口,用以iptables匹配

(2)在不影响性能的前提下,动态更新iptables规则(针对ip或者端口)

(3)期望使用ipset的告诉匹配,或者在一条iptables规则中表达复杂的 ip/端口规则

ipset支持的集合

(1)bitmap : ip

存储在内存中,利用bitmap数据结构存储, 可以存储 65535个ip地址(B类网络)

(2)bitmap: ip,mac

存储在内存中, 8 bytes 表示一个ip,mac

(3) bitmap: port

同(1), 只是存储的是端口号

(4)hash:ip

使用hash存储ip地址。元素冲突的话,将以数组的形式放在最后

(5)hash:net

使用hash存储网络,与 hash:ip 使用同样的技术避免元素冲突

(6)hash:ip,port

与hash:ip 类似,但是可以存储IP与 协议-端口的组合,支持 tcp sctp udp udplite 加上端口号, 以及icmp icmpv6及其它无端口号的协议。

(7)hash:ip,port,ip

用hash存放 ip,port,ip的组合

(8)hash:ip,port,net

用hash 存放 ip,port, net 的组合

(9)hash:net,port

(10)hash:net,iface

用hash存放 网络 网卡

(11)list:set

用数组存放其它set, 即不同set的有序组合

下载与安装

linux 内核版本 >=3.11

source of ipset http://ipset.netfilter.org/ipset-7.6.tar.bz2

git://git.netfilter.org/ipset.git

ipset 使用方法

ipset

n, create SETNAME TYPENAME [ CREATE-OPTIONS ]

新建集合

add SETNAME ADD-ENTRY [ ADD-OPTIONS ]

向指定集合中新增元素

del SETNAME DEL-ENTRY [ DEL-OPTIONS ]

删除指定集合中的元素

test SETNAME TEST-ENTRY [ TEST-OPTIONS ]

判断元素是否在指定集合,0 存在, 非0 不存在

译者注: 不同集合类型,test 参数会不一致

x, destroy [ SETNAME ]

删除一个或所有集合(参数中未制定集合), 如果集合已经被引用,则无法删除

list [ SETNAME ] [ OPTIONS ]

列出集合条目

save [ SETNAME ]

保存集合指定集合或所有(至指定参数), -file 参数可以保存到制定文件

restore

将ipset集合从 指定文件中恢复存, 通过 -file 参数。需要注意到是, 现有 到集合和元素不会被覆盖, list、 help、 vertsion以及 交互模式下不支持该命令

flush [ SETNAME ]

清空指定集合到所有条目,或所有集合到条目(未指定集合参数)

e, rename SETNAME-FROM SETNAME-TO

重命名集合, SETNAME-TO 必须不存在

w, swap SETNAME-FROM SETNAME-TO

交换集合, 两个集合必须存在, 并且类型兼容

help [ TYPENAME ]

打印帮助信息

version

打印版本号

进入交互模式, 从标准输出读入命令,quit 退出,

其它选项

-!, -exist

忽略错误输出

-o, -output { plain | save | xml }

list命令制定输出格式

-q, -quiet

不输出相关信息, 但是当ipset无法继续运行时,仍然会退出

-r, -resolve

list 命令输出集合条目时, 解析主机名, dns查询可能导致速度缓慢

-s, -sorted

对输出排序

-n, -name

list命令,只输出集合名称

-t, -terse

List 命令只输出集合名称和头部,忽略条目

-f, -file filename

list save restore 命令,用于指定文件名称

详细介绍

ip, net, mac, port, iface 这类参数用 “,” 逗号隔开, 但是主机名包含段短横线“-”时, 必须放在方括号“[]” 中, 并且,ipset 会去解析主机名,如果解析出多个ip, 只使用第一个.

bitmap, list类型,使用固定长度存储空间。 hash 类型是用hash存放元素, 为了避免hash冲突, 会现在链到长度,如果上到到达限制,在使用iset添加条目时,将hash大小加倍。当集合中到条目被应用到iptables时, hash大小是固定到, 集合也不能重复,新到条目也不能加载到集合中。

常见 create add 命令选项

timeout

未完待续。。。。。

 类似资料: