FortiGate路由选路全解析:静态、策略、动态与ECMP实践指南
简介面向网络工程师与FortiGate运维人员的官方培训资料系统梳理Fortinet基础架构路由技术内容涵盖路由基本概念、静态路由、基于策略的路由、动态路由协议RIP/OSPF/BGP/IS-IS、Internet服务路由、IPv6路由以及路由监视器等模块适合企业网络管理员、NSE备考学员及需要排查路由故障的运维人员。资源为PDF格式文档共1个文件压缩包大小6.25MB携带方便可下载后按章节学习。目前已有119人学习下载。讲义源自Fortinet官方培训课程不仅讲解FortiGate作为OSI三层路由器的双重路由查找与会话表机制还详细说明了静态路由中的地址对象配置、策略路由的多条件匹配协议、端口、ToS位、动态路由协议的选路逻辑以及Distance、Metric、Priority等路由属性在最佳路径决策中的作用并配有路由监视器界面说明与知识检测题帮助读者巩固理论并用于实际网络设计。1. 双次路由查找FortiGate转发模型的第一性原理NAT模式的FortiGate本质上是一台三层路由器但数据包进入后不是逐包查路由表而是会话建立那一刻做两次路由查找发送方首包一次应答方首包一次随后把路由信息固化进会话表后续所有报文都复用同一条路径。这个转发模型把路由算法的决策粒度从包提升到会话节省了转发面重复查表的开销代价是路由表变更时已建会话必须舍弃旧路径重新学习。理解这一层就能解释改了静态路由后长连接仍在走旧出口的现象。这套内容面向正在做Fortinet基础架构选路、需要处理多WAN链路分流的路由技术工程师以下按静态路由、策略路由、动态路由、路由监视与ECMP的顺序展开。2. 静态路由与地址对象从默认路由到ISDB智能分流静态路由是所有选路方案里最直观的一种管理员手工把目标网段、下一跳、流出接口写死。它适合网络规模不大、拓扑基本不变或需要有明确逃生通道的场景。FortiGate对静态路由的匹配只看目的IP按最长前缀匹配规则从路由表中挑选最精确的条目没有任何更精确匹配时才落到0.0.0.0/0默认路由上。2.1 静态路由的匹配逻辑与Distance语义静态路由的匹配依据只有一个目的IP。数据包到达转发平面后按最长前缀匹配从路由表里找一条最精确的路由全0的0.0.0.0/0是兜底默认路由。FortiGate在GUI里把默认路由也当成普通静态路由管理位置在Network Static Routes直连路由、动态路由和静态路由共同出现在同一个逻辑视图里。每条静态路由都携带Distance属性FortiOS对静态路由的缺省Distance是10。这个值比所有主流动态协议都小意味着只要静态路由存在且下一跳可达它就会压过OSPF、RIP、BGP学到的同前缀路由。这个特性适合做出口备份或逃生通道但也容易踩坑手工写错一条静态路由动态协议学到的正确路由反而不进主路由表流量被引到错误路径。不同来源路由的缺省Distance值如下表数值越小优先级越高。路由来源缺省Distance典型用途Connected0直连接口网段不可手工修改Static10手工指定下一跳eBGP20跨AS出口OSPF110中等规模内部互联RIP120小型网络简单互联iBGP200自治域内部对等2.2 地址对象作为静态路由目标路由的目标网段除了直接写IP和掩码还能引用防火墙地址对象。在Policy Objects Addresses里创建的对象支持IP/Netmask和FQDN两种类型静态路由的目标字段可以直接下拉选择这些对象。这样做的价值不只在少敲一串字符同一个对象可以被安全策略、静态路由、策略路由共用地址规划调整时只改对象一处所有引用位置同步生效。FQDN对象要单独注意它的解析结果会随DNS响应变化。如果域名指向的IP变了静态路由表中对应的目标网段也会跟着变。排错时先确认FQDN在当前时间点的解析结果再判断路由是否符合预期否则容易把正确的动态变化误判成路由丢失。2.3 CLI配置静态路由的完整套路GUI配置静态路由足够直观但脚本化部署和批量修改时CLI更高效。典型的静态路由配置如下config router static edit 1 set dst 10.10.20.0/24 set gateway 172.25.176.1 set device port1 set distance 10 set priority 25 next enddst定义目标网段和掩码gateway是下一跳地址device是流量出去的物理端口。distance不写时取默认值10priority是静态路由特有的二次比较属性同一目的地址出现多条同Distance的静态路由时priority值越小越优先。如果两条路由的dst、gateway、device都不同但distance和priority完全相同FortiGate会把它们当ECMP成员处理两条同时进路由表做会话级负载均衡。配置完成后用下面命令确认是否进入路由表get router info routing-table static这个命令只过滤静态路由段输出比全量表清晰。如果目标网段没有出现先查物理接口link状态再查下一跳ARP是否可达顺序不要颠倒。2.4 ISDB路由与IPv6扩展互联网服务路由是静态路由的一种特殊形式它引用的不是普通地址对象而是Internet Service Database里的服务条目。ISDB由Fortinet持续维护记录了主流互联网服务常用的IP网段、协议和端口组合。配置时在静态路由界面直接选服务名再指定一个WAN接口作为出口就能把Office 365、Teams这类流量单独引到专线链路其余流量继续走默认出口。ISDB方案省掉了自建IP列表的维护工作缺点也很明显条目完全由Fortinet统一推送更新无法在本地新增自定义服务。需要在两条运营商链路上做精细化应用分流时一般优先考虑策略路由而不是ISDB。IPv6环境的静态路由不需要额外学新概念。在System Feature Visibility勾选IPv6选项后静态路由界面会同时出现IPv4和IPv6两个页签IPv6路由同样支持Distance和priority属性配置逻辑与IPv4完全一致。3. 策略路由超越目的IP的匹配与动作设计静态路由解决不了同一个目的地址、按源地址走不同出口这类需求。策略路由把匹配维度从目的IP扩展到协议、源地址、源端口、目标端口、ToS位和流入接口并且独立维护在一张策略路由表中。策略路由的优先级高于常规路由表流量只有在不匹配任何策略或匹配到stop动作时才会回到主路由表继续查找。3.1 策略路由的六维匹配条件策略路由的处理顺序是逐条从上往下执行的第一条命中的策略生效后续策略不再检查。它支持的匹配条件天然适合做应用识别和流量调度例如生产网段和办公网段走不同WAN口、视频会议流量强制走专线。各维度的匹配形式和典型场景如下匹配条件支持形式典型场景协议TCP/UDP/ICMP等语音流量定向源地址地址对象/网段生产网段与办公网段分流源端口端口范围P2P流量限速通道目标端口端口范围视频会议端口识别ToS0x00-0xffQoS标记流量引流流入接口物理接口/VLAN接口多分支接入区分ToS位是最容易被忽略的条件它不在五元组里需要上游设备在IP头里打了DSCP标记才能生效。匹配ToS时必须配合掩码使用掩码决定检查哪几位例如0x10配合掩码0xff表示只看第5位是否为1。实际配置中如果不需要ToS匹配tos和tos-mask都写0x00即可避免上游标记干扰命中。3.2 Forward与Stop两种动作的路由语义策略路由匹配成功后的动作有两种forward和stop。forward指按这条策略指定的流出接口和网关直接转发流量完全绕过主路由表stop指停止策略路由匹配流程把流量交回常规路由表处理。两者的区别在实际故障中非常明显。比如配置一条策略让某网段优先走专线专线故障导致网关不可达时forward策略会让流量直接丢弃如果把动作改成stop匹配这条策略的流量会落到静态路由或默认路由上继续转发业务不中断。动作选择要结合链路冗余设计只有一条出口时用stop相对安全多条链路且要严格绑定业务出口时用forward。3.3 一条视频会议分流策略的完整配置以STUN流量定向到专线为例策略路由的CLI写法如下config router policy edit 1 set input-device port1 set src 192.168.10.0/24 set dst 0.0.0.0/0 set protocol 17 set srcport 0-65535 set dstport 3478 set tos 0x00 set tos-mask 0x00 set output-device port3 set gateway 192.168.40.1 set action forward next end这个配置把来自192.168.10.0/24、目标端口3478的UDP流量从port3专线口发出下一跳指向192.168.40.1。protocol 17是UDPsrcport留0-65535因为STUN协商源端口不固定dstport固定3478。to s和tos-mask都写0x00表示不启用ToS匹配配置更通用。确认策略是否命中用debug flow跟踪一条UDP会话diagnose debug flow filter saddr 192.168.10.20 diagnose debug flow trace start 100debug输出中能看到会话创建时命中的策略路由ID和执行的动作是forward还是落回主表。生产环境下debug瞬间产生大量输出先收紧filter再trace start避免转发面压力过大。注意debug flow对控制平面有额外开销务必在低峰期执行并记得用diagnose debug flow trace stop关闭。4. 动态路由协议与选路属性Distance、Metric、Priority的裁决链动态路由的价值在于自动发现路径FortiGate与直连的邻居路由器交换路由信息协议自己计算最优路径路由表自学习、自管理。FortiGate支持的动态协议包括RIP、OSPF、BGP和IS-IS但GUI默认不全部展示配置前需要先打开对应功能开关。4.1 先开Advanced Routing再说动态协议FortiGate出厂GUI默认只暴露静态路由和策略路由RIP、OSPF、BGP的配置菜单被折叠原因是System Feature Visibility里的Advanced Routing选项默认关闭。勾选后路由菜单下会出现RIP、OSPF、BGP三个配置入口。IS-IS比较特殊即使开启Advanced RoutingGUI也没有对应页面只能在CLI下配置。选型建议RIP适合设备数量少、拓扑简单的网络收敛慢现在新部署很少OSPF是内部网络的主流选择基于带宽cost收敛快适合中大型园区和数据中心BGP用于跨自治域互通或多出口接入运营商能承载大规模路由表IS-IS在运营商骨干网常见企业网部署不多。4.2 三个选路属性不是并列关系FortiGate路由表里每条路由都携带Distance、Metric、Priority三个属性但三者层级不同。路由算法先看Distance它代表路由来源的可信度低者优先。如果到同一个目的地存在多条路由Distance最小的那条被激活并加载进主路由表其余来源的同前缀路由保持不活跃状态不会出现在转发路由表中。当多条同源路由的Distance相同时才轮到第二层裁决。动态路由协议使用Metric静态路由使用Priority。Metric的计算依赖协议本身RIP数hop计数OSPF基于接口带宽计算costBGP综合路径属性判断。Priority只在静态路由之间生效多条静态路由distance相同时priority最小的为最佳。三者的作用范围整理如下属性比较范围在路由算法中的作用Distance跨协议之间决定哪条路由被激活Metric同一协议内部决定协议内最优路径Priority静态路由之间决定静态路由最佳路径4.3 OSPF配置骨架FortiGate上的OSPF配置比多数厂商简洁。Advanced Routing开启后可以直接用CLI配置进程、区域和网络声明config router ospf set router-id 192.168.1.1 config area edit 0.0.0.0 config network edit 1 set prefix 192.168.1.0/24 next end next end endrouter-id必须全网唯一否则邻居关系会反复抖动。area里的network段声明哪些接口参与OSPF进程掩码决定接口归属区域。接口cost由带宽自动推导千兆口默认cost低需要手工调整时到接口下用set cost覆盖。配置完成后用get router info ospf neighbor查看邻居状态Full表示邻接建立成功卡在TwoWay或ExStart时优先检查区域ID、认证参数和MTU一致性。4.4 BGP配置骨架跨AS互联或多出口接入运营商时用BGP最小配置包括本地AS号和一个对端邻居config router bgp set as 65001 set router-id 192.168.1.1 config neighbor edit 10.0.0.2 set remote-as 65002 set next-hop-self enable next end end本地AS号必须与运营商分配的AS一致as和remote-as相同时建立的就是iBGP会话。next-hop-self在iBGP场景下使用强制把学到的路由下一跳改成自身地址避免内部路由器把流量转发到不存在的中间设备。BGP收敛依赖keepalive机制默认60秒发送一次hold时间为180秒对端链路丢包严重时可以把keepalive调小加快故障感知代价是控制平面开销增加。4.5 静态与动态冲突时的仲裁顺序同一条目标网络同时出现在静态路由和OSPF里时FortiGate不会报错路由算法直接比较Distance静态默认10OSPF默认110静态胜出OSPF那条变为非活跃路由。删除静态路由后OSPF路由立刻激活无需重启任何服务。这个机制在割接时非常实用可以预先写好静态路由作为逃生通道验证后再按需删除。BGP这里有个容易被误解的点FortiOS对eBGP的缺省Distance是20iBGP是200两者相差很大。静态的10仍然优先于eBGP的20但iBGP的200比静态大所以静态路由会优先。排查BGP明明学到了路由却不进表时先看对端是eBGP还是iBGP再对照Distance大多数问题出在这一层。5. 路由监视器与ECMP验证路径、读路由表、清会话排错路由配置完成后最终判断标准是转发路径是否符合预期。FortiGate的路由监视器只显示活跃路由策略路由和ISDB路由在单独页签中查看CLI则通过routing-table命令直接输出内核路由表。掌握输出格式和会话刷新机制能省掉大量无效排查时间。5.1 一眼看懂get router info routing-table all典型的路由表输出如下get router info routing-table all S* 0.0.0.0/0 [10/0] via 172.25.176.1, port1 O 10.200.2.0/24 [110/2] via 192.167.1.130, port2 C 10.200.3.0/24 is directly connected, port3 B 10.250.2.0/24 [200/0] via 10.200.3.1, port3 S 192.168.1.0/24 [10/0] via 192.167.1.130, port2, [25/0]行首字母表示路由来源S是静态、O是OSPF、C是直连、B是BGP带*号表示该条路由处于活跃状态。方括号里前一个数字是Distance后一个是Metric。最后一条静态路由后方的[25/0]是Priority仅静态路由会显示。GUI的Routing Monitor里Metric默认隐藏需要右键表头手动勾选Priority同样要通过列设置调出。5.2 ECMP生效的三个前提ECMP让多条等价最优路径同时进入路由表实现链路冗余和会话级负载均衡。生效必须同时满足三个条件目标网段相同、Distance相同、Metric相同。对静态路由来说Metric换成了Priority所以priority也要一致。满足条件后FortiGate在会话建立时用哈希算法选择一条路径会话内所有包固定走这条链路不会出现单会话跨链路乱序的问题。路由示例DistancePriority是否进入ECMPvia 192.168.1.1100是via 192.168.2.1100是via 192.168.3.11010否优先级更低ECMP按会话哈希不按包哈希所以单条大流量长连接只会固定占用一条链路不要指望单会话能把带宽聚合翻倍。5.3 路由表变更后的会话刷新技巧路由表变化后旧会话的路径不会立刻切换。FortiGate在路由表变更时从会话中刷新路由信息要求相关会话重新执行路由查找这个过程是增量的。修改了静态路由却发现既有连接仍在走旧链路可以手动定向清除execute router clear session all这个命令会中断所有已建会话生产环境慎用。更安全的方法是先定位会话再判断diagnose sys session filter host 192.168.10.20 diagnose sys session list输出里能看到当前会话的出口接口和NAT后的源地址把它和路由表里的下一跳对比能立刻分辨是配置错误还是会话滞留。如果是会话滞留只清除对应会话即可不必全表刷新。本文还有配套的精品资源点击获取
上一篇/下一篇内容由系统自动关联
返回资讯列表 →