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

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

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

目 录CONTENT

文章目录

Linux ip6tables-save命令教程:如何保存和恢复IPv6包过滤规则表(附实例详解和注意事项)

Linux ip6tables-save命令介绍

ip6tables-save命令是用来将ip6tables表的内容以一种容易解析的格式输出到标准输出或者指定的文件中。ip6tables是Linux内核中的IPv6包过滤规则表,它可以用来设置、维护和检查防火墙规则。ip6tables-save命令可以用来备份或恢复ip6tables表的配置,也可以用来查看当前的ip6tables表的状态。

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

ip6tables-save命令适用于所有支持ip6tables的Linux版本,包括Debian、Ubuntu、CentOS、Fedora、RHEL等。如果某些Linux版本没有安装ip6tables,可以使用以下命令进行安装:

  • Debian/Ubuntu: sudo apt install iptables
  • CentOS/RHEL/Fedora: sudo yum install iptables
  • CentOS 8/Rocky Linux/AlmaLinux: sudo dnf install iptables

Linux ip6tables-save命令的基本语法

ip6tables-save命令的基本语法格式如下:

ip6tables-save [ -M modprobe] [ -c ] [ -t table] [ -f filename ]
  • -M modprobe--modprobe modprobe_program:指定modprobe程序的路径。默认情况下,ip6tables-save会检查/proc/sys/kernel/modprobe来确定可执行文件的路径。
  • -c--counters:在输出文件中包含所有数据包和字节计数器的当前值。
  • -t table--table tablename:只输出指定的表的内容。如果内核支持自动加载模块,会尝试加载相应的表的模块,如果没有已经加载的话。如果不指定,输出包含所有可用的表。
  • -f filename--file filename:指定输出文件的名称。如果不指定,ip6tables-save会输出到标准输出。

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

ip6tables-save命令的常用选项或参数有以下几个:

选项或参数说明
-c包含计数器的值
-t filter只输出filter表的内容
-t mangle只输出mangle表的内容
-t nat只输出nat表的内容
-t raw只输出raw表的内容
-t security只输出security表的内容

如果有什么常见技巧或高级技巧可以建立一个二级标题然后讲解下。例如:

Linux ip6tables-save命令的高级技巧

  • 可以使用管道符(|)将ip6tables-save的输出重定向到其他命令,如grep、sed、awk等,进行过滤、替换或分析。
  • 可以使用重定向符(>)将ip6tables-save的输出保存到文件中,作为备份或恢复的依据。
  • 可以使用ip6tables-restore命令将ip6tables-save的输出作为输入,恢复ip6tables表的配置。

Linux ip6tables-save命令的实例

实例1:查看当前的ip6tables表的内容

使用ip6tables-save命令不带任何参数,可以查看当前的ip6tables表的内容,包括filter、mangle、nat、raw和security表。输出的格式为:

# Generated by ip6tables-save v1.8.7 on Tue Dec 26 15:03:14 2023
*表名
:链名 [数据包计数器:字节计数器]
规则
COMMIT
# Completed on Tue Dec 26 15:03:14 2023

具体的实例操作如下:

[linux@bashcommandnotfound.cn ~]$ ip6tables-save
# Generated by ip6tables-save v1.8.7 on Tue Dec 26 15:03:14 2023
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
...

实例2:只查看filter表的内容

使用ip6tables-save命令带上-t filter参数,可以只查看filter表的内容,不输出其他表的内容。filter表是默认的ip6tables表,用来过滤数据包。输出的格式与实例1相同,只是只有filter表的部分。具体的实例操作如下:

[linux@bashcommandnotfound.cn ~]$ ip6tables-save -t filter

实例3:只查看mangle表的内容

使用ip6tables-save命令带上-t mangle参数,可以只查看mangle表的内容,不输出其他表的内容。mangle表是用来对数据包进行特殊的修改,如改变TTL、TOS等。输出的格式与实例1相同,只是只有mangle表的部分。具体的实例操作如下:

[linux@bashcommandnotfound.cn ~]$ ip6tables-save -t mangle
# Generated by ip6tables-save v1.8.7 on Tue Dec 26 15:03:14 2023
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed on Tue Dec 26 15:03:14 2023

