IP6tables使用方法

更新时间:2024-04-24 06:21:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

IP6tables使用方法 (man手册)

名称

ip6tables – Ipv6包过滤管理

摘要

ip6tables [-t table] –[AD] chain rule-specification [options] ip6tables [-t table] –I chain [rulenum] rule-specification [options] ip6tables [-t table] –R chain rulenum rule-specification [options] ip6tables [-t table] –D chain rulenum [options] ip6tables [-t table] –[LFZ] [chain] [options] ip6tables [-t table] –N chain ip6tables [-t table] –X [chain]

ip6tables [-t table] –P chain target [options]

ip6tables [-t table] –E old-chain-name new-chain-name

描述

ip6tables通常是用来建立、维护、检查linux内核IPv6包过滤表的。可能定义了几个不同的表。每个表都包含了一些内置的链和用户定义的链。

每个链都是匹配一组包的规则的列表。每个规则都说明了如何匹配一个包。这是一个target的调用,这个target在相同的表中或许会跳转到用户定义的链。

目的

防火墙规则说明了包的规则和目标。如果一个包没有匹配,用链中的下一个规则检查;如果不匹配,下一个规则用target的值说明,target的值可能命名了一条用户定义的链,或者指定了ACCEPT、DROP、QUEUE或RETURN值中的一个。

ACCEPT意思是让包通过,DROP的意思是在底层把包丢弃。QUEUE的意思是把传送到用户空间。RETURN的意思是停止正在遍历的链,返回先前链的下一个规则。如果到达内置链的最后或者匹配上了带RETURN值的target内置链的规则,被链策略指定的target决定了包的命运。

目前有两个独立的用于nat的表没有实现。

-t,--table 表名

该选项指出包匹配的表名,该表就是命令操作的那个表。如果内核被配置为自动加载模块,如果这个表不存在,内核就要加载对应于这个表的模块。有如下表: filter:如果没有-t 选项,该表是默认的表。它包含了内置的链INPUT(用于进入防火墙的包)、FORWARD(用于经防火墙转发的包)和OUTPUT(防火墙本地生成的包)

mangle:这个表专门用于包的变化。包含了五个表,INPUT(用于进入防火墙的包)、PREROUTING(用于进入防火墙路由之前变化的包)、OUTPUT(用于本地生成的路由之前变更的包)、FORWARD(用于通过防火墙路由的变更的包)、POSTROUTING(用于差不多要发送出去的变更的包)

raw:该表主要用于配置了NOTRACK的target的免于连接跟踪的情况。在调用nf_conntrack之前以最高优先级注册到netfilter的hooks点上。提供了两个内置的链PREROUTING(用于经过一些网络接口到达的包)和OUTPUT(用于本地进程生成的包)

选项

ip6tables的选项分为以下几个组:

命令组

这个选项指定了要执行的明确的动作。在命令行中只能指定一个,除非有其他规定。 -A,--append chain rule-specification

在选中的链后增加一条或多条规则。当源和/或目的代表了不止一个地址,规 则要增加到每一个可能的地址上。 -D,--delete chain rule-specification -D,--delete chain rulenum 从选中的链中删除一条或多条规则。有两个版本命令可用:可以指定在链中规

则的号码,也可以指定匹配的规则。 -I,--insert

在选中的链中按照给出的规则号码插入一条或多条规则。如果没有规则号码指

定,默认值为1。插入到链的头部。 -R,--replace chain rulenum rule-specification 在指定的链中替换一条规则。如果源和/或目的代表了多个地址,命令失败。

规则号码从1开始。 -L,--list [chain]

列出所有指定链的规则,如果没有指定链,列出所有链的规则。像其他的每一

