ipset、iptables快速使用

发布时间 2023-08-05 02:50:37作者: jangbo

ipset、iptables快速使用

##### 1. 直接来看一条命令

sh<br />sudo ipset add myset_name 127.0.0.1<br />#&nbsp;&nbsp; &nbsp;本条命令的意思是:在名为 myset_name 的一个集合中 添加(add)一条地址为127.0.0.1的ip<br /><br />sudo ipset add myset_name 127.0.0.1-127.0.1.200<br />#&nbsp;&nbsp; &nbsp;可以在一个ipset中批量加入ip地址,固定写法:中间以&ldquo;-&rdquo;连接,地址需要写全,不全会报错,加不进去<br />

##### 2. 如何创建一个ipset?

sh<br />sudo ipset create myset hash:ip <br />#&nbsp;&nbsp; &nbsp;hash:ip表示创建一个使用 IP 地址作为元素的哈希集合。它指定了 ipset 的类型和数据结构,以便有效地存储和检索 IP 地址。冒号前面的部分(hash)表示 ipset 的类型,冒号后面的部分(ip)表示使用的数据类型。<br />#<br />#&nbsp;&nbsp; &nbsp;类型可以是以下之一:<br />#&nbsp;&nbsp;&nbsp; hash:ip:使用 IP 地址作为元素的哈希集合。<br />#&nbsp;&nbsp;&nbsp; hash:net:使用 IP 网络(CIDR)作为元素的哈希集合。<br />#&nbsp;&nbsp;&nbsp; hash:ip,port:使用 IP 地址和端口号组合作为元素的哈希集合。<br />#&nbsp;&nbsp;&nbsp; hash:net,port:使用 IP 网络(CIDR)和端口号组合作为元素的哈希集合。<br />#&nbsp;&nbsp;&nbsp; 其他类型,如 list:set、bitmap:ip、bitmap:port 等。<br />#<br />#&nbsp;&nbsp; &nbsp; 也可以使用-N参数来代替create:sudo ipset -N myset_name hash:ip<br /><br />sudo ipset create myset_name hash:ip maxelem 1000000<br />#&nbsp;&nbsp; &nbsp;ipset默认可以存储65536个元素,使用maxelem指定数量<br />

##### 3. 如何查看当前已有哪些ipset?

sh<br />sudo ipset list<br />#&nbsp;&nbsp; &nbsp;查看当前服务器已创建的ipset<br /><br />sudo ipset list myset_name<br />#&nbsp;&nbsp; &nbsp;查看myset_name表中已经添加的ip地址<br />

##### 4.  此时已经创建了一张ipset表,如何结合iptables使用呢?ipset有什么作用?

sh<br />sudo iptables -I INPUT -m set ! --match-set myset_name src -p tcp -j DROP<br />#&nbsp;&nbsp; &nbsp;本条命令的意思是:使用iptables的规则<br />#&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;-I INPUT:这表示在 INPUT 链的开头插入规则 (详见下条 5.四表五链)<br />#&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;-m set 表明要使用ipset扩展模块进行匹配<br />#&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;!表示取反<br />#&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;-p tcp 表明匹配 TCP 协议的数据包 (其他取值:tcp、udp、icmp、icmpv6、esp......)<br />#&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;--match-set myset_name src 表明查找数据包的来源是否属于名为`myset_name`的ipset<br />#&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;-J 表明如果匹配成功,则丢弃(DROP)掉 (其他取值:ACCEPT、DROP、REJECT、LOG......)<br /># 整条命令的意思是:使用 iptables 设置规则,将匹配到 myset_name 中的源IP地址的TCP流量DROP<br />#<br />#&nbsp;&nbsp; &nbsp;大致语法:<br />#&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;iptables [-t table] COMMAND [chain] CRETIRIA -j ACTION<br />#&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;详见这里: https://man7.org/linux/man-pages/man8/iptables.8.html<br />

##### 5. 四表五链

sh<br />sudo iptables -nvL <br />#&nbsp;&nbsp; &nbsp;查看当前设置了哪些规则<br />#<br /># 五链:防火墙的规则需要写入具体的数据链中<br />#&nbsp;&nbsp; &nbsp;INPUT(入站数据过滤)<br />#&nbsp;&nbsp; &nbsp;OUTPUT(出站数据过滤)<br />#&nbsp;&nbsp; &nbsp;FORWARD(转发数据过滤)<br />#&nbsp;&nbsp; &nbsp;PREROUTING(路由前过滤)<br />#&nbsp;&nbsp; &nbsp;POSTROUTING(路由后过滤)<br />#<br /># 四表:有印象即可<br />#&nbsp;&nbsp; &nbsp;filter:负责过滤数据包,包括的规则链有:input,output和forward<br />#&nbsp;&nbsp; &nbsp;nat:用于网络地址转换(IP、端口),包括的规则链有:prerouting,postrouting 和 output<br />#&nbsp;&nbsp; &nbsp;mangle:主要应用在修改数据包、流量整形、给数据包打标识,默认的规则链有:INPUT,OUTPUT、 forward,POSTROUTING,PREROUTING<br />#&nbsp;&nbsp; &nbsp;raw:控制 nat 表中连接追踪机制的启用状况,可以控制的链路有 PREROUTING、OUTPUT<br />

##### 6. 添加错了,如何修改/删除一条iptables规则?

sh<br />iptables -L INPUT --line-numbers<br />#&nbsp;&nbsp; &nbsp;表明列出名为 INPUT 的 iptables 链的规则,并显示规则的行号<br /><br />iptables -R INPUT 2 &lt;new_rule&gt;<br />#&nbsp;&nbsp; &nbsp;使用-R参数,修改 INPUT 链中行号为 2 的规则,在 &lt;new_rule&gt; 的位置,替换为要设置的新规则<br /><br />iptables -D INPUT 3<br />#&nbsp;&nbsp; &nbsp;使用-D参数,删除 INPUT 链中行号为 3 的规则<br />

##### 7.持久化保存防火墙规则

​        所有对iptables规则的设置、删除、修改、都是即时生效的,无需手动重启或生效服务。但如果不保存,当计算机重启后所有的规则都会丢失,所以对防火墙规则进行及时保存的操作是非常必要的。

sh<br />#&nbsp;&nbsp; &nbsp;在 Ubuntu 系统中,可以使用以下方法保存和备份防火墙规则:<br /><br />sudo iptables-save &gt; firewall-rules.txt<br />#&nbsp;&nbsp; &nbsp;使用 iptables-save 命令将当前的防火墙规则保存到文件中。可以将输出重定向到一个名为 firewall-rules.txt的文件中<br /><br />sudo iptables-restore &lt; 文件名称<br />#&nbsp;&nbsp; &nbsp;iptables-restore 命令可以批量导入Linux防火墙规则,同时也需要结合重定向输入来指定备份文件的位置<br />#&nbsp;&nbsp; &nbsp;导入的文件必须是使用 iptables-save工具导出来的才可以!!!<br />

[^author]: https://www.cnblogs.com/jangbo/p/



> 参考文献:
>
> 《一篇搞懂》系列之一 —— iptables
>
> Linux iptables命令详解
>
> Linux下iptables防火墙配置详解
>
> Centos7 ipset命令介绍及使用