实例4:只查看nat表的内容

使用ip6tables-save命令带上-t nat参数,可以只查看nat表的内容,不输出其他表的内容。nat表是用来进行网络地址转换,如SNAT、DNAT等。输出的格式与实例1相同,只是只有nat表的部分。具体的实例操作如下:

[linux@bashcommandnotfound.cn ~]$ ip6tables-save -t nat
# Generated by ip6tables-save v1.8.7 on Tue Dec 26 15:03:14 2023
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed on Tue Dec 26 15:03:14 2023

实例5:只查看raw表的内容

使用ip6tables-save命令带上-t raw参数,可以只查看raw表的内容,不输出其他表的内容。raw表是用来在连接跟踪之前处理数据包,如设置NOTRACK标记等。输出的格式与实例1相同,只是只有raw表的部分。具体的实例操作如下:

[linux@bashcommandnotfound.cn ~]$ ip6tables-save -t raw
# Generated by ip6tables-save v1.8.7 on Tue Dec 26 15:03:14 2023
*raw
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
# Completed on Tue Dec 26 15:03:14 2023

实例6:只查看security表的内容

使用ip6tables-save命令带上-t security参数,可以只查看security表的内容,不输出其他表的内容。security表是用来设置SELinux安全上下文,如SECMARK等。输出的格式与实例1相同,只是只有security表的部分。具体的实例操作如下:

[linux@bashcommandnotfound.cn ~]$ ip6tables-save -t security
# Generated by ip6tables-save v1.8.7 on Tue Dec 26 15:03:14 2023
*security
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
# Completed on Tue Dec 26 15:03:14 2023

实例7:将ip6tables表的内容保存到文件中

使用ip6tables-save命令带上-f filename参数,可以将ip6tables表的内容保存到指定的文件中,而不是输出到标准输出。这样可以方便地备份或恢复ip6tables表的配置。具体的实例操作如下:

[linux@bashcommandnotfound.cn ~]$ ip6tables-save -f ip6tables.bak
[linux@bashcommandnotfound.cn ~]$ ls -l ip6tables.bak
-rw-r--r--. 1 root root 1000 Dec 26 15:03 ip6tables.bak

实例8:将ip6tables表的内容输出到标准错误中

使用ip6tables-save命令不带任何参数,可以将ip6tables表的内容输出到标准输出中。如果想要将ip6tables表的内容输出到标准错误中,可以使用重定向符(>&)将标准输出重定向到标准错误。这样可以方便地与其他命令进行组合或分离。具体的实例操作如下:

[linux@bashcommandnotfound.cn ~]$ ip6tables-save >&2
# Generated by ip6tables-save v1.8.7 on Tue Dec 26 15:03:14 2023
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
# Completed on Tue Dec 26 15:03:14 2023
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed on Tue Dec 26 15:03:14 2023
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed on Tue Dec 26 15:03:14 2023
*raw
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
# Completed on Tue Dec 26 15:03:14 2023
*security
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
# Completed on Tue Dec 26 15:03:14 2023

实例9:将ip6tables表的内容过滤后输出

使用ip6tables-save命令不带任何参数,可以将ip6tables表的内容输出到标准输出中。如果想要对输出的内容进行过滤,可以使用管道符(|)将ip6tables-save的输出重定向到其他命令,如grep、sed、awk等。这样可以方便地查找或修改输出的内容。具体的实例操作如下:

[linux@bashcommandnotfound.cn ~]$ ip6tables-save | grep ACCEPT
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

实例10:将ip6tables表的内容替换后输出

使用ip6tables-save命令不带任何参数,可以将ip6tables表的内容输出到标准输出中。如果想要对输出的内容进行替换,可以使用管道符(|)将ip6tables-save的输出重定向到其他命令,如sed、awk等。这样可以方便地修改输出的内容。具体的实例操作如下:

[linux@bashcommandnotfound.cn ~]$ ip6tables-save | sed 's/ACCEPT/DROP/g'
# Generated by ip6tables-save v1.8.7 on Tue Dec 26 15:03:14 2023
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
...

