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软件包,可以通过以上提到的命令进行安装。
评论区