ipset的学习与使用
场景说明
虽然可以通过:firewall-cmd --zone=trusted --add-source=$1 --permanent && firewall-cmd --reload或者是firewall-cmd --zone=public --add-port=$1/tcp --permanent && firewall-cmd --reload为ip地址和端口开放里面, 但是每次还需要进行一下reload. 如果条目数过多之后防火墙的reload和性能都不是特别好. 最近在看博客, 突然发现有一个ipset的方式. 更加简单. 也更利于实现单独的ip设置, 动态增删等.
ChatGPT怎么说
ipset 是一个基于内核的数据结构,它可以用于管理 iptables 规则。ipset 可以通过自定义集合来代替直接写入 iptables 规则。这些集合可以包括 ip 地址、端口号、mac 地址等成员,并且可以在多个规则中重复使用,从而简化了管理和维护的工作。使用 ipset 命令创建、修改和删除集合,还可以将集合成员添加到集合中或从集合中移除成员。在 iptables 规则中使用集合时,只需要引用集合的名称即可,而不必列出集合中的每个成员。总之,ipset 是一个强大的工具,可以帮助用户管理 iptables 规则并加快网络流量过滤的速度。
安装
好像 centos 系列都会默认安装 ipsetubuntu的机器可以使用 apt-get install ipset -y 的方式进行安装centos的机器可以使用yum install ipset -y 方式进行安装.方式比较简单. 可以直接进进行使用.
简介
帮助部分:create SETNAME TYPENAME [type-specific-options] Create a new setadd SETNAME ENTRY Add entry to the named setdel SETNAME ENTRY Delete entry from the named settest SETNAME ENTRY Test entry in the named setdestroy [SETNAME] Destroy a named set or all setslist [SETNAME] List the entries of a named set or all setssave [SETNAME] Save the named set or all sets to stdoutrestore Restore a saved stateflush [SETNAME] Flush a named set or all setsrename FROM-SETNAME TO-SETNAME Rename two setsswap FROM-SETNAME TO-SETNAME Swap the contect of two existing setshelp [TYPENAME] Print help, and settype specific helpversion Print version informationquit Quit interactive mode
部分命令的使用
ipset create whitelist hash:ipipset create blacklist hash:ip# 创建一个空的白名单. iptables -I INPUT -m set --match-set whitelist src -j ACCEPT# 白名单设置为接收iptables -I INPUT -m set --match-set blacklist src -j DROP# 黑名单设置为拒绝.
firewall-cmd 设置 ipset 的方式
firewall-cmd --get-ipset-types获取支持的 ipset类型列表firewall-cmd --get-ipsets获取当前所有的ipsetfirewall-cmd --zone=trusted --permanent --add-source=ipset:ipsetname将某ipset 增加到特定区域中firewall-cmd --add-rich-rule='rule source ipset=blacklist drop'设置黑名单 dropfirewall-cmd --zone=public --add-rich-rule='rule source ipset=whitelist accept'设置白名单 接收firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source ipset=whitelist port port=22 protocol=tcp reject'将特定IP地址设置为不进行 22 端口的访问.
ipset命令详解
ipset add whitelist 10.110.80.0/21将部分内网段添加到白名单ipset list 查看ipset的列表ipset whitelist list 查看白名单的信息ipset flush whitelist清空列表里面的信息ipset destroy 销毁所有的列表, 如果加上列表名称就是清理对应的列表. ip save whitelist -f zhaobsh.txt 将白名单保存到具体文件ipset restore -f zhaobsh.txt