实例11:将ip6tables表的内容包含计数器的值输出

使用ip6tables-save命令带上-c参数,可以将ip6tables表的内容包含当前的数据包和字节计数器的值输出到标准输出中。这样可以方便地查看或分析每条规则的匹配情况。输出的格式与实例1相同,只是每个链和规则后面会有计数器的值。具体的实例操作如下:

[linux@bashcommandnotfound.cn ~]$ ip6tables-save -c
# Generated by ip6tables-save v1.8.7 on Tue Dec 26 15:03:14 2023
*filter
:INPUT ACCEPT [100:2000]
:FORWARD ACCEPT [200:4000]
:OUTPUT ACCEPT [300:6000]
-A INPUT -i lo -j ACCEPT [50:1000]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT [40:800]
-A INPUT -p icmpv6 -j ACCEPT [10:200]
...
# Completed on Tue Dec 26 15:03:14 2023

实例12:将ip6tables表的内容包含计数器的值保存到文件中

使用ip6tables-save命令带上-c和-f filename参数,可以将ip6tables表的内容包含当前的数据包和字节计数器的值保存到指定的文件中,而不是输出到标准输出。这样可以方便地备份或恢复ip6tables表的配置,并保留计数器的值。具体的实例操作如下:

[linux@bashcommandnotfound.cn ~]$ ip6tables-save -c -f ip6tables.bak
[linux@bashcommandnotfound.cn ~]$ ls -l ip6tables.bak
-rw-r--r--. 1 root root 2000 Dec 26 15:03 ip6tables.bak

实例13:将ip6tables表的内容恢复到ip6tables中

使用ip6tables-save命令不带任何参数,可以将ip6tables表的内容输出到标准输出中。如果想要将输出的内容恢复到ip6tables中,可以使用ip6tables-restore命令将ip6tables-save的输出作为输入。这样可以方便地恢复ip6tables表的配置。具体的实例操作如下:

[linux@bashcommandnotfound.cn ~]$ ip6tables-save | ip6tables-restore
[linux@bashcommandnotfound.cn ~]$ ip6tables -L -n -v
Chain INPUT (policy ACCEPT 100 packets, 2000 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  50  1000 ACCEPT     all      lo     *       ::/0                 ::/0              
   ...
  250  5000 ACCEPT     all      *      *       ::/0                 ::/0                 state NEW,RELATED,ESTABLISHED

实例14:将ip6tables表的内容恢复到ip6tables中并保留计数器的值

使用ip6tables-save命令带上-c参数,可以将ip6tables表的内容包含当前的数据包和字节计数器的值输出到标准输出中。如果想要将输出的内容恢复到ip6tables中并保留计数器的值,可以使用ip6tables-restore命令带上-c参数将ip6tables-save的输出作为输入。这样可以方便地恢复ip6tables表的配置,并保留计数器的值。具体的实例操作如下:

[linux@bashcommandnotfound.cn ~]$ ip6tables-save -c | ip6tables-restore -c
[linux@bashcommandnotfound.cn ~]$ ip6tables -L -n -v
Chain INPUT (policy ACCEPT 100 packets, 2000 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   50  1000 ACCEPT     all      lo     *       ::/0                 ::/0               
   ...

Linux ip6tables-save命令的注意事项

  • ip6tables-save命令需要root权限或者sudo权限才能执行,否则会报错ip6tables-save v1.8.7: can't initialize ip6tables table filter': Permission denied (you must be root)`
  • ip6tables-save命令只能保存当前的ip6tables表的内容,如果重启系统或者清空ip6tables表,保存的内容会失效。如果想要永久保存ip6tables表的配置,可以使用iptables-persistent或者netfilter-persistent等工具。
  • ip6tables-save命令只能保存IPv6的包过滤规则,如果想要保存IPv4的包过滤规则,可以使用iptables-save命令。
  • 如果执行ip6tables-save命令时提示bash: ip6tables-save: command not found,说明没有安装ip6tables,可以参考上文的安装方法。

Linux ip6tables-save相关命令

0

评论区