ip6tables命令iptables一样,都是linux中防火墙软件,不同的是ip6tables采用的TCP/ip协议为IPv6。

语法

ip6tables(选项)

选项

-t<表>:指定要操纵的表;
-A:向规则链中添加条目;
-D:从规则链中删除条目;
-i:向规则链中插入条目;
-R:替换规则链中的条目;
-L:显示规则链中已有的条目;
-F:清楚规则链中已有的条目;
-Z:清空规则链中的数据包计算器和字节计数器;
-N:创建新的用户自定义规则链;
-P:定义规则链中的默认目标;
-h:显示帮助信息;
-p:指定要匹配的数据包协议类型;
-s:指定要匹配的数据包源ip地址;
-j<目标>:指定要跳转的目标;
-i<网络接口>:指定数据包进入本机的网络接口;
-o<网络接口>:指定数据包要离开本机所使用的网络接口。
-c<计数器>:在执行插入操作(insert),追加操作(append),替换操作(replace)时初始化包计数器和字节计数器。

实例

在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:

ip6tables -nl --line-numbers

/etc/sysconfig/ip6tables文件

使用编辑器编辑/etc/sysconfig/ip6tables文件:

vi /etc/sysconfig/ip6tables

可能会看到下面的默认 ip6tables 规则:

*filter
:INPUT accept [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -j reject --reject-with icmp6-adm-prohibited
COMMIT

与 IPv4 的 iptables 规则类似,但又不完全相同。

要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前添加如下规则:

-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT

-p tcp表示仅针对 tcp 协议的通信。--dport指定端口号。

要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:

-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT

同时针对 tcp 和 udp 协议开启 53 端口。

要开启 443 端口,在 COMMIT 一行之前添加如下规则:

-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT

要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:

-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT

对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
COMMIT

改为:

-A RH-Firewall-1-INPUT -j LOG
-A RH-Firewall-1-INPUT -j DROP
COMMIT

保存并关闭该文件。然后重新启动 ip6tables 防火墙:

# service ip6tables restart

然后重新查看 ip6tables 规则,可以看到如下所示的输出:

# ip6tables -vnL --line-numbers

输出示例:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 42237 3243K RH-Firewall-1-INPUT all * * ::/0 ::/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 RH-Firewall-1-INPUT all * * ::/0 ::/0
Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)
num pkts bytes target prot opt in out source destination
Chain RH-Firewall-1-INPUT (2 references)
num pkts bytes target prot opt in out source destination
1 6 656 ACCEPT all lo * ::/0 ::/0
2 37519 2730K ACCEPT icmpv6 * * ::/0 ::/0
3 0 0 ACCEPT esp * * ::/0 ::/0
4 0 0 ACCEPT ah * * ::/0 ::/0
5 413 48385 ACCEPT udp * * ::/0 ff02::fb/128 udp dpt:5353
6 0 0 ACCEPT udp * * ::/0 ::/0 udp dpt:631
7 0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:631
8 173 79521 ACCEPT udp * * ::/0 ::/0 udp dpts:32768:61000
9 0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpts:32768:61000 flags:!0x16/0x02
10 0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:22
11 0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:80
12 0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:53
13 4108 380K ACCEPT udp * * ::/0 ::/0 udp dpt:53
14 18 4196 REJECT all * * ::/0 ::/0

IPv6 私有 IP

IPv4 通常默认即可保护内部局域网私有 IP 上的主机。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。

允许特定的 ICMPv6 通信

使用 IPv6 的时候需要允许比 IPv4 更多类型的 ICMP 通信以保证路由和 IP 地址自动配置等功能正常工作。有时候,如果你的规则设置太过苛刻,可能都无法分配到正确的 IPv6 地址。当然,不使用 DHCP 而是手动配置 IP 地址的除外。

下面是一些比较常见的 ipv6-icmp 配置实例:

:ICMPv6 - [0:0]
# Approve certain ICMPv6 types and all outgoing ICMPv6
# http://forum.linode.com/viewtopic.php?p=39840#39840
-A INPUT -p icmpv6 -j ICMPv6
-A ICMPv6 -p icmpv6 --icmpv6-type echo-request -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type time-exceeded -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type router-solicitation -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type router-advertisement -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type neighbour-solicitation -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type neighbour-advertisement -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type redirect -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type 141 -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type 142 -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type 148 -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type 149 -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type 130 -s fe80::/10 -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type 131 -s fe80::/10 -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type 132 -s fe80::/10 -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type 143 -s fe80::/10 -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type 151 -s fe80::/10 -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type 152 -s fe80::/10 -j ACCEPT
-A ICMPv6 -p icmpv6 --icmpv6-type 153 -s fe80::/10 -j ACCEPT
-A ICMPv6 -j RETURN
-A OUTPUT -p icmpv6 -j ACCEPT http://man.linuxde.net/ip6tables

