示例:在源地址上配置基于过滤器的转发
此示例说明如何配置基于过滤器的转发 (FBF),有时也称为基于策略的路由 (PBR)。过滤器对数据包进行分类,以确定其在入口路由设备中的转发路径。
IP 版本 4 (IPv4) 和 IP 版本 6 (IPv6) 支持基于过滤器的转发。
QFX5110、QFX5120、QFX5130、QFX5200、QFX5210、QFX5220、QFX5230、QFX5240 和 QFX5700 不支持 instance-type forwarding
;仅 instance-type virtual-router
受支持。
要求
此示例不需要除设备初始化之外的特殊配置。
概述
在此示例中,当客户具有由不同 ISP 提供的互联网连接但共享一个公共访问层时,我们使用 FBF 进行服务提供商选择。使用共享介质(如电缆调制解调器)时,公共接入层上的机制会查看第 2 层或第 3 层地址,并区分客户。当使用第 2 层交换机和单个路由器的组合来实施公共接入层时,您可以使用基于过滤器的转发。
使用 FBF 时,将考虑接口上接收的所有数据包。每个数据包都通过具有匹配条件的过滤器。如果满足过滤器的匹配条件,并且您已经创建了路由实例,则 FBF 将应用于数据包。数据包根据路由实例中指定的下一跃点进行转发。对于静态路由,下一跃点可以是特定的 LSP。
为 FBF 配置的接口不支持源类用法过滤器匹配和单播反向路径转发检查。
要配置 FBF,请执行以下操作:
在入口设备上创建匹配过滤器。要指定匹配筛选器,请在层次结构级别包含
filter filter-name
[edit firewall]
语句。将通过过滤器的数据包与一组规则进行比较,以对其进行分类并确定其在一组数据包中的成员身份。分类后,数据包将以过滤器描述语言转发到在接受操作中指定的路由表。然后,路由表将数据包转发到与表中的目标地址条目对应的下一跃点。创建路由实例,用于指定数据包转发到的路由表,以及在层次结构级别上
[edit routing-instances]
将数据包转发到的目标。例如:[edit] routing-instances { routing-table-name1 { instance-type forwarding; routing-options { static { route 0.0.0.0/0 next-hop 172.16.0.14; } } } routing-table-name2 { instance-type forwarding; routing-options { static { route 0.0.0.0/0 next-hop 172.16.0.18; } } } }
创建 RIB 组,以便与基于过滤器的转发 (FBF) 中使用的转发路由实例共享接口路由。这部分配置将路由实例中安装的路由解析为直接连接到该接口上的下一跃点。在
[edit routing-options]
层次结构级别创建路由表组。[edit] routing-options { interface-routes { rib-group; inet { int-routes; } } } } routing-options { rib-groups { int-routes { import-rib { inet.0; webtraffic.inet.0; } } } }
此示例显示了一个数据包过滤器,该过滤器根据数据包的源地址将客户流量定向到域 SP1 或 SP2 中的下一跃点路由器。
如果数据包的源地址已分配给 SP1 客户,则使用 sp1-route-table.inet.0 路由表进行基于目标的转发。如果数据包的源地址分配给了 SP2 客户,则使用 sp2-route-table.inet.0 路由表进行基于目标的转发。如果数据包不符合上述任一条件,过滤器将接受数据包,并使用标准 inet.0 路由表进行基于目标的转发。
拓扑学
图 1 显示了此示例中使用的拓扑。
在设备 P1 上,输入过滤器对从设备 PE3 和设备 PE4 接收的数据包进行分类。数据包基于源地址进行路由。源地址在 10.1.1.0/24 和 10.1.2.0/24 网络中的数据包将路由到设备 PE1。源地址在 10.2.1.0/24 和 10.2.2.0/24 网络中的数据包将路由到设备 PE2。
要建立连接,必须在所有接口上配置 OSPF。出于演示目的,在路由设备上配置环路接口地址以表示云中的网络。
该 CLI 快速配置 部分显示拓扑中所有设备的完整配置。本 在设备 P1 上配置基于过滤器的转发 部分显示入口路由设备设备 P1 的分步配置。
配置
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,然后将命令复制并粘贴到层次结构级别的 CLI [edit]
中。
设备 P1
set firewall filter classify-customers term sp1-customers from source-address 10.1.1.0/24 set firewall filter classify-customers term sp1-customers from source-address 10.1.2.0/24 set firewall filter classify-customers term sp1-customers then log set firewall filter classify-customers term sp1-customers then routing-instance sp1-route-table set firewall filter classify-customers term sp2-customers from source-address 10.2.1.0/24 set firewall filter classify-customers term sp2-customers from source-address 10.2.2.0/24 set firewall filter classify-customers term sp2-customers then log set firewall filter classify-customers term sp2-customers then routing-instance sp2-route-table set firewall filter classify-customers term default then accept set interfaces fe-1/2/0 unit 0 family inet filter input classify-customers set interfaces fe-1/2/0 unit 0 family inet address 172.16.0.10/30 set interfaces fe-1/2/1 unit 0 family inet address 172.16.0.13/30 set interfaces fe-1/2/2 unit 0 family inet address 172.16.0.17/30 set protocols ospf rib-group fbf-group set protocols ospf area 0.0.0.0 interface all set protocols ospf area 0.0.0.0 interface fxp0.0 disable set routing-instances sp1-route-table instance-type forwarding set routing-instances sp1-route-table routing-options static route 0.0.0.0/0 next-hop 172.16.0.14 set routing-instances sp2-route-table instance-type forwarding set routing-instances sp2-route-table routing-options static route 0.0.0.0/0 next-hop 172.16.0.18 set routing-options interface-routes rib-group fbf-group set routing-options rib-groups fbf-group import-rib inet.0 set routing-options rib-groups fbf-group import-rib sp1-route-table.inet.0 set routing-options rib-groups fbf-group import-rib sp2-route-table.inet.0
设备 P2
set interfaces fe-1/2/0 unit 0 family inet address 172.16.0.2/30 set interfaces fe-1/2/1 unit 0 family inet address 172.16.0.6/30 set interfaces fe-1/2/2 unit 0 family inet address 172.16.0.9/30 set protocols ospf area 0.0.0.0 interface all set protocols ospf area 0.0.0.0 interface fxp0.0 disable
设备 PE1
set interfaces fe-1/2/0 unit 0 family inet address 172.16.0.14/30 set interfaces lo0 unit 0 family inet address 172.16.1.1/32 set protocols ospf area 0.0.0.0 interface all set protocols ospf area 0.0.0.0 interface fxp0.0 disable
设备 PE2
set interfaces fe-1/2/0 unit 0 family inet address 172.16.0.18/30 set interfaces lo0 unit 0 family inet address 172.16.2.2/32 set protocols ospf area 0.0.0.0 interface all set protocols ospf area 0.0.0.0 interface fxp0.0 disable
设备 PE3
set interfaces fe-1/2/0 unit 0 family inet address 172.16.0.1/30 set interfaces lo0 unit 0 family inet address 10.1.1.1/32 set interfaces lo0 unit 0 family inet address 10.1.2.1/32 set protocols ospf area 0.0.0.0 interface all set protocols ospf area 0.0.0.0 interface fxp0.0 disable
设备 PE4
set interfaces fe-1/2/0 unit 0 family inet address 172.16.0.5/30 set interfaces lo0 unit 0 family inet address 10.2.1.1/32 set interfaces lo0 unit 0 family inet address 10.2.2.1/32 set protocols ospf area 0.0.0.0 interface all set protocols ospf area 0.0.0.0 interface fxp0.0 disable
在 P1 上配置防火墙过滤器
分步过程
下面的示例要求您在各个配置层级中进行导航。有关导航 CLI 的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。
要在主路由器或交换机上配置防火墙过滤器:
配置 SP1 客户的源地址。
[edit firewall filter classify-customers term sp1-customers] user@host# set from source-address 10.1.1.0/24 user@host# set from source-address 10.1.2.0/24
配置接收具有指定源地址的数据包时执行的操作;它们将被记录下来,并传递到 SP1-route-table 路由实例,以便通过 SP1-route-table.inet.0 路由表进行路由。
[edit firewall filter classify-customers term sp1-customers] user@host# set then log user@host# set then routing-instance sp1-route-table
配置 SP2 客户的源地址。
[edit firewall filter classify-customers term sp2-customers] user@host# set from source-address 10.2.1.0/24 user@host# set from source-address 10.2.2.0/24
配置接收具有指定源地址的数据包时执行的操作;它们将被记录下来,并传递到 SP2-route-table 路由实例,以便通过 sp2-route-table.inet.0 路由表进行路由。
[edit firewall filter classify-customers term sp2-customers] user@host# set then log user@host# set then routing-instance sp2-route-table
配置从任何其他源地址接收数据包时要执行的操作;使用默认 IPv4 单播路由表 inet.0 接受和路由它们。
[edit firewall filter classify-customers term default] user@host# set then accept
在设备 P1 上配置基于过滤器的转发
分步过程
下面的示例要求您在各个配置层级中进行导航。有关导航 CLI 的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。
要配置路由实例:
配置接口。
[edit interfaces fe-1/2/0] user@host# set unit 0 family inet address 172.16.0.10/30 [edit interfaces fe-1/2/1] user@host# set unit 0 family inet address 172.16.0.13/30 [edit interfaces fe-1/2/2] user@host# set unit 0 family inet address 172.16.0.17/30
将
classify-customers
防火墙过滤器分配给路由器接口 fe-1/2/0.0 作为输入数据包过滤器。[edit interfaces fe-1/2/0] user@host# set unit 0 family inet filter input classify-customers
使用路由协议或静态路由配置连接。
最佳做法是在管理接口上禁用路由。
[edit protocols ospf area 0.0.0.0] user@host# set interface all user@host# set interface fxp0.0 disable
创建防火墙过滤器中引用的
classify-customers
路由实例。转发实例类型支持基于筛选条件的转发,其中接口不与实例关联。[edit routing-instances] user@host# set sp1-route-table instance-type forwarding user@host# set sp2-route-table instance-type forwarding
对于每个路由实例,定义一个默认路由以将流量转发到指定的下一跃点(此示例中为 PE1 和 PE2)。
[edit routing-instances ] user@host# set sp1-route-table routing-options static route 0.0.0.0/0 next-hop 172.16.0.14 user@host# set sp2-route-table routing-options static route 0.0.0.0/0 next-hop 172.16.0.18
关联路由表以形成路由表组。第一个路由表 inet.0 是主路由表,其他是辅助路由表。主路由表确定路由表组(在本例中为 IPv4)的地址族。
[edit routing-options] user@host# set rib-groups fbf-group import-rib inet.0 user@host# set rib-groups fbf-group import-rib sp1-route-table.inet.0 user@host# set rib-groups fbf-group import-rib sp2-route-table.inet.0
在 OSPF 配置中指定 fbf 组路由表组,以将 OSPF 路由安装到三个路由表中。
[edit protocols ospf] user@host# set rib-group fbf-group
完成后提交配置。
[edit] user@host# commit
结果
通过发出 show interfaces
、 show firewall
、 show routing-instances
show protocols
和 show routing-options
命令来确认您的配置。
user@host# show interfaces fe-1/2/0 { unit 0 { family inet { filter { input classify-customers; } address 172.16.0.10/30; } } } fe-1/2/1 { unit 0 { family inet { address 172.16.0.13/30; } } } fe-1/2/2 { unit 0 { family inet { address 172.16.0.17/30; } } }
user@host# show firewall filter classify-customers { term sp1-customers { from { source-address { 10.1.1.0/24; 10.1.2.0/24; } } then { log; routing-instance sp1-route-table; } } term sp2-customers { from { source-address { 10.2.1.0/24; 10.2.2.0/24; } } then { log; routing-instance sp2-route-table; } } term default { then accept; } }
user@host# show protocols ospf { rib-group fbf-group; area 0.0.0.0 { interface all; interface fxp0.0 { disable; } } }
user@host# show routing-instances sp1-route-table { instance-type forwarding; routing-options { static { route 0.0.0.0/0 next-hop 172.16.0.14; } } } sp2-route-table { instance-type forwarding; routing-options { static { route 0.0.0.0/0 next-hop 172.16.0.18; } } }
user@host# show routing-options rib-groups { fbf-group { import-rib [ inet.0 sp1-route-table.inet.0 sp2-route-table.inet.0 ]; } }
验证
确认配置工作正常。
使用指定的源地址执行 ping 操作
目的
通过网络发送一些 ICMP 数据包以测试防火墙过滤器。
操作
ping
运行命令,对设备 PE1 上的 lo0.0 接口执行 ping 操作。此接口上配置的地址为 172.16.1.1。
指定源地址 10.1.2.1,即在设备 PE3 上的 lo0.0 接口上配置的地址。
user@PE3> ping 172.16.1.1 source 10.1.2.1 PING 172.16.1.1 (172.16.1.1): 56 data bytes 64 bytes from 172.16.1.1: icmp_seq=0 ttl=62 time=1.444 ms 64 bytes from 172.16.1.1: icmp_seq=1 ttl=62 time=2.094 ms ^C --- 172.16.1.1 ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max/stddev = 1.444/1.769/2.094/0.325 ms
ping
运行命令,对设备 PE2 上的 lo0.0 接口执行 ping 操作。此接口上配置的地址为 172.16.2.2。
指定源地址 10.2.1.1,即在设备 PE4 上的 lo0.0 接口上配置的地址。
user@PE4> ping 172.16.2.2 source 10.2.1.1 PING 172.16.2.2 (172.16.2.2): 56 data bytes 64 bytes from 172.16.2.2: icmp_seq=0 ttl=62 time=1.473 ms 64 bytes from 172.16.2.2: icmp_seq=1 ttl=62 time=1.407 ms ^C --- 172.16.2.2 ping statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max/stddev = 1.407/1.440/1.473/0.033 ms
意义
发送这些 ping 将激活防火墙过滤器操作。
验证防火墙过滤器
目的
确保防火墙过滤器操作生效。
操作
show firewall log
在设备 P1 上运行命令。user@P1> show firewall log Log : Time Filter Action Interface Protocol Src Addr Dest Addr 13:52:20 pfe A fe-1/2/0.0 ICMP 10.2.1.1 172.16.2.2 13:52:19 pfe A fe-1/2/0.0 ICMP 10.2.1.1 172.16.2.2 13:51:53 pfe A fe-1/2/0.0 ICMP 10.1.2.1 172.16.1.1 13:51:52 pfe A fe-1/2/0.0 ICMP 10.1.2.1 172.16.1.1