个命令一样,必须指定应用的表(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 建立一个用户定义的新链,名称不能是target指定的。 -X,--delete-chain [chain]

删除指定的用户定义的链。这个链不能被使用,如果在使用,现删除上面的规

则。如果没有指定参数,删除表中所有非内置链。 -P,--policy chain target 为给定target的链设置策略。target的设置参见“目标”一节。只有内置的链

可以有策略,所有链的都可以有target策略。 -E,--rename-chain old-chain new-chain 改变用户指定链的名称,对表的结构没有影响。 -h 帮助

参数组

下面的参数是建立规则的说明。 -p,--protocol [! ] protocol

规则或包检查的协议。指定的协议可以是tcp,upd,icmpv6,esp中的一个或

全部。也可以是数值,代表这些协议中的某一个。也可以使用/etc/protocols中 的协议名。除了esp外ipv6的扩展头是不允许使用的。在协议名前的“!”表 示相反的规则。数字0相当于所有协议all。协议all会匹配所有的协议,而且 这是缺省的选项。 -s,--source [ ! ] address[/mask] 指定源地址。地址可以是主机名,一个带掩码的ipv6网络地址,或者一个ipv6

地址。掩码可以是网络掩码,也可以是一个数字。地址前面的“!”说明指定 地址相反的情况。--src是这个选项的别名。 -d,--destination [! ] address[/mask] 指定目的地址。语法同上。--dst是这个选项的别名。 -j,--jump target 指定规则的目标。就是如果包匹配了下一步做什么。目标可以是用户自定义的

链(不是这条规则所在的),立即决定包命运的特别内置目标之一,或者一个 扩展(参见下面的EXTENSIONS)。如果规则的这个选项省略,那么匹配的过 程不会对包的命运产生影响,不过规则的计数器会增加。 -i,--in-interface [! ] name 包被接收时经过的接口名称(仅用于包进入INPUT、FORWARD、

PREROUTING链)。接口名称前有“!”时,情况相反。如果接口名称以“+” 结束,任何以该名称开始的接口都匹配。如果该项省略,匹配任何名称接口。 -o,--out-interface [!] name

包发送时经过的接口名称(用于FORWARD、OUTPUT链)。接口名称前有“!”

时,情况相反。如果接口名称以“+”结束,任何以该名称开始的接口都匹配。 如果该项省略,匹配任何名称接口。 -c,--set-counters PKTS BYTES

初始化规则中包和字节的计数器。(在INSERT、APPEND、REPLACE操作时)

其他选项

-v,--verbose

详细输出。这个选项可以让list命令显示接口名称,规则选项(如果有),和

TOS掩码。包和字节计数器也被显示,分别用数字和K、M、G(后缀)表示 1000、1,000,000、1,000,000,000的倍数(-x标志可以改变)。对于添加、插入、 删除、替换命令,能够使一个或多个规则的详细信息打印出来。 -n,--numeric

数字输出。IP地址和端口号以数字形式显示。默认情况下,程序将以主机名

称,网络名称,或者服务(只要合适)显示。 -x,--exact

扩展数字。显示包和字节计数器的精确值,代替用K、M、G显示的约数。这

个选项只能用于-L命令 --line-numbers

当显示规则时,给每个规则前加上编号。这个编号与规则在链中的的位置一致。 --modprobe=command

在链表中添加和插入规则时,用“command”加载所需的模块(目标、匹配扩

展等)。

匹配扩展

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中的布尔值。

dst

该模块匹配目的地址选项包头参数 --dst-len [!] length

以字节为单位的包头的总长度 --dst-opts type[:length][,type[:length]…] 以字节为单位的选项类型号和选项数据长度

esp

该模块匹配IPSec包的ESP包头的SPIs --espspi [!] spi[:spi] eui64

该模块匹配IPv6地址无状态自动分配的EUI-64部分。它比较来源于以太网帧中 IPv6源地址的低64位的源mac地址的EUI-64。但是“全球/本地”位不比较。该 模块不能匹配其他链路的帧,并且只在PREROUTING、INPUT和FORWARD链 中应用。

frag

该模块匹配分片包头参数 --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

以字节为单位的包头的总长度 --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-icmp -h

ipv6header

该模块匹配Ipv6扩展包头和/或上层协议包头 --header [!] header[, header ...]

并不是所有指定的包头的包都匹配。封装了ESP扩展包头的包就不在其中。

header参数可以是Hop-by-Hop、dst、route、frag、auth、esp、none,或者上 层协议的包头。/etc/protocol文件中的协议名字也可以,也允许数值。255相 当于上层协议包头。 [--soft]

使用参--header指定的所有包头中至少有一个匹配

length

该模块匹配以字节为单位的Ipv6净载荷的长度,或者长度范围。ipv6包头本身不 包括。

--length [!] length[:length] limit

该模块匹配使用令牌桶过滤的一个限制速率。使用这个扩展模块的规则直到速率达 到限制的速率才匹配。可以和LOG目标一起使用, --limit rate

匹配最大的平均速率。 --limit-burst number

匹配最大的初始包数。在没有到达限制时,可以改变限制数。默认为5

mac

--mac-source [!] address

匹配源mac地址。(IPv6是否能用?)只用在PREROUTING、FORWARD和

INPUT链上。

mark

该模块匹配与包有联系的netfilter mark字段(能用下面MARK target设置的包) --mark 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 是该选项方便的别名。 --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情况下pid 和sid不成立

physdev

该模块匹配被桥设备使用的输入和输出的端口。 --physdev-in [!] name 桥端口的名称,经过给端口接收包。(只用于INPUT、FORWARD、

PREROUTING链)。如果接口名称以“+”结束,任何以该名称开头的接口都 匹配

--physdev-out [!] name 桥端口的名称,经过给端口发送包。(只用于OUTPUT、FORWARD、

PPSTROUTING链)。如果接口名称以“+”结束,任何以该名称开头的接口 都匹配 [!] --physdev-is-in

如果进入的包通过桥接口匹配 [!] --physdev-is-out

如果离开的包通过桥接口匹配 [!] --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 匹配封装协议 --mode tunnel|transport 匹配封装模式 --tunnel-src addr[/mask] 匹配一个隧道模式源端点地址。只用在--mode tunnel --tunnel-dst addr[/mask]

匹配一个隧道模式目的端点地址。只用在--mode tunnel --next

从指定策略的下一个开始。只用于--strict

random

该模块随机匹配所有包的某个百分比。

--average percent 匹配指定的百分比。如果省略,默认设置为50%

rt

匹配IPv6路由包头 --rt-type [!] type 匹配类型(号码) --rt-segsleft [!] num[:num] (省略) --rt-len [!] length 匹配包头长度 --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 [!] 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] 指定了源端口或端口范围。细节部分描述同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包头的选项 --log-ip-option

记录来自于Ipv6包头的选项 --log-uid

记录产生包的进程的用户ID

MARK

设置包的netfilter mark值。只用于mangle表。 --set-mark mark

NFQUEUE

该目标作为QUEUE目标的扩展。作为QUEUE的相反项,允许把包放入任意指定 的队列,该队列被16位队列号标示。 --queue-num value 指定使用的队列号。队列号从0到65535,默认是0

REJECT

用来对匹配的包发送一个错误包响应。否则等同于DROP。该目标只能用于INPUT、 FORWARD和OUTPUT链 --reject-with type type可以为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

本文来源:https://www.bwwdw.com/article/norp.html

Top