1、IP6tables 使用方法(man 手册)名称ip6tables Ipv6 包过滤管理摘要ip6tables -t table AD chain rule-specification optionsip6tables -t table I chain rulenum rule-specification optionsip6tables -t table R chain rulenum rule-specification optionsip6tables -t table D chain rulenum optionsip6tables -t table LFZ chain options
2、ip6tables -t table N chain ip6tables -t table X chain ip6tables -t table P chain target optionsip6tables -t table E old-chain-name new-chain-name描述ip6tables 通常是用来建立、维护、检查 linux 内核 IPv6 包过滤表的。可能定义了几个不同的表。每个表都包含了一些内置的链和用户定义的链。每个链都是匹配一组包的规则的列表。每个规则都说明了如何匹配一个包。这是一个 target 的调用,这个 target 在相同的表中或许会跳转到用户定义的
3、链。目的防火墙规则说明了包的规则和目标。如果一个包没有匹配,用链中的下一个规则检查;如果不匹配,下一个规则用 target 的值说明,target 的值可能命名了一条用户定义的链,或者指定了 ACCEPT、DROP、QUEUE 或 RETURN 值中的一个。ACCEPT 意思是让包通过,DROP 的意思是在底层把包丢弃。QUEUE 的意思是把传送到用户空间。RETURN 的意思是停止正在遍历的链,返回先前链的下一个规则。如果到达内置链的最后或者匹配上了带 RETURN 值的 target 内置链的规则,被链策略指定的 target 决定了包的命运。表目前有两个独立的用于 nat 的表没有实现。
4、-t,-table 表名该选项指出包匹配的表名,该表就是命令操作的那个表。如果内核被配置为自动加载模块,如果这个表不存在,内核就要加载对应于这个表的模块。有如下表:filter: 如果没有 -t 选项,该表是默认的表。它包含了内置的链 INPUT(用于进入防火墙的包) 、FORWARD (用于经防火墙转发的包)和 OUTPUT(防火墙本地生成的包)mangle:这个表专门用于包的变化。包含了五个表,INPUT (用于进入防火墙的包) 、PREROUTING(用于进入防火墙路由之前变化的包) 、OUTPUT (用于本地生成的路由之前变更的包) 、FORWARD(用于通过防火墙路由的变更的包) 、
5、POSTROUTING(用于差不多要发送出去的变更的包)raw:该表主要用于配置了 NOTRACK 的 target 的免于连接跟踪的情况。在调用nf_conntrack 之前以最高优先级注册到 netfilter 的 hooks 点上。提供了两个内置的链PREROUTING(用于经过一些网络接口到达的包)和 OUTPUT(用于本地进程生成的包)选项ip6tables 的选项分为以下几个组:命令组这个选项指定了要执行的明确的动作。在命令行中只能指定一个,除非有其他规定。-A,-append chain rule-specification在选中的链后增加一条或多条规则。当源和/或目的代表了不止
6、一个地址,规则要增加到每一个可能的地址上。-D,-delete chain rule-specification-D,-delete chain rulenum从选中的链中删除一条或多条规则。有两个版本命令可用:可以指定在链中规则的号码,也可以指定匹配的规则。-I,-insert在选中的链中按照给出的规则号码插入一条或多条规则。如果没有规则号码指定,默认值为 1。插入到链的头部。-R,-replace chain rulenum rule-specification在指定的链中替换一条规则。如果源和/或目的代表了多个地址,命令失败。规则号码从 1 开始。-L,-list chain 列出所有指
7、定链的规则,如果没有指定链,列出所有链的规则。像其他的每一个命令一样,必须指定应用的表(filter 是默认的) ,因此 mangle 表的规则通过命令 ip6tables t mangle n L 来显示。-n 选项避免长反向 DNS 查找。-Z选项将列出的规则值自动清零。如果要查看详细的输出,用 ip6tables L -v-F,-flush chain刷新指定的链(如果没有指定链,刷新这个表的所有链) 。相当于删除链的所有规则-Z,-zero chain将链中的包数和字节数清零。通常和-L,-list 一起使用。-N,-new-chain chain建立一个用户定义的新链,名称不能是 t
8、arget 指定的。-X,-delete-chain chain删除指定的用户定义的链。这个链不能被使用,如果在使用,现删除上面的规则。如果没有指定参数,删除表中所有非内置链。-P,-policy chain target为给定 target 的链设置策略。 target 的设置参见“目标 ”一节。只有内置的链可以有策略,所有链的都可以有 target 策略。-E,-rename-chain old-chain new-chain改变用户指定链的名称,对表的结构没有影响。-h 帮助参数组下面的参数是建立规则的说明。-p,-protocol ! protocol规则或包检查的协议。指定的协议可以
9、是 tcp,upd,icmpv6,esp 中的一个或全部。也可以是数值,代表这些协议中的某一个。也可以使用/etc/protocols中的协议名。除了 esp 外 ipv6 的扩展头是不允许使用的。在协议名前的“!”表示相反的规则。数字 0 相当于所有协议 all。协议 all 会匹配所有的协议,而且这是缺省的选项。-s,-source ! address/mask指定源地址。地址可以是主机名,一个带掩码的 ipv6 网络地址,或者一个ipv6地址。掩码可以是网络掩码,也可以是一个数字。地址前面的“!”说明指定地址相反的情况。-src 是这个选项的别名。-d,-destination ! ad
10、dress/mask指定目的地址。语法同上。-dst 是这个选项的别名。-j,-jump target指定规则的目标。就是如果包匹配了下一步做什么。目标可以是用户自定义的链(不是这条规则所在的) ,立即决定包命运的特别内置目标之一,或者一个扩展(参见下面的 EXTENSIONS) 。如果规则的这个选项省略,那么匹配的过程不会对包的命运产生影响,不过规则的计数器会增加。-i,-in-interface ! name包被接收时经过的接口名称(仅用于包进入 INPUT、 FORWARD、PREROUTING 链) 。接口名称前有“!”时,情况相反。如果接口名称以“+”结束,任何以该名称开始的接口都匹
11、配。如果该项省略,匹配任何名称接口。-o,-out-interface ! name包发送时经过的接口名称(用于 FORWARD、OUTPUT 链) 。接口名称前有“!”时,情况相反。如果接口名称以“+”结束,任何以该名称开始的接口都匹配。如果该项省略,匹配任何名称接口。-c,-set-counters PKTS BYTES初始化规则中包和字节的计数器。 (在 INSERT、APPEND、REPLACE 操作时)其他选项-v,-verbose详细输出。这个选项可以让 list 命令显示接口名称,规则选项(如果有) ,和TOS 掩码。包和字节计数器也被显示,分别用数字和 K、M、G(后缀)表示1
12、000、1,000,000、1,000,000,000 的倍数(-x 标志可以改变) 。对于添加、插入、删除、替换命令,能够使一个或多个规则的详细信息打印出来。-n,-numeric数字输出。IP 地址和端口号以数字形式显示。默认情况下,程序将以主机名称,网络名称,或者服务(只要合适)显示。-x,-exact扩展数字。显示包和字节计数器的精确值,代替用 K、M、G 显示的约数。这个选项只能用于-L 命令-line-numbers当显示规则时,给每个规则前加上编号。这个编号与规则在链中的的位置一致。-modprobe=command在链表中添加和插入规则时,用“command”加载所需的模块(目
13、标、匹配扩展等) 。匹配扩展ip6tables 能够使用与模块匹配的扩展包。有两种加载方式:用-p 或-protocol 指定,或者用-m 或-match 选项,后跟匹配的模块名称。然后,相对于指定模块的各种扩展的命令行选项可以使用。在一行中可以指定多个匹配的扩展模块。ah这个模块匹配 IPSec 包的认证包头参数。-ahspi i spi:spi匹配 SPI-ahlen i length以字节为单位的包头的总长度-ahres如果保留位字段都是 0,匹配condition-condition ! filename匹配存储在文件/proc/net/ip6t_condition/filename
14、中的布尔值。dst该模块匹配目的地址选项包头参数-dst-len ! length以字节为单位的包头的总长度-dst-opts type:length,type:length以字节为单位的选项类型号和选项数据长度esp该模块匹配 IPSec 包的 ESP 包头的 SPIs-espspi ! spi:spieui64该模块匹配 IPv6 地址无状态自动分配的 EUI-64 部分。它比较来源于以太网帧中IPv6 源地址的低 64 位的源 mac 地址的 EUI-64。但是“全球/本地”位不比较。该模块不能匹配其他链路的帧,并且只在 PREROUTING、INPUT 和 FORWARD 链中应用。f
15、rag该模块匹配分片包头参数-fragid i id:id匹配给定的标识符或者其范围-fraglen i length该选项不能用在 2.6.10 或之后版本-fragres如果保留位字段都是 0,匹配-fragfirst 匹配第一个分片-fragmore如果有更多的分片,匹配-fraglast如果是最后一个分片,匹配fuzzy该模块匹配在一个模糊逻辑控制基础上的速率限制-lower-limit number指定一个最低限制(每秒包数)-upper-limit number指定一个最高限制(每秒包数)hbh该模块匹配 Hop-by-Hop 选项头参数-hbh-len ! length以字节为单
16、位的包头的总长度-hbh-opts type:length, type:length以字节为单位的选项类型的号码和选项数据的长度hl该模块匹配 IPv6 包头的下一跳字段-hl-eq ! value如果下一跳限制等于 value 值,匹配-hl-lq ! value如果下一跳限制小于 value 值,匹配-hl-gq ! value如果下一跳限制大于 value 值,匹配icmpv6-icmpv6-type ! type/code typename所允许的 ICMPv6 类型的说明,ICMPv6 类型的号码,类型和编码,或者其中之一的类型名称。通过下面命令显示:ip6tables p ipv6
17、-icmp -hipv6header该模块匹配 Ipv6 扩展包头和 /或上层协议包头-header ! header, header .并不是所有指定的包头的包都匹配。封装了 ESP 扩展包头的包就不在其中。header 参数可以是 Hop-by-Hop、dst、route、frag 、auth、 esp、none,或者上层协议的包头。/etc/protocol 文件中的协议名字也可以,也允许数值。255 相当于上层协议包头。-soft使用参-header 指定的所有包头中至少有一个匹配length该模块匹配以字节为单位的 Ipv6 净载荷的长度,或者长度范围。ipv6 包头本身不包括。-l
18、ength ! length:lengthlimit该模块匹配使用令牌桶过滤的一个限制速率。使用这个扩展模块的规则直到速率达到限制的速率才匹配。可以和 LOG 目标一起使用,-limit rate匹配最大的平均速率。-limit-burst number匹配最大的初始包数。在没有到达限制时,可以改变限制数。默认为 5mac-mac-source ! address匹配源 mac 地址。 (IPv6 是否能用?)只用在 PREROUTING、FORWARD和INPUT 链上。mark该模块匹配与包有联系的 netfilter mark 字段(能用下面 MARK target 设置的包)-mark
19、 value/mask用指定的无符号 mark 值匹配包(如果指定了 mask,在比较前用 mask 进行逻辑与)multiport该模块匹配一组源或目的端口。总共可以指定 15 个。一个端口范围(port: port)算两个,但是范围现在不支持。只能使用在-p tcp 和-p udp 一起时。-source-ports ! port, port,port:port .如果源端口是指定的端口之一,匹配成功。 -sports 是该选项方便的别名。-destination-ports ! port, port,port:port .如果目的端口是指定的端口之一,匹配成功。 -dports 是该选项
20、方便的别名。-ports ! port, port,port:port .如果源端口和目的端口是指定的端口之一,匹配成功。nth(省略) owner该模块匹配本地产生的包的各种特征。只应用于 OUTPUT 链,甚至一些没有owen的包(ICMPv6 ping 的响应包) ,因此永远无法匹配。-uid-owner uerid如果给定用户 ID 进程产生的包匹配。-gid-owner groupid如果给定组 ID 的进程产生的包匹配-pid-owner processed如果给定进程号的进程产生的包匹配-sid-owner sessionid如果给定的会话组进程产生的包匹配注意:如果在 SMP
21、情况下 pid 和 sid 不成立physdev该模块匹配被桥设备使用的输入和输出的端口。-physdev-in ! name桥端口的名称,经过给端口接收包。 (只用于 INPUT、FORWARD、PREROUTING 链) 。如果接口名称以“+”结束,任何以该名称开头的接口都匹配-physdev-out ! name桥端口的名称,经过给端口发送包。 (只用于 OUTPUT、FORWARD、PPSTROUTING 链) 。如果接口名称以“+”结束,任何以该名称开头的接口都匹配! -physdev-is-in 如果进入的包通过桥接口匹配! -physdev-is-out如果离开的包通过桥接口匹配
22、! -physdev-is-bridged如果包是桥接的而不是路由的匹配。只用于 FORWARD 和 POSTROUTING链。policy该模块匹配 IPSec 处理包的策略。-dir in|out选择是匹配解封策略,还是封装策略。in 用于 PREROUTING、INPUT 和FORWARD 链。 out 用于 POSTROUTING、OUTPUT 和 FORWARD 链-pol none|ipsec如果这个包被 IPSec 处理匹配 -strict选项是否匹配精确测量,或者给出的策略的任意规则。-spi spi匹配 SA 的 SPI-proto ah|esp|ipcomp匹配封装协议-m
23、ode tunnel|transport匹配封装模式-tunnel-src addr/mask匹配一个隧道模式源端点地址。只用在-mode tunnel-tunnel-dst addr/mask匹配一个隧道模式目的端点地址。只用在-mode tunnel-next从指定策略的下一个开始。只用于-strictrandom该模块随机匹配所有包的某个百分比。-average percent匹配指定的百分比。如果省略,默认设置为 50%rt匹配 IPv6 路由包头-rt-type ! type匹配类型(号码)-rt-segsleft ! num:num(省略)-rt-len ! length匹配包头长
24、度-rt-0-res匹配保留字段(type=0)-rt-0-address ADDR,ADDR 匹配 type=0 的地址(列表)-rt-0-non-strict列出 type=0 的地址,而非详细显示tcp-source-port ! port:port指定了源端口或端口范围。可以是服务名或者端口数。通过 port:port 指定一个包括一且的范围。第一个端口省略,默认为“0” ,最后一个端口省略,默认为“65535”。 -sport 是这个选项的方便别名-destination-port ! port:port指定了目的端口或端口范围。-dport 是这个选项的方便别名-tcp-flag
25、! mask comp当我们指定了 tcp 标志时匹配。标志中的第一个参数作为应该检测的命令分隔符的列表,第二个参数是必须设置的标志在命令分隔符列表中。标志有:SYN、ACK、FIN 、RST、URG、PSH、ALL、NONE。因此,命令 “ ip6tables A FORWARD -p tcp tcp-flags SYN,ACK, FIN,RST SYN ”只匹配带有 SYN 标志的包。! syn只匹配包中含有 SYN 标志的。前面加“!”情况相反。-tcp-opton ! number如果设置了选项进行匹配udp-source-port ! port:port指定了源端口或端口范围。细节部
26、分描述同 TCP。-destination-port ! port:port指定了目的端口或端口范围。细节部分描述同 TCP。目标扩展HL用来修改 IPv6 包头中的下一跳限制。该目标只用于 mangle 表。-hl-set value设置跳限的值为 value-hl-dec value减少跳限的值-hl-inc value增加跳限的值LOG打开内核中匹配包的日志。-log-level level记录日志的级别-log-prefix prefix给日志加上指定的前缀。总共 29 个字母长。-log-tcp-sequence日志的 tcp 序列号-log-tcp-option记录来自于 tcp
27、包头的选项-log-ip-option记录来自于 Ipv6 包头的选项-log-uid记录产生包的进程的用户 IDMARK设置包的 netfilter mark 值。只用于 mangle 表。-set-mark markNFQUEUE该目标作为 QUEUE 目标的扩展。作为 QUEUE 的相反项,允许把包放入任意指定的队列,该队列被 16 位队列号标示。-queue-num value指定使用的队列号。队列号从 0 到 65535,默认是 0REJECT用来对匹配的包发送一个错误包响应。否则等同于 DROP。该目标只能用于INPUT、FORWARD 和 OUTPUT 链-reject-with
28、 typetype 可以为 icmp6-no-route no-route icmp6-adm-prohibited adm-prohibited icmp6-addr-unreachable addr-unreach icmp6-port-unreachable port-unreach返回合适的 ICMP6 差错报文(默认 port-unreach) 。最后 tcp-reset 可以在匹配TCP 协议中的规则应用。ROUTE只用于 mangle 表-oif ifname通过指定的网络接口名称路由包-gw IPv6_address经过指定的网关路由包-continue象没有终止目标一样,继续遍历规则。-tee备份包,将备份的包路由的目的地。原包象没有终止目标一样,继续遍历规则。TRACE为所有匹配规则的包打开包的跟踪。IP6tables 用法说明:1 规则设置的作用是按照先设置的起作用。2 支持多端口,最多不能超过 15 个。例如:ip6tables A FORWARD p TCP m multiport -dport 21,22,23,24 j DROP