/ipv6/firewall/filter
filter
/ipv6/firewall/filter 的 RouterOS 目录参考。
ipv6/firewall/filter
Type: Directory
| 参数 | 类型 | 描述 |
|---|---|---|
chain * | enum | 指定规则将添加到哪个链。如果输入与已定义链的名称不匹配,则会创建新链。 |
action | enum (accept | jump | return | log | passthrough | add-src-to-address-list | add-dst-to-address-list | drop | reject | fasttrack-connection) { accept:0, jump:1, return:2, log:3, passthrough:4, add-src-to-address-list:5, add-dst-to-address-list:6, drop:10, reject:11, fasttrack-connection:45 } | 数据包被规则匹配时要执行的操作:accept - 接受数据包。数据包不会传递给下一条防火墙规则。add-dst-to-address-list - 将目标地址添加到 address-list 参数指定的地址列表。add-src-to-address-list - 将源地址添加到 address-list 参数指定的地址列表。drop - 丢弃数据包。fasttrack-connection - 对连接进行快速跟踪。jump - 跳转到 jump-target 参数值指定的用户定义链。log - 向系统日志添加一条消息,包含以下数据:in-interface、out-interface、src-mac、protocol、src-ip:port->dst-ip:port 以及数据包长度。数据包匹配后会传递给列表中的下一条规则,类似于 passthrough。passthrough - 如果数据包被规则匹配,则增加计数器并转到下一条规则(用于统计)。reject - 拒绝数据包并发送 ICMP 响应。return - 将控制权返回给发生跳转的链。 |
jump-target | enum () | 要跳转到的目标链名称。仅在 action=jump 时适用。 |
reject-with | enum (icmp-no-route | icmp-admin-prohibited | icmp-not-neighbour | icmp-address-unreachable | icmp-port-unreachable | tcp-reset | icmp-err-src-routing-header | icmp-headers-too-long) { icmp-no-route:0, icmp-admin-prohibited:1, icmp-not-neighbour:2, icmp-address-unreachable:3, icmp-port-unreachable:4, tcp-reset:6, icmp-err-src-routing-header:7, icmp-headers-too-long:8 } | 指定数据包被拒绝时要发回的 ICMP 错误。适用于 action=reject。 - icmp-no-route - 发送 ICMP 地址无路由消息。ICMP 类型 1,代码 0 - icmp-admin-prohibited - 发送 ICMP 地址被禁止消息。ICMP 类型 1,代码 1 - icmp-not-neighbour - 发送 ICMP 地址非成员消息。ICMP 类型 1,代码 2 - icmp-address-unreachable - 发送 ICMP 地址不可达消息。ICMP 类型 1,代码 3 - icmp-port-unreachable - 发送 ICMP 端口不可达消息。ICMP 类型 1,代码 4 - tcp-reset - 发送重置 TCP 连接的 ICMP 消息。ICMP 类型 1,代码 6 - icmp-err-src-routing-header - 发送源路由头中的 ICMP 错误消息。ICMP 类型 1,代码 7 - icmp-headers-too-long - 发送 ICMP 头过长消息。ICMP 类型 1,代码 8 |
connection-nat-state | super { ! , state: ubit (srcnat, dstnat) } | 匹配源 NAT、目标 NAT 或两者兼有的连接。 |
tls-host | super { ! , tls-host: string } | 根据 TLS SNI 主机名匹配 HTTPS 流量。接受 GLOB 语法进行通配符匹配。如果 TLS 握手帧被分片到多个 TCP 段中,匹配器将无法匹配主机名。 |
connection-state | super { ! , state: ubit (invalid, established, related, new, untracked) } | 解释特定数据包的连接跟踪分析数据:established - 属于现有连接的数据包。 invalid - 在连接跟踪中没有确定状态的数据包(通常是严重乱序的数据包、序列号/确认号错误的数据包,或路由器资源过载时的数据包)。无效数据包不会参与 NAT,并且在路由时仍包含原始源 IP 地址。应在防火墙 filter 的 forward 和 input 链中丢弃所有 connection-state=invalid 数据包。 new - 数据包已开始新连接,或者与一个尚未在两个方向上看到数据包的连接相关联。 related - 与现有连接相关但不属于该连接的数据包,例如 ICMP 错误或开始 FTP 数据连接的数据包。 untracked - 在防火墙 RAW 表中被设置为绕过连接跟踪的数据包。 |
connection-limit | super { ! , limit: num , [prefix-len] ,num [0 .. 128] } | 在达到给定值后按地址或地址块匹配连接。应将其与 connection-state=new 和/或 tcp-flags=syn 配合使用,因为该匹配器非常消耗资源。 |
protocol | super { ! , protocol: enum (icmpv6) { icmpv6:58 } } | 匹配由协议名称或编号指定的特定 IP 协议。 |
src-address | super { ! , address: ip6Prefix } | 匹配源地址等于指定 IP 或落在指定 IP 范围内的数据包。 |
dst-address | super { ! , address: ip6Prefix } | 匹配目的地址等于指定 IP 或落在指定 IP 范围内的数据包。 |
src-address-list | super { ! , address-list: enum } | 将数据包的源地址与用户定义的地址列表进行匹配。仅支持一个列表。 |
dst-address-list | super { ! , address-list: enum } | 将数据包的目的地址与用户定义的地址列表进行匹配。仅支持一个列表。 |
address-list | enum () | 要使用的地址列表名称。适用于动作为 add-dst-to-address-list 或 add-src-to-address-list 的情况。 |
address-list-timeout | alt { address-list-timeout: enum (none-dynamic | none-static) { none-dynamic:0, none-static:0xffffffff } , address-list-timeout: time [ .. 21474836] } | 地址通过 add-src-to-address-list 或 add-dst-to-address-list 动作添加到 address-list 后,在列表中保留的时长。指定时间后,规则会添加一个动态条目(D),路由器在时间结束时将其移除;每次规则再次匹配都会将时间重置为完整值。最大值为 35w3d13h13m56s。如果地址已经是列表中的静态条目,则保持静态。 - none-dynamic (0s) - 添加不带超时的动态条目。它不会保存在配置中,重启后会清除。 - none-static - 添加静态条目。它会保存在配置和导出中,并在重启后保留,直到你将其移除。 |
src-address-type | super { ! , type: ubit (unicast, local, anycast, multicast, unreachable) } | 匹配源地址类型:unicast - 用于点对点传输的 IP 地址。 local - 该地址分配给路由器的某个接口。 anycast - 数据包发送到组中最近的节点。 multicast - 数据包转发到定义的设备组。 unreachable - 地址不可达。 |
dst-address-type | super { ! , type: ubit (unicast, local, anycast, multicast, unreachable) } | 匹配目的地址类型:unicast - 用于点对点传输的 IP 地址。 local - 目的地址分配给路由器的某个接口。 anycast - 数据包发送到组中最近的节点。 multicast - 数据包转发到定义的设备组。 unreachable - 地址不可达。 |
headers | super { ! , type: ubit (hop, dst, route, frag, ah, esp, none, proto) , [mode] [ :enum (exact | contains) { exact:0, contains:1 }] } | 匹配 IPv6 next-header。通过 mode 参数可以控制两种头匹配方式:contains - 软匹配,至少匹配选定的头。 exact - 匹配选定头的精确集合。 |
tcp-flags | super { !, , flags: multi { array-id, array-id, flag: super { ! , flag: enum (fin | syn | rst | psh | ack | urg | ece | cwr) { fin:0, syn:1, rst:2, psh:3, ack:4, urg:5, ece:6, cwr:7 } } } } | 匹配指定的 TCP 标志:ack - 确认数据。 cwr - 拥塞窗口减小。 ece - ECN 回显标志(显式拥塞通知)。 fin - 关闭连接。 psh - 推送功能。 rst - 重置连接。 syn - 新连接。 urg - 紧急数据。 |
hop-limit | super { mode: enum (equal | not-equal | less-than | greater-than) { equal:0, not-equal:1, less-than:2, greater-than:3 } , [value] :num [0 .. 255] } | 匹配 IPv6 头中的 hop limit 字段。 |
connection-mark | super { ! , mark: enum } | 匹配由 mangle 功能标记了特定连接标记的数据包。如果设置了 no-mark,规则将匹配任何未标记的连接。 |
connection-type | super { ! , type: enum (ftp | pptp | h323 | sip | irc | quake3 | tftp) { ftp:0, pptp:1, h323:2, sip:3, irc:4, quake3:5, tftp:6 } } | 根据连接跟踪助手的信息匹配来自相关连接的数据包。必须在 /ip/firewall/service-port 下启用相关的连接助手。 |
connection-bytes | super { from: num , [to] -num } | 仅当通过特定连接传输了给定字节数时才匹配数据包。0 表示不限,例如 connection-bytes=2000000-0 表示当相关连接传输超过 2MB 时规则匹配。 |
connection-rate | super { ! , from: num , [to] -num } | 允许根据连接的当前速度捕获流量。 |
routing-mark | super { ! , mark: enum () } | 匹配由 mangle 功能标记了特定路由标记的数据包。 |
in-interface | super { ! , interface: iface_enum } | 数据包进入路由器时所经过的接口。 |
out-interface | super { ! , interface: iface_enum } | 数据包离开路由器时所经过的接口。 |
in-interface-list | super { ! , interface-list: enum } | 在接口列表中定义的接口集合。作用与 in-interface 相同。 |
out-interface-list | super { ! , interface-list: enum } | 在接口列表中定义的接口集合。作用与 out-interface 相同。 |
in-bridge-port | super { ! , interface: iface_enum } | 当入接口为网桥时,数据包进入路由器实际经过的接口。仅在网桥设置中启用 use-ip-firewall 时有效。 |
out-bridge-port | super { ! , interface: iface_enum } | 当出接口为网桥时,数据包离开路由器实际经过的接口。仅在网桥设置中启用 use-ip-firewall 时有效。 |
in-bridge-port-list | super { ! , interface-list: enum } | 在接口列表中定义的接口集合。作用与 in-bridge-port 相同。 |
out-bridge-port-list | super { ! , interface-list: enum } | 在接口列表中定义的接口集合。作用与 out-bridge-port 相同。 |
packet-mark | super { ! , mark: enum } | 匹配由 mangle 功能标记了特定数据包标记的数据包。如果设置了 no-mark,规则将匹配任何未标记的数据包。 |
src-port | super { ! , port: multi { range: range [ .. 65535] } } | 源端口及源端口范围列表。仅当协议为 TCP 或 UDP 时适用。 |
dst-port | super { ! , port: multi { range: range [ .. 65535] } } | 目的端口号或端口号范围列表。 |
port | super { ! , port: multi { range: range [ .. 65535] } } | 当任一端口(源端口或目的端口)与指定的端口或端口范围列表匹配时匹配。仅当 protocol 为 TCP 或 UDP 时适用。 |
icmp-options | super { ! , type: num [0 .. 255] , [code] [ :range [ .. 255]] } | 匹配 ICMP 的 type:code 字段。 |
src-mac-address | super { ! , address: macAddr } | 匹配数据包的源 MAC 地址。 |
content | super { ! , content: string } | 匹配包含指定文本的数据包。 |
ingress-priority | super { ! , ingress-priority: num [0 .. 63] } | 匹配入站数据包的优先级。优先级可能来自 VLAN、WMM、DSCP 或 MPLS EXP 位。 |
priority | super { ! , priority: num [0 .. 63] } | 匹配设置新优先级后的数据包优先级。优先级可能来自 VLAN、WMM、DSCP、MPLS EXP 位,或来自通过 set-priority 动作设置的优先级。 |
dscp | super { ! , dscp: num [0 .. 63] } | 匹配 DSCP IP 头字段。 |
tos | super { ! , tos: num [0 .. 255] , [mask] [ /num [0 .. 255]] } | |
limit | super { ! , count: num [1 .. 32000000000] , [time] [ /time [1 .. ]] , [burst] ,num [ .. 2000000000] , [mode] [ :enum (packet | bit) { packet:0, bit:1 }] } | 匹配数据包,直到达到有限速率(数据包速率或比特速率)。带有此匹配器的规则会一直匹配,直到达到该限制。参数采用以下格式:rate[/time],burst:mode。 - rate - 每个时间间隔要匹配的数据包数或比特数。 - time - 指定数据包或比特速率不能超过的时间间隔(可选,未指定时使用 1s)。 - burst - 要匹配的初始数据包数或比特数:该数字每 10ms 重新增加,因此 burst 至少应为每秒速率值的 1/100。 - mode - 数据包或比特模式。 |
dst-limit | super { count: num , [time] [ /time] , [burst] ,num , [mode] ,enum (dst-address | dst-address-and-port | src-address | src-and-dst-addresses | addresses-and-dst-port) { dst-address:1, dst-address-and-port:3, src-address:4, src-and-dst-addresses:5, addresses-and-dst-port:7 } , [expire] [ /time] } | 匹配数据包,直到超过给定速率。速率定义为每个时间间隔的数据包数。与 limit 匹配器不同,每个流都有自己的限制。流由 mode 参数定义。参数采用以下格式:rate[/time],burst,mode[/expire]。 - rate - 每个流每个时间间隔要匹配的数据包数。 - time - 指定每个流的数据包计数速率不能超过的时间间隔(可选,未指定时使用 1s)。 - burst - 每个流要匹配的初始数据包数:每经过一个 time/rate,该数字会重新增加一,直到达到此数量。 - mode - 指定哪些唯一字段定义流(src-address、dst-address、src-and-dst-address、dst-address-and-port、addresses-and-dst-port)。 - expire - 指定无数据包的流在多长时间后允许删除(可选)。 |
time | super { ! , start: time [0 .. 86400] , [end] -time [0 .. 86400] , [day] ,ubit (sun, mon, tue, wed, thu, fri, sat) } | 根据数据包的到达时间和日期创建过滤器;对于本地生成的数据包,则使用离开时间和日期。该匹配器会考虑路由器上配置的时间和时区。 |
random | super { percent: num [1 .. 99] } | 以给定概率随机匹配数据包。 |
nth | super { ! , every: num [1 .. ] , [packet] [ ,num [1 .. ]] } | 每隔第 n 个数据包进行匹配:nth=2,1 将匹配每 2 个数据包中的第 1 个,即匹配该规则命中的所有流量中的 50%。 |
tcp-mss | super { ! , min: num [0 .. 65535] , [max] -num [0 .. 65535] } | 匹配 IP 数据包的 TCP MSS 值。 |
per-connection-classifier | super { ! , values-to-hash: enum (src-address | dst-address | both-addresses | src-port | src-address-and-port | dst-port | dst-address-and-port | both-ports | both-addresses-and-ports) { src-address:1, dst-address:2, both-addresses:3, src-port:4, src-address-and-port:5, dst-port:8, dst-address-and-port:10, both-ports:12, both-addresses-and-ports:15 } , [denominator] :num [1 .. ] , [remainder] /num [0 .. ] } | PCC 匹配器允许将流量划分为相等的流,并能够将具有特定选项集合的数据包保留在同一个流中。 |
packet-size | super { ! , min: num [ .. 65535] , [max] -num [ .. 65535] } | 按字节匹配指定大小或大小范围的数据包。 |
log | bool | 向系统日志添加一条消息,包含以下数据:in-interface、out-interface、src-mac、protocol、src-ip:port->dst-ip:port 以及数据包长度。即使动作不是 log 也允许记录数据包,便于防火墙调试。 |
log-prefix | string | 在每条日志消息开头添加指定文本。适用于配置了 action=log 或 log=yes 的情况。 |
ipsec-policy | super { direction: enum (in | out) { in:0, out:1 } , [policy] ,enum (none | ipsec) { none:0, ipsec:1 } } | 匹配 IPsec 使用的策略。值的格式为:direction, policy。 - in - 在 PREROUTING、INPUT 和 FORWARD 链中有效。 - out - 在 POSTROUTING、OUTPUT 和 FORWARD 链中有效。 - ipsec - 如果数据包需要经过 IPsec 处理则匹配。 - none - 匹配不经过 IPsec 处理的数据包。 |