侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux iptables-save命令详解:轻松创建和恢复防火墙规则(附实例教程和注意事项)

Linux iptables-save命令介绍

iptables-save命令是iptables的一部分,用于将iptables的规则集导出到标准输出或文件中,以便于备份或恢复。iptables是Linux内核的防火墙模块,可以对网络数据包进行过滤、转发、修改等操作。iptables-save命令可以帮助用户保存当前的iptables配置,以便在重启或故障后恢复。

Linux iptables-save命令适用的Linux版本

iptables-save命令适用于大多数Linux发行版,如Ubuntu、Debian、CentOS、Fedora等。如果某些Linux发行版没有安装iptables或iptables-save,可以使用以下命令进行安装:

  • Ubuntu或Debian:[linux@bashcommandnotfound.cn ~]$ sudo apt-get install iptables iptables-persistent
  • CentOS或Fedora:[linux@bashcommandnotfound.cn ~]$ sudo yum install iptables iptables-services

Linux iptables-save命令的基本语法

iptables-save命令的基本语法如下:

iptables-save [选项]

Linux iptables-save命令的常用选项或参数说明

iptables-save命令的常用选项或参数如下:

选项说明
-c导出规则集时,同时导出每条规则的数据包和字节计数器
-t <表名>只导出指定的表,如filter、nat、mangle等
-f <文件名>将规则集导出到指定的文件中,而不是标准输出

Linux iptables-save命令的实例

实例1:导出所有iptables规则到标准输出

如果不指定任何选项或参数,iptables-save命令会将所有iptables规则导出到标准输出,格式为iptables-restore命令可以识别的格式。例如:

[linux@bashcommandnotfound.cn ~]$ iptables-save
# Generated by iptables-save v1.8.4 on Tue Dec 26 15:48:22 2023
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Tue Dec 26 15:48:22 2023
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Tue Dec 26 15:48:22 2023
...

实例2:导出所有iptables规则到文件

如果指定-f选项和文件名,iptables-save命令会将所有iptables规则导出到指定的文件中,而不是标准输出。例如:

[linux@bashcommandnotfound.cn ~]$ iptables-save -f /etc/iptables/rules.v4
[linux@bashcommandnotfound.cn ~]$ cat /etc/iptables/rules.v4
# Generated by iptables-save v1.8.4 on Tue Dec 26 15:48:22 2023
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Tue Dec 26 15:48:22 2023
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Tue Dec 26 15:48:22 2023
...

实例3:导出指定表的iptables规则到标准输出

如果指定-t选项和表名,iptables-save命令会只导出指定表的iptables规则到标准输出,而不是所有表的规则。例如:

[linux@bashcommandnotfound.cn ~]$ iptables-save -t filter
# Generated by iptables-save v1.8.4 on Tue Dec 26 15:48:22 2023
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Tue Dec 26 15:48:22 2023

实例4:导出指定表的iptables规则到文件

如果指定-t选项和表名,以及-f选项和文件名,iptables-save命令会只导出指定表的iptables规则到指定的文件中,而不是所有表的规则或标准输出。例如:

[linux@bashcommandnotfound.cn ~]$ iptables-save -t nat -f /etc/iptables/nat.rules
[linux@bashcommandnotfound.cn ~]$ cat /etc/iptables/nat.rules
# Generated by iptables-save v1.8.4 on Tue Dec 26 15:48:22 2023
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Tue Dec 26 15:48:22 2023

实例5:导出带有数据包和字节计数器的iptables规则到标准输出

如果指定-c选项,iptables-save命令会在导出规则集时,同时导出每条规则的数据包和字节计数器,格式为[数据包数:字节数]。这可以帮助用户分析iptables的性能和效果。例如:

[linux@bashcommandnotfound.cn ~]$ iptables-save -c
# Generated by iptables-save v1.8.4 on Tue Dec 26 15:48:22 2023
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
[123:4567] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
[12:345] -A INPUT -p icmp -j ACCEPT
[0:0] -A INPUT -i lo -j ACCEPT
[1:23] -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
[2:34] -A INPUT -j REJECT --reject-with icmp-host-prohibited
[0:0] -A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Tue Dec 26 15:48:22 2023
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
[456:7890] -A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Tue Dec 26 15:48:22 2023
...

Linux iptables-save命令的注意事项

请注意在规则较多的情况下,iptables-save的输出将会非常长。因此,在将规则重定向到文件进行保存时,需要确保有足够的磁盘空间。

当您在使用命令时遇到 "bash: iptables-save: command not found" 错误,这可能是因为您当前的系统中没有安装iptables软件包,可以通过以上提到的命令进行安装。

Linux iptables-save相关命令

iptables命令:对入/出数据包进行控制
iptables-restore命令:用来还原iptables的规则

0

评论区