示例:使用防火墙过滤器链
此示例说明如何使用防火墙过滤器链。防火墙过滤器 过滤器 1、过滤器 2 和过滤器 3 使用和配置语句应用于接口 ge-0/1/1.0。input-chain
output-chain
要求
准备工作:
-
您应该拥有一台带有 MPC 且运行 Junos 18.4R1 或更高版本的 MX 系列路由器。
如果您将 PTX10001-36MR、PTX10004、PTX10008 或 PTX10016 路由器用于此功能,请安装 Junos OS 演化版 21.4R1。
路由器应配置为 IP 版本 4 (IPv4) 协议 (),并使用接口地址配置逻辑接口。
family inet
所有其他初始路由器配置都应已完成,并确认设备之间的基本 IPv4 连接。您发送的流量应与防火墙过滤器规则兼容,以便您配置的规则可以与您发送的测试流量匹配。
概述
此示例说明如何为入口和出口链接多个防火墙过滤器,以便将它们应用于给定接口并按顺序进行评估。 执行顺序与链的顺序相同,从左到右。
使用筛选器链(与输入列表筛选器相对)的优点是允许多级筛选,例如使用初始筛选器执行泛型分类(如 QoS),然后使用一个或多个后续筛选器进行其他细化(如安全性),因为它们避免了评估中使用的 IP 地址重叠时可能出现的继承冲突。
从 Junos OS 演化版 21.4R1 开始,您可以在 PTX10001-36MR、PTX10004、PTX10008 和 PTX10016 路由器上使用防火墙过滤器链。
您可以按如下方式应用筛选器链:
set interfaces interface-name unit unit family inet filter input-chain [filter1 filter2 filter3];
set interfaces interface-name unit unit family inet filter output-chain [filter1 filter2 filter3];
在 PTX Evo 平台上,该功能具有以下限制:
-
您只能将过滤器链中的第一个过滤器配置为特定于接口。在 MX 系列路由器上,您可以将过滤器链中的所有过滤器配置为特定于接口。
-
您不能将相同的过滤器配置为常规 CLI 过滤器的一部分,也不能在同一接口特定绑定点上配置链过滤器。在此类接口特定的绑定点上,将现有 CLI 过滤器替换为过滤器链,反之亦然,并单独提交它们,以避免错误。
-
不能在同一绑定点上配置链过滤器以及“系列 ANY”和接口监管器。
-
在环路接口上,不支持输出链筛选器。
-
在环路接口上,您无法同时配置输入 CLI 常规过滤器和链过滤器。
-
对于 IRB 接口,您无法同时配置常规 CLI 接口特定的过滤器和过滤器链。
-
对于第 2 层 SP 样式输出,您无法同时配置常规 CLI 接口特定的过滤器和链式过滤器。
-
等 筛选器不支持作为 CLI 链筛选器的一部分。
fast-lookup-filter
-
Urpf 失败筛选器不支持 CLI 筛选器链。
-
由于仅支持 MPLS 系列的出口过滤器,而链式过滤器不支持快速查找过滤器,因此在配置系列 MPLS 出口链过滤器时将提供相关的提交检查。
fast-lookup-filter
拓扑
在此示例中,您将配置多个防火墙过滤器,然后通过将它们链接到给定接口来按顺序应用它们。此示例使用配置的 IP 地址 172.16.1.1/30 作为 输入和输出链。ge-0/1/1.0
如果数据包与链列表中的任何过滤器都不匹配,则会丢弃该数据包。
配置
下面的示例要求您在各个配置层级中进行导航。有关导航 CLI 的信息,请参见 。在配置模式下使用 CLI 编辑器
CLI 快速配置
要快速配置此示例,请将以下命令复制到文本文件中,删除所有换行符,然后将命令粘贴到层次结构级别的 CLI 中。[edit]
此处使用的筛选器名称为 、 等,而术语名称为 (term1,使用 filter1),依此类推。filter1t1_f1
set firewall family inet filter filter1 term t1_f1 from protocol tcp set firewall family inet filter filter1 term t1_f1 then count f1_t1_cnt set firewall family inet filter filter1 term t2_f1 from precedence 7 set firewall family inet filter filter1 term t2_f1 then count f1_t2_cnt set firewall family inet filter filter1 term t2_f1 then accept set firewall family inet filter filter2 term t1_f2 from dscp 0 set firewall family inet filter filter2 term t1_f2 then count f2_t1_cnt set firewall family inet filter filter2 term t2_f2 from source-port 1020 set firewall family inet filter filter2 term t2_f2 then count f2_t2_cnt set firewall family inet filter filter2 term t2_f2 then accept set firewall family inet filter filter3 term t1_f3 from destination-address 172.30.1.1/32 set firewall family inet filter filter3 term t1_f3 then count f3_t1_cnt set firewall family inet filter filter3 term t2_f3 from destination-port 5454 set firewall family inet filter filter3 term t2_f3 then count f3_t2_cnt set firewall family inet filter filter3 term t2_f3 then accept set interfaces ge-0/1/1 unit 0 family inet address 172.16.1.1/30 set interfaces ge-0/1/1 unit 0 family inet filter input-chain [ filter1 filter2 filter3 ] set interfaces ge-0/1/1 unit 0 family inet filter output-chain [ filter1 filter2 filter3 ]
配置 IPv4 防火墙过滤器
在这里,我们配置防火墙过滤器。每个都有不同的匹配条件和计数操作。前两个过滤器有多个术语,其非终止操作为 ,这意味着匹配的数据包将被传递到链中的下一个过滤器,而第三个过滤器具有 接受操作。count 不符合任何指定条件的数据包将被丢弃。
分步过程
要配置防火墙过滤器:
将 CLI 导航到配置 IPv4 防火墙过滤器的层次结构级别。
[edit] user@host# edit firewall family inet
将第一个防火墙过滤器配置为对 TCP 数据包或优先级为 7 的数据包进行计数,然后再将其发送到链中的下一个过滤器。
[edit firewall family inet] user@host# set filter filter1 term t1_f1 from protocol tcp user@host# set filter filter1 term t1_f1 then count f1_t1_cnt user@host# set filter filter1 term t2_f1 from precedence 7 user@host# set filter filter1 term t2_f1 then count f1_t2_cnt user@host# set filter filter1 term t2_f1 then accept
配置第二个防火墙过滤器以对 DSCP 数据包或源端口为 1020 的数据包进行计数,然后再将它们发送到链中的下一个过滤器。
[edit firewall family inet] user@host# set filter filter2 term t1_f2 from dscp 0 user@host# set filter filter2 term t1_f2 then count f2_t1_cnt user@host# set filter filter2 term t2_f2 from source-port 1020 user@host# set filter filter2 term t2_f2 then count f2_t2_cnt user@host# set filter filter2 term t2_f2 then accept
配置最后一个防火墙过滤器以计数并接受目标地址为 172.30.1.1/32 或目标端口为 5454 的数据包。
[edit firewall family inet] user@host# set filter filter3 term t1_f3 from destination-address 172.30.1.1/32 user@host# set filter filter3 term t1_f3 then count f3_t1_cnt user@host# set filter filter3 term t2_f3 from destination-port 5454 user@host# set filter filter3 term t2_f3 then count f3_t2_cnt user@host# set filter filter3 term t2_f3 then accept
应用输入过滤器链
在这里,我们将防火墙过滤器连接到给定接口。执行顺序与链的顺序相同,从左到右。
分步过程
要为接口分配 IP 地址,请执行以下操作:
导航到我们用于过滤器的界面, .
ge-0/1/1.0
[edit] user@host# edit interfaces ge-0/1/1 unit 0 family inet
为逻辑接口分配 IPv4 地址。
[edit interfaces ge-0/1/1 unit 0 family inet] user@host# set address 172.16.1.1/30
将筛选器应用为输入筛选器列表。
[edit interfaces ge-0/1/1 unit 0 family inet] user@host# set filter input-chain [ filter1 filter2 filter3 ] user@host# set filter out-chain [ filter1 filter2 filter3 ]
确认并提交候选配置
分步过程
要确认并提交候选配置,请执行以下操作:
通过输入 配置模式命令确认防火墙过滤器的配置。
show firewall
如果命令输出未显示预期的配置,请重复此示例中的说明以更正配置。[edit firewall] user@host# show family inet { } filter filter1 { term t1_f1 { from { protocol tcp; } then count f1_t1_cnt; accept; } term t2_f1 { from { precedence 7; } then count f1_t2_cnt; accept; } } filter filter2 { term t1_f2 { from { dscp 0; } then count f2_t1_cnt; } term t2_f2 { from { source-port 1020; } then count f2_t2_cnt; } } filter filter3 { term t1_f3 { from { destination-address { 172.30.1.1/32; } } then { count f3_t1_cnt; } } term t2_f3 { from { destination-port 5454; } then { count f3_t2_cnt; accept; } } } } }
通过输入 配置模式命令确认接口的配置。
show interfaces
[edit] user@host# show interfaces ge-0/1/1 { unit 0 { family inet { filter { input-chain [ filter1 filter2 filter3 ]; } address 172.16.1.1/30; } } }
如果完成设备配置,请提交配置。
[edit] user@host# commit
验证
确认配置按预期工作,即,每个过滤器 filter1、filter2 和 filter3 评估匹配的流量,并且已执行预期的操作(计数或接受)。
通过防火墙过滤器发送流量
目的
将流量从一个设备发送到您配置的路由器,以查看链中的所有相关过滤器是否正在评估匹配的数据包。
操作
要验证输入数据包是否由过滤器 1、过滤器 2 和过滤器 3 进行评估,请执行以下操作:
从连接到 的远程主机发送优先级为 7 的数据包。数据包应计数,然后由过滤器 2 进行评估。
ge-0/1/1.0
从连接到 的远程主机发送 DSCP 值为 0 的数据包。数据包应进行计数,然后由过滤器 3 进行评估。
ge-0/1/1.0
从连接到 的远程主机发送目标地址为 172.30.1.1/32、目标端口号为 5454 的数据包。
ge-0/1/1.0
数据包应计数,然后接受。要显示您配置的过滤器的计数器信息,请输入 操作模式命令。
show firewall filter filter-name
命令输出显示与计数器关联的过滤器术语匹配的字节数和数据包数。