示例:使用防火墙过滤器链
此示例显示了防火墙过滤器链的使用。防火墙过滤器过滤器过滤器1、过滤器2 和过滤器3 使用 input-chain
和 output-chain
配置语句应用于接口 ge-0/1/1.0。
要求
开始之前:
-
您应该拥有一个带有 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-fail-过滤器不支持 CLI 过滤器链。
-
由于仅支持
fast-lookup-filter
MPLS 系列出口过滤器,而链过滤器不支持快速查找过滤器,因此在配置系列 MPLS 出口链过滤器时会提供相关的提交检查。
拓扑
在此示例中,您将配置多个防火墙过滤器,然后将它们链接至给定接口,按顺序应用它们。此示例使用 ge-0/1/1.0
为输入和输出链配置的 IP 地址 172.16.1.1/30。如果数据包与链列表中的任何过滤器不匹配,则数据包将被删除。
配置
以下示例要求您在配置层次结构中的各个级别上导航。有关导航 CLI 的信息,请参阅 在配置模式下使用 CLI 编辑器。
CLI 快速配置
要快速配置此示例,请将以下命令复制到文本文件中,删除所有换行符,然后将命令粘贴到层次结构级别的 CLI 中 [edit]
。此处使用的过滤器名称为 filter1,等等,而术语名称则 t1_f1 为(术语 1,使用 filter1)等。
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
验证
确认配置按预期工作,即由每个过滤器过滤器 1、filter2 和 filter3 评估匹配流量,并且已采取预期操作(计数或接受)。
通过防火墙过滤器发送流量
目的
将流量从一台设备发送到您配置的路由器,以查看链中的所有相关过滤器是否正在评估匹配的数据包。
行动
要验证输入数据包是否由过滤器1、过滤器2 和过滤器3 评估:
从连接到
ge-0/1/1.0
的远程主机发送优先级为 7 的数据包。应对数据包进行计数,然后由过滤器 2 进行评估。从连接到
ge-0/1/1.0
的远程主机发送一个 DSCP 值为 0 的数据包。应对数据包进行计数,然后由过滤器 3 进行评估。从连接到
ge-0/1/1.0
的远程主机发送目标地址为 172.30.1.1/32 且目标端口号为 5454 的数据包。应该对数据包进行计数,然后接受。要显示您配置的过滤器的计数器信息,请输入
show firewall filter filter-name
操作模式命令。命令输出显示与计数器关联的过滤条件匹配的字节数和数据包数。