ipset命令介绍与基本使用

这篇具有很好参考价值的文章主要介绍了ipset命令介绍与基本使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. 介绍

        ipset命令是用于管理内核中IP sets模块的,如iptables之于netfilter。ipset字面意思是一些IP地址组成一个集合(set)。但是ipset用于用于存储IP地址,整个子网,端口号(TCP/UDP),MAC地址,网络接口名或者上述这些的组合。ipset主要是由iptables来使用,用于提高iptables的灵活性,简化iptables的规则。可能你在使用iptables时会感觉到以下不便:

        1. 使用iptables命令为一批IP地址或端口应用相同的iptables规则时,不得不为每个IP或端口都新建一条iptables规则。这有时会让iptables某个表特别庞大,但是规则看起来又非常冗余。

        2. 当需要给某个iptables规则应用到一个新的IP地址或端口时,我们不得不新建一条iptables规则;当需要给某个iptables规则删除其中某个IP地址或端口时,则需要直接删除那条iptables规则。这会让iptables操作特别繁琐。

ipset可以解决以上问题:

        1. 当需要把一批IP地址或端口都应用某个iptables规则时,只需要把一批IP地址和端口放入一个ipset中,把iptables规则应用到这个ipset就可以了。

        2. 当需要更新iptables规则的IP地址或端口时,只要更新对应ipset中的IP地址或端口就可以了,不需要修改iptables表。

二. ipset命令基本介绍与使用

格式:

#ipset命令格式
ipset [ OPTIONS ] COMMAND [ COMMAND−OPTIONS ]

COMMANDS := { create | add | del | test | destroy | list | save | restore | flush | rename | swap | help |
version | − }

OPTIONS := { −exist | −output { plain | save | xml } | −quiet | −resolve | −sorted | −name | −terse | −file
filename }

ipset create SETNAME TYPENAME [ CREATE−OPTIONS ]
ipset add SETNAME ADD−ENTRY [ ADD−OPTIONS ]
ipset del SETNAME DEL−ENTRY [ DEL−OPTIONS ]
ipset test SETNAME TEST−ENTRY [ TEST−OPTIONS ]
ipset destroy [ SETNAME ]
ipset list [ SETNAME ]
ipset save [ SETNAME ]
ipset restore
ipset flush [ SETNAME ]
ipset rename SETNAME−FROM SETNAME−TO
ipset swap SETNAME−FROM SETNAME−TO
ipset help [ TYPENAME ]
ipset version
ipset −

COMMAND选项介绍:

n, create SETNAME TYPENAME [ CREATE−OPTIONS ]

        通过指定SETNAME和TYPENAME创建一个新IP集合。如果指定-exist选项,ipset在创建一个已经存在的IP集合时,ipset将不会报错。

add SETNAME ADD-ENTRY [ADD-OPTIONS]

        添加一个条目到SETNAME指定的IP集合中。如果指定-exist选项,IP集合存在此条目时,ipset将不会报错。

del SETNAME DEL-ENTRY [ DEL-OPTIONS ]

        从SETNAME指定的IP集合中删除一个条目。如果指定-exist选项,IP集合不存在此条目时,ipset将不会报错。

test SETNAME TEST-ENTRY [ TEST-OPTIONS ]

        测试一个条目是否在指定的IP集合中。如果在,ipset命令返回0,如果不在,则返回非0

x,destory [ SETNAME ]

        销毁指定的IP集合,如果不指定,则销毁所有的IP集合。如果某一IP集合正在被引用,则ipset不对该IP集合做任何操作。

list [ STENAME ] [ OPTIONS ]

        列出指定IP集合的头部数据和添加的条目,如果没有指定,则是所有的IP集。--sorted选项会把IP集合排序后输出。--output指定IP集合输出的格式:

# 创建名称为test的IP集
~ # ipset create test hash:ip

# 添加114.114.114.114到test IP集中
~ # ipset add test 114.114.114.114

# 以普通文本格式输出test IP集内容
~ # ipset list test -output plain
Name: test
Type: hash:ip
Revision: 4
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 8264
References: 0
Members:
114.114.114.114

# 以保存格式输出test IP集内容
~ # ipset list test -output save
create test hash:ip family inet hashsize 1024 maxelem 65536
add test 114.114.114.114

# 以XML格式输出test IP集内容
~ # ipset list test -output xml
<ipsets>
<ipset name="test">
<type>hash:ip</type>
<revision>4</revision>
<header><family>inet</family><hashsize>1024</hashsize><maxelem>65536</maxelem>
<memsize>8264</memsize>
<references>0</references>
</header>
<members>
<member><elem>114.114.114.114</elem></member>
</members>
</ipset>
</ipsets>