ip6tables命令的更多相关文章

  1. /etc/sysconfig/目录详解

    /etc/sysconfig/目录包括了在红帽企业LINUX下各种系统配置文件,以下是在/etc/sysconfig/目录下的文件列表如图: 500)this.width=500;"> ...

  2. linux 下配置文件目录/etc/sysconfig

    /etc/sysconfig/目录详解 2010-06-19 11:12 6693人阅读 评论(1) 收藏 举报 桌面环境debugging防火墙serviceunix语言 /etc/sysconfi ...

  3. CentOS 7防火墙服务FirewallD指南

    CentOS 7防火墙服务FirewallD指南 作者:chszs,未经博主同意不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 防火墙是一种位于内部网 ...

  4. Linux学习之chkconfig命令

    chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:chkconfig [--ad ...

  5. 【Android】-- adb shell 命令探索

    ADB是什么,做android开发的没有不知道的. window下执行cmd,输入adb help就会打印adb都可以做的事情,包含 adb push ..adb pull .. adb device ...

  6. 【APP测试初体验】android测试命令----adb常用命令

    --adb shell 命令adb devices 查看设备adb shell adb shell "ls -al /system/bin" >e:\a.txtsample_ ...

  7. linux开机自启动服务优化设置命令

    1.设置成英文字符,避免出现乱码[root@xuegod62 ~]# LANG=en2.两种配置linux开机自启动服务命令:1)[root@xuegod62 ~]# ntsysv2)[root@xu ...

  8. 6个Linux chkconfig命令实例 - 增加,删除,查看和修改services的自动启动选项

    注意:service的安装目录在/etc/rc.d/init.d下,/etc/init.d 是/etc/rc.d/init.d的链接. chkconfig命令用来安装,查看或修改 services随系 ...

  9. Linux CentOS开机启动项设置命令:chkconfig

    1.开机启动+++crontab 定时执行(定时执行可参考:https://www.cnblogs.com/prefectjava/p/9399552.html)可实现自动化运行的目的,简化了维护人员 ...

随机推荐

  1. webstorm编写react native,代码修改后,重新编译运行没有变化的问题

    w我是拷贝一份react native代码到另一台电脑,发现修改代码运行之后不显示修改后的效果,即仍然与原来的效果一样,暂时不知道什么原因, 后来我运行了npm install 就可以了,不知道是不是 ...

  2. cookie和session以及iOS cookie的查取

    Cookie的工作原理 http是无状态的,这是什么意思呢?就是说,在没有cookie之前,你第一次访问这个页面和第二次访问这个页面, 服务器是不知道的,不知道前一次是你.那么问题来了,我怎么登录,登 ...

  3. Python中@staticmethod和@classmethod的作用和区别

    简单介绍一下两者的区别: 对于一般的函数test(x),它跟类和类的实例没有任何关系,直接调用test(x)即可 #!/usr/bin/python # -*- coding:utf-8 -*- de ...

  4. MVC-Application

    Application简述(不如Cache) 在asp.net环境下,Application对象来自HttpApplictionStat类.它可以在多个请求.连接之间共享公用信息,也可以在各个请求连接 ...

  5. C++——引用 reference

    转载请注明出处:https://www.cnblogs.com/kelamoyujuzhen/p/9427555.html pass by value vs. pass by reference (t ...

  6. 团队高效率协作开发的秘密武器-APIDOC

    团队高效率协作开发的秘密武器 1.前言 在团队协作开发中,不知道各位有没有遇到这样的问题: l 新人接手了项目代码,因没有项目文档,只能靠追踪路由,寻读代码分析业务逻辑 l 前端同学写好了页面,苦等后 ...

  7. Django drf: 跨域机制

    一.同源策略 二.CORS(跨域资源共享)简介 三.CORS基本流程 四.CORS两种请求流程 五.Django项目中支持CORS 一.同源策略 同源策略是一种约定,它是浏览器最核心的最基本的安全功能 ...

  8. springboot 配置 中查找application.properties中对应的数据,添加对应的prefix前缀

    @ConditionalOnProperty(prefix = "spring.redis", name = "enabled", havingValue = ...

  9. Java枚举的小例子

    有一次工作中,要根据多个参数确定一个值(车辆事件),确定一个值需要的参数大部分的属性名称是相同的,少部分是独有的,但是参数的值几乎都是不同的: 因为参数太多,if-else写起来就太不优雅了,可以参考 ...

  10. MyBatis3-topic04,05 -接口式编程

    笔记要点 /**接口式编程: * 1. 原生: Dao 接口-->Dao接口的实现类 * mybatis: Mapper --> 有一个与之对应的 XXMapper.xml * 2. Sq ...