示例:配置基于过滤器的转发
基于过滤器的转发 (FBF) 也称为 基于策略的路由 (PBR),提供了一种简单而强大的方法,可以根据第 3 层或第 4 层参数将 IP 流量路由到不同的接口。
FBF 的工作原理是使用防火墙过滤器中的匹配条件来选择某些流量,然后将其定向到指向所需下一跃点的给定路由实例。为确保下一跃点可解析,来自主路由表的接口路由通过 RIB 组与路由实例中指定的路由表共享。
匹配条件可以包括源或目标 IP 地址、源或目标端口、IP 协议、DSCP 值、TCP 标志、ICMP 类型和数据包长度。
要求
此示例具有以下硬件和软件要求:
MX 系列 5G 通用路由平台作为配置了防火墙过滤器的路由设备。
在配置了防火墙过滤器的路由设备上运行的 Junos OS 13.3 或更高版本。
概述
此示例显示了在单个设备上设置基于过滤器的转发所需的配置设置。 图 1 显示了 MX 系列路由器上的入口和出口接口,并说明了数据包遍历设备时的逻辑事件流。

名为 webFilter 的防火墙过滤器连接到入口接口 fe-0/0/0。根据过滤器中指定的匹配条件评估通过接口到达的数据包,过滤器的逻辑将 HTTP 和 HTTPS 流量定向到名为 的 webtraffic路由实例。此路由实例完成三项操作:首先,它会建立一个名为 webtraffic.inet.0的路由表;其次,它允许您定义静态路由和下一跃点;第三,允许您配置实例以将流量转发到下一跃点(此处为接口 fe-0/0/1上的 192.0.2.2)。
防火墙过滤器 then accept中的术语 2 指定所有不匹配的流量采用不同的路径。我们定义一个下一跃点为 203.0.113.2 的静态路由,以便此流量通过 出口设备 fe-0/0/2。路由会自动安装在主路由表 . inet.0
设置 FBF 的最后一个(逻辑)步骤是确保两个路由都是可解析的。RIB 组(FBF-rib在本例中为 )使其可以与 webtraffic.inet.0共享接口路由inet.0。
有关侧重于特定用例或多设备拓扑的示例,请参阅 参考资料。
配置
程序
CLI 快速配置
提供了在单个设备上创建基于过滤器的转发的复制粘贴和分步说明。
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,然后将命令复制并粘贴到层次结构级别的 CLI [edit]
中。
为基于过滤器的转发配置设备
set interfaces fe-0/0/0 unit 0 family inet address 198.51.100.1/24 set interfaces fe-0/0/0 unit 0 family inet filter input webFilter set interfaces fe-0/0/1 unit 0 family inet address 192.0.2.1/24 set interfaces fe-0/0/2 unit 0 family inet address 203.0.113.1/24 set firewall family inet filter webFilter term 1 from destination-port http set firewall family inet filter webFilter term 1 from destination-port https set firewall family inet filter webFilter term 1 then routing-instance webtraffic set firewall family inet filter webFilter term 2 then accept set routing-instances webtraffic routing-options static route 0.0.0.0/0 next-hop 192.0.2.2 set routing-instances webtraffic instance-type forwarding set routing-options static route 0.0.0.0/0 next-hop 203.0.113.2 set routing-options rib-groups FBF-rib import-rib inet.0 set routing-options rib-groups FBF-rib import-rib webtraffic.inet.0 set routing-options interface-routes rib-group inet FBF-rib
分步过程
下面的示例要求您在各个配置层级中进行导航。有关导航 CLI 的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。
要配置设备:
配置入站接口并向其附加 webFilter 防火墙过滤器。
[edit interfaces fe-0/0/0 unit 0 family inet] user@device# set filter input webFilter user@device# set address 198.51.100.1/24
配置出站接口,一个用于 Web 流量,另一个用于所有其他流量。
[edit interfaces] user@device# set fe-0/0/1 unit 0 family inet address 192.0.2.1/24 user@device# set fe-0/0/2 unit 0 family inet address 203.0.113.1/24
配置防火墙过滤器以将 Web 流量传递到路由实例, webtraffic 并将所有其他流量传递到 203.0.113.1。
[edit firewall family inet filter webFilter] user@device# set term 1 from destination-port http user@device# set term 1 from destination-port https user@device# set term 1 then routing-instance webtraffic user@device# set term 2 then accept
自选:通过添加计数器来监控防火墙过滤器的流量处理>
[edit interfaces fe-0/0/0 unit 0 family inet] user@device# set firewall family inet filter webFilter term 1 then count webtraffic-count
webtraffic创建路由实例并将其配置为将 Web 流量转发到 fe-0/0/1。
[edit routing-instances webtraffic] user@device# set routing-options static route 0.0.0.0/0 next-hop 192.0.2.2 user@device# set instance-type forwarding
为非 Web 流量创建路由(路由会自动安装在 inet.0 路由表中)。
[edit routing-options] user@device# set static route 0.0.0.0/0 next-hop 203.0.113.2
创建名为 FBF-rib的 RIB 组并对其进行配置,以便 inet.0 与 webtraffic.inet.0共享接口路由,然后将路由表组与路由设备的接口关联,并指定接口路由导入到的路由表组。
[edit routing-options] user@device# set rib-groups FBF-rib import-rib inet.0 user@device# set rib-groups FBF-rib import-rib webtraffic.inet.0
将路由表组与路由设备的接口关联,并指定要将接口路由导入到的路由表组。
[edit routing-options] user@device# set interface-routes rib-group inet FBF-rib
结果
在配置模式下,输入 show firewall
、 show routing-instances
show routing-options
和 show interfaces
命令确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明,以便进行更正。
如果完成设备配置,请从配置模式输入 commit
。
user@device#show interfaces fe-0/0/0
unit 0 { family inet { filter { input webFilter; } address 198.51.100.1/24; } } user@device#show interfaces fe-0/0/1
unit 0 { family inet { address 192.0.2.1/24; } } user@device#show interfaces fe-0/0/2
unit 0 { family inet { address 203.0.113.1/24; } } user@device#show firewall
family inet { filter webFilter { term 1 { from { destination-port [ http https ]; } then { routing-instance webtraffic; } } term 2 { then accept; } } }
user@device# show routing-options
interface-routes {
rib-group inet FBF-rib;
}
static {
route 0.0.0.0/0 next-hop 203.0.113.2;
}
rib-groups {
FBF-rib {
import-rib [ inet.0 webtraffic.inet.0 ];
}
}
user@device# show routing-instances
webtraffic {
instance-type forwarding;
routing-options {
static {
route 0.0.0.0/0 next-hop 192.0.2.2;
}
}
}