save [ SETNAME ]

        保存指定的IP集,如果没有指定,则是所有的IP集。如果不指定-file则是输出到标准输出,指定则是输出到指定文件。

~ # ipset save test -file /tmp/234

flush [ SETNAME ]

        清空指定IP集,如果没有指定,则是所有的IP集。

e,rename SETNAME-FROM SETNAME-TO

        重命名一个IP集

~ # ipset rename test test1

w,swap SETNAME-FROM SETNAME-TO

        交换两个IP集的名称。但是两个IP集的必须存在而且SETTYPE兼容才可以。

其他选项:

timeout

        设置IP集合添加的新条目的默认超时时间,新加的条目的时间超过超时时间后,将从IP集中删除。

# test IP集新添加的条目的默认超时时间300s
ipset create test hash:ip timeout 300

# 192.168.0.1在60s后从test IP集中移除
ipset add test 192.168.0.1 timeout 60

SET TYPE:

bitmap:ip

CREATE−OPTIONS := range fromip−toip|ip/cidr [ netmask cidr ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
ADD−ENTRY := { ip | fromip−toip | ip/cidr }
ADD−OPTIONS := [ timeout value ] [ packets value ] [ bytes value ] [ comment string ] [ skbmark value ] [ skbprio value ] [ skbqueue value ]
DEL−ENTRY := { ip | fromip−toip | ip/cidr }
TEST−ENTRY := ip

举例:

range fromip−toip | ip/cidr:

# example 1
~ # ipset create test3 bitmap:ip range 192.168.0.1-192.168.0.255
~ # ipset add test3 192.168.1/24
~ # ipset list test3
Name: test3
Type: bitmap:ip
Revision: 3
Header: range 192.168.0.1-192.168.0.255
Size in memory: 92
References: 0
Members:
192.168.0.1
     .
     .
     .
192.168.0.255


# example 2
~ # ipset create test4 bitmap:ip range 192.168.0.1-192.168.0.100
~ # 
~ # ipset add test4 192.168.0/24
ipset v7.15: Element is out of the range of the set
~ # 
~ # ipset add test4 192.168.0.100
~ # ipset list test4
Name: test4
Type: bitmap:ip
Revision: 3
Header: range 192.168.0.1-192.168.0.100
Size in memory: 76
References: 0
Members:
192.168.0.100


# example 3
~ # ipset create test5 bitmap:ip range 192.168.1.0/16
~ # ipset add test5 192.168.1/16
~ # ipset list test5
Name: test5
Type: bitmap:ip
Revision: 3
Header: range 192.168.0.0-192.168.255.255
Size in memory: 8252
References: 0
Members:
192.168.0.1
     .
     .
     .
192.168.0.255
     .
     .
     .
192.168.255.255


# example 4
~ # ipset create test6 bitmap:ip range 192.168.1.0/16
~ # ipset add test6 192.168.5/24
~ # ipset list test6
Name: test6
Type: bitmap:ip
Revision: 3
Header: range 192.168.0.0-192.168.255.255
Size in memory: 8252
References: 0
Members:
192.168.0.1
     .
     .
     .
192.168.0.255

bitmap:ip,mac

CREATE−OPTIONS := range fromip−toip|ip/cidr [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
ADD−ENTRY := ip[,macaddr]
ADD−OPTIONS := [ timeout value ] [ packets value ] [ bytes value ] [ comment string ] [ skbmark value ] [ skbprio value ] [ skbqueue value ]
DEL−ENTRY := ip[,macaddr]
TEST−ENTRY := ip[,macaddr]

举例:

range fromip−toip|ip/cidr:

~ # ipset create test bitmap:ip,mac range 192.168.0.0/16
~ # ipset add test 192.168.1.1,12:34:56:78:9A:BC
~ # ipset add test 192.168.1.2
~ # ipset list test
Name: test8
Type: bitmap:ip,mac
Revision: 3
Header: range 192.168.0.0-192.168.255.255
Size in memory: 532532
References: 0
Members:
192.168.1.1,12:34:56:78:9A:BC
192.168.1.2

bitmap:port

CREATE−OPTIONS := range fromport−toport [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
ADD−ENTRY := { [proto:]port | [proto:]fromport−toport }
ADD−OPTIONS := [ timeout value ] [ packets value ] [ bytes value ] [ comment string ] [ skbmark value ] [ skbprio value ] [ skbqueue value ]
DEL−ENTRY := { [proto:]port | [proto:]fromport−toport }
TEST−ENTRY := [proto:]port

举例:

range [proto:]fromport−toport:

~ # ipset create test bitmap:port range 1024-4096
~ # ipset add test 30000
ipset v7.15: Element is out of the range of the set
~ # 
~ # ipset add test 2048
~ # 
~ # ipset list test
Name: test
Type: bitmap:port
Revision: 3
Header: range 1024-4096
Size in memory: 436
References: 0
Members:
2048

hash:ip

CREATE−OPTIONS := [ family { inet | inet6 }]|[ hashsize value ] [ maxelem value ] [ netmask cidr ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
ADD−ENTRY := ipaddr
ADD−OPTIONS := [ timeout value ] [ packets value ] [ bytes value ] [ comment string ] [ skbmark value ] [ skbprio value ] [ skbqueue value ]
DEL−ENTRY := ipaddr
TEST−ENTRY := ipaddr

举例:

~ # ipset create test hash:ip
~ # ipset add test 192.168.100.1

hash:mac

CREATE−OPTIONS := [ hashsize value ] [ maxelem value ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
ADD−ENTRY := macaddr
ADD−OPTIONS := [ timeout value ] [ packets value ] [ bytes value ] [ comment string ] [ skbmark value ] [ skbprio value ] [ skbqueue value ]
DEL−ENTRY := macaddr
TEST−ENTRY := macaddr

举例:文章来源地址https://www.toymoban.com/news/detail-717561.html

~ # ipset create test hash:mac
~ # ipset add test 01:02:03:04:05:06
~ # ipset test test 01:02:03:04:05:06

hash:ip,mac

CREATE−OPTIONS := [ family { inet | inet6 }]|[ hashsize value ] [ maxelem value ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
ADD−ENTRY := ipaddr,macaddr
ADD−OPTIONS := [ timeout value ] [ packets value ] [ bytes value ] [ comment string ] [ skbmark value ] [ skbprio value ] [ skbqueue value ]
DEL−ENTRY := ipaddr,macaddr
TEST−ENTRY := ipaddr,macaddr

举例:

~ # ipset create test hash:ip,mac
~ # ipset add test 1.1.1.1,01:02:03:04:05:06
~ # ipset test test 1.1.1.1,01:02:03:04:05:06

hash:net

CREATE−OPTIONS := [ family { inet | inet6 }]|[ hashsize value ] [ maxelem value ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
ADD−ENTRY := netaddr
ADD−OPTIONS := [ timeout value ] [ nomatch ] [ packets value ] [ bytes value ] [ comment string ] [ skbmark value ] [ skbprio value ] [ skbqueue value ]

举例:

~ # ipset create test hash:net
~ # ipset add test 192.168.0.0/24
~ # ipset add test 10.1.0.0/16
~ # ipset add test 192.168.0/24
~ # ipset add test 192.168.0/30 nomatch

hash:net,net

CREATE−OPTIONS := [ family { inet | inet6 }]|[ hashsize value ] [ maxelem value ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
ADD−ENTRY := netaddr,netaddr
ADD−OPTIONS := [ timeout value ] [ nomatch ] [ packets value ] [ bytes value ] [ comment string ] [ skbmark value ] [ skbprio value ] [ skbqueue value ]
CREATE−OPTIONS := [ family { inet | inet6 }]|[ hashsize value ] [ maxelem value ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
ADD−ENTRY := netaddr,netaddr
ADD−OPTIONS := [ timeout value ] [ nomatch ] [ packets value ] [ bytes value ] [ comment string ] [ skbmark value ] [ skbprio value ] [ skbqueue value ]

举例:

~ # ipset create test hash:net,net
~ # ipset add test 192.168.0.0/24,10.0.1.0/24
~ # ipset add test 10.1.0.0/16,10.255.0.0/24
~ # ipset add test 192.168.0/24,192.168.54.0-192.168.54.255
~ # ipset add test 192.168.0/30,192.168.64/30 nomatch

hash:ip,port

CREATE−OPTIONS := [ family { inet | inet6 }]|[ hashsize value ] [ maxelem value ] [ timeout value ] [ counters ] [ comment ] [ skbinfo ]
ADD−ENTRY := ipaddr,[proto:]port
ADD−OPTIONS := [ timeout value ] [ packets value ] [ bytes value ] [ comment string ] [ skbmark value ] [ skbprio value ] [ skbqueue value ]
DEL−ENTRY := ipaddr,[proto:]port
TEST−ENTRY := ipaddr,[proto:]port

举例:

~ # ipset create test hash:ip,port
~ # ipset add test 192.168.1.0/24,80−82
~ # ipset add test 192.168.1.1,udp:53
~ # ipset add test 192.168.1.1,vrrp:0
~ # ipset test test 192.168.1.1,80
Warning: 192.168.1.1,80 is in set test.

到了这里,关于ipset命令介绍与基本使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ubuntu学习笔记-Ubuntu搭建禅道开源版及基本使用

    卜相机关 卜三命、相万生,机关算尽明不明,了却君王天下事,聊得浮云,醉里挑灯。 擅长卜卦命相与机关之术的中原谋士,在森狱进犯中原时,主动找上玄嚣太子献策,言谈中对中原地脉与情势了解透彻,并助玄嚣破解云渡山地脉阵局,因而被网罗至葬天关助玄嚣拓展霸

    2024年02月20日
    浏览(37)
  • ipset、iptables快速使用

    前言:ipset 和 iptables 是两个不同但相关的工具,用于管理和操作防火墙规则。 实际上,ipset 和 iptables 通常结合使用,以提高防火墙规则的效率和管理能力。通过将 ipset 创建的 IP 地址集合与 iptables 结合,可以更快速地进行 IP 地址过滤和匹配操作。iptables 规则可以引用 ipse

    2024年02月14日
    浏览(23)
  • 开源软件介绍——国内和国际主要开源社区

    我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来看一看国内和国际上有哪些主要开源社区。 开源社区又称为开放源代码社区,一般由拥有共同兴趣爱好的人组成。根据相应的开源软件许可证协议公布软件源代码的网络平台,同时也为网络成员提供一个自由学习和

    2024年02月10日
    浏览(27)
  • 开源软件介绍——开源基金会和开源许可证

     我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来看一看世界范围内知名的开源基金会和开源许可证。 基金会是开源生态中的一个重要组成部分,用于资金的筹集与开源项目的前期资助与后期的发展。这里将介绍部分重要基金会,供大家深人学习与借鉴。 云原生

    2024年02月09日
    浏览(160)
  • 深入篇【Linux】学习必备:【文本编辑器】vim的基本介绍及使用

    Vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。 vim的设计理念是命令的组合。用户学习了各种各样的文本间移动/跳转的命令和其他的普通模式的编辑

    2024年02月08日
    浏览(35)
  • 【Python_Selenium学习笔记(一)】Selenium介绍及基本使用方法

    Selenium是一套 Web 网站的程序自动化操作解决方案,广泛应用于自动化测试及爬虫。此篇文章主要介绍 Selenium 的 安装和基本使用流程。 Selenium 框架的安装主要就是安装两样东西: Selenium 客户端库 和 浏览器驱动 。 1.1、Selenium 框架安装 使用 pip 命令安装 pip install selenium ,安装

    2023年04月13日
    浏览(45)
  • 【通义千问】大模型Qwen GitHub开源工程学习笔记(1)-- 使用指南、依赖库和软件

    9月25日,阿里云开源通义千问140亿参数模型Qwen-14B及其对话模型Qwen-14B-Chat,免费可商用。 立马就到了GitHub去fork。 GitHub: GitHub - QwenLM/Qwen: The official repo of Qwen (通义千问) chat pretrained large language model proposed by Alibaba Cloud. 官方的技术资料也下载了,看这里==https://qianwen-res.oss-cn-b

    2024年02月03日
    浏览(52)
  • JVS开源基础框架:平台基本信息介绍

    JVS是面向软件开发团队可以快速实现应用的基础开发脚手架,主要定位于企业信息化通用底座,采用微服务分布式框架,提供丰富的基础功能,集成众多业务引擎,它灵活性强,界面化配置对开发者友好,底层容器化构建,集合持续化构建。 JVS是定位为辅助研发团队的快速脚

    2024年02月12日
    浏览(46)
  • 开源软件license介绍与检测

    通俗来讲,开源许可证就是一种允许软件使用者在一定条件内按照需要自由使用和修改软件及其源代码的的法律条款。借此条款,软件作者可以将这些权利许可给使用者,并告知使用限制。这些许可条款可以由个人、商业公司或非赢利组织起草。 从整体上看,开源许可证大致

    2024年02月03日
    浏览(30)
  • 几款优秀科学开源计算软件介绍

    有一些比较优秀的软件,它们在科学计算、数据处理和分析方面具有广泛的应用和功能。以下是一些比较知名的软件: SciPy :SciPy是一个非常流行的科学计算库,提供了大量的数学函数和算法,用于解决各种科学问题。它支持多种操作系统,包括FreeBSD,并且与NumPy等其他科学

    2024年01月25日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包