
1. 项目背景与整体设计思路1.1 为什么选择大规模路由综合实验作为练手项目网络工程这个行当有个很尴尬的现实平时工作中接触到的网络规模要么太小——就几台交换机跑个VLAN要么太大——现网设备你根本不敢随便动。真正能让你放开手脚、把路由协议从头到尾折腾一遍的环境其实很难得。H3C大规模路由综合实验就是填补这个空白的——它在一个模拟环境里搭出一张包含多区域OSPF、BGP自治系统互联、路由重分发、策略路由、路由过滤等核心技术的完整网络拓扑让你能像搭积木一样把平时零散学到的知识点串成一条线。这个实验的核心价值在于“综合”两个字。单独配一个OSPF区域大部分人看两小时文档就能搞定单独跑一个BGP邻居也不算太难。但当这两者要在同一张网里协同工作还要处理重分发时的环路风险、路由策略的优先级冲突、次优路径的消除问题就成倍冒出来了。我见过不少朋友OSPF单域玩得很溜一到多域加BGP的场景就各种翻车根子就在于缺少一个把技术点串起来的综合训练。这个实验适合谁有一定网络基础、学过路由协议基本概念、想从“会配”进阶到“会设计”的从业者。不管你是准备考证、准备面试还是工作中要接手更复杂的网络架构这个实验都能帮你把知识体系从点连成面。1.2 整体拓扑架构与协议选型逻辑这个实验的拓扑设计遵循一个原则模拟一个企业总部加多个分支再通过ISP互联到外部网络的典型场景。整个拓扑大致分成三个层次。第一层是核心区域由三到四台路由器组成OSPF骨干区域Area 0负责整个企业内部网络的快速收敛和路由汇总。骨干区域里跑OSPF的好处是收敛快、区域间路由可控而且H3C设备对OSPF的支持非常成熟配置起来也直观。第二层是分支区域每个分支路由器作为一个OSPF非骨干区域比如Area 1、Area 2通过ABR区域边界路由器与骨干区域相连。这里选择多区域OSPF而不是单区域核心考量是路由表规模控制——分支多了以后如果不做区域划分每台路由器都要维护全网明细路由设备负担会很大。多区域设计配合路由汇总能把分支的明细路由屏蔽掉骨干区域只看到汇总路由。第三层是外部互联通过一台边界路由器与模拟的ISP路由器建立BGP邻居实现企业内网与外部网络的互通。为什么用BGP而不是静态路由因为真实场景中企业出口往往需要接收来自ISP的大量路由条目静态路由根本维护不过来。BGP的路径属性和选路机制能让你精细控制流量的出入口这是静态路由做不到的。协议选型的另一个关键点是路由重分发。OSPF域内路由要传给BGPBGP学到的外部路由也要引入OSPF这就涉及双向重分发。重分发是整张网最容易出问题的地方——环路、次优路径、路由反馈几乎都跟它有关。实验里专门设计了重分发场景目的就是让你踩一遍这些坑知道怎么用路由标记、分发列表、前缀列表来兜底。1.3 实验目标与能力映射做完这个实验你应该能达到几个具体目标。第一能独立规划一个多区域OSPF网络包括区域划分、ABR选点、路由汇总设计。第二能配置和维护BGP邻居关系理解EBGP和IBGP的区别会用BGP路径属性做基本的选路控制。第三能安全地实施路由重分发知道怎么用route-map和filter-policy防止环路。第四能通过策略路由和路由策略实现流量的精细化控制。这些能力映射到实际工作中对应的就是企业网络改造、多站点互联、出口链路优化这些常见任务。说白了这个实验不是让你背命令而是让你建立一套“遇到复杂网络怎么拆解、怎么设计、怎么排错”的方法论。2. 核心细节解析与实操要点2.1 OSPF多区域配置的关键参数与避坑指南OSPF多区域配置看起来简单但有几个参数如果设错网络要么起不来要么起来后各种诡异问题。Router ID的规划是第一道坎。很多人习惯用Loopback0的地址作为Router ID这没问题但要注意Loopback0必须提前配好并且UP否则OSPF进程起不来。我建议在实验开始前先把所有路由器的Loopback0地址规划好写在一张表里后面配BGP的时候也会用到。区域划分有个基本原则骨干区域必须是Area 0所有非骨干区域必须直接或通过虚链路与Area 0相连。实验里我一般把核心路由器放在Area 0分支路由器分别放在Area 1和Area 2。ABR要同时属于Area 0和分支区域配置的时候注意在ABR的接口上分别宣告进对应的区域。路由汇总是多区域OSPF的精髓。在ABR上用abr-summary命令对分支区域的明细路由做汇总。比如Area 1里有多个连续子网可以在ABR上汇总成一条大网段。汇总的好处是减少骨干区域的路由条目但要注意汇总后如果明细路由有变化汇总路由不会自动撤销可能导致黑洞。解决办法是在ABR上配置abr-summary时加上not-advertise或者配合filter-policy做精细控制。STUB区域和NSSA区域的选择也值得说。如果分支区域不需要接收外部路由比如不需要访问ISP可以配成STUB区域减少LSA数量。如果分支区域有外部路由引入需求但又不想接收其他区域的外部路由就配成NSSA。实验里我建议至少配一个STUB区域和一个NSSA区域把这两种特殊区域的配置都练一遍。注意OSPF的network命令宣告的是接口网段不是接口地址。很多人第一次配的时候写成接口IP结果邻居起不来。记住宣告的是网段比如network 10.1.1.0 0.0.0.255。2.2 BGP邻居建立与路径属性调优BGP是这个实验里最“娇气”的协议。邻居建立不起来的原因五花八门我列几个最常见的。EBGP邻居要求直连默认TTL为1。如果两台路由器之间隔了设备需要配peer ebgp-max-hop。实验里边界路由器和ISP路由器是直连的所以不需要改TTL。IBGP邻居不要求直连但要求全互联或者用路由反射器。实验里IBGP邻居数量不多我建议先配全互联把基础打牢再尝试用路由反射器优化。BGP的更新源是个容易忽略的点。如果两台路由器之间有多条链路BGP默认用出接口地址建立邻居链路一断邻居就断。解决办法是用peer connect-interface Loopback0指定用Loopback0作为更新源同时配peer ebgp-max-hop增加TTL。这样只要Loopback0可达BGP邻居就不会断。路径属性的调优是BGP选路的核心。实验里我一般会设计几个场景用local-preference控制出方向流量用med控制入方向流量用as-path做备份链路。比如企业有两条出口链路主链路用高local-preference备链路用低local-preference正常情况下流量走主链路主链路断了自动切备链路。BGP路由汇总用aggregate-address命令。汇总后如果想让明细路由也发布出去加detail-suppressed参数抑制明细。但要注意BGP汇总不会自动生成汇总路由的AS_PATH需要手动配as-set参数否则可能引起环路。2.3 路由重分发的安全机制与策略设计路由重分发是整张网最危险的操作。OSPF和BGP互相引入的时候如果不加控制很容易形成路由反馈——OSPF学到的路由引入BGPBGP又把它引回OSPF环路就出来了。单向重分发是最安全的做法。如果只需要内部访问外部就在边界路由器上把OSPF路由引入BGPBGP路由不引入OSPF内部路由器通过默认路由访问外部。实验里我建议先做单向重分发把基础连通性跑通再尝试双向重分发。双向重分发必须配合路由标记。在OSPF引入BGP的时候用route-map给引入的路由打上标记比如tag 100然后在BGP引入OSPF的时候用route-map拒绝带tag 100的路由。这样就能防止路由在两个协议之间来回反弹。分发列表和前缀列表是精细控制的工具。比如只允许特定网段重分发或者只拒绝某些明细路由。前缀列表比ACL更直观支持掩码匹配我建议优先用前缀列表。提示重分发的时候一定要在边界路由器上配default-route-advertise或者default-route originate否则内部路由器可能没有默认路由访问外部网络会断。2.4 策略路由与路由策略的区别与配合很多人分不清策略路由PBR和路由策略Route-Policy。简单说策略路由是“基于什么条件把包从哪个接口发出去”它作用于数据平面路由策略是“基于什么条件把路由条目引入或发布出去”它作用于控制平面。实验里我会设计一个场景企业有两条出口链路一条走高速链路一条走普通链路。要求是办公网段的流量走高速链路访客网段的流量走普通链路。这个需求用策略路由实现——在边界路由器的内网接口上配PBR匹配源地址分别指定下一跳。路由策略则用在重分发和BGP邻居上。比如只把办公网段的路由发布给ISP访客网段的路由不发布。这个用filter-policy export配合前缀列表实现。两者配合使用才能实现完整的流量控制。策略路由管“怎么走”路由策略管“让谁知道”。实验里把这两个都练一遍你对流量工程的理解会上一个台阶。3. 实操过程与核心环节实现3.1 基础环境搭建与IP地址规划动手之前先把IP地址规划表做出来。我一般用Excel拉一张表列出每台路由器的每个接口地址、Loopback地址、所属区域、所属协议。这张表后面配置的时候会反复用到比临时想地址靠谱得多。实验拓扑我建议用四台路由器模拟企业内网一台路由器模拟ISP。企业内网路由器分别命名为R1、R2、R3、R4ISP路由器命名为R5。R1和R2在Area 0R3在Area 1R4在Area 2。R1作为边界路由器与R5建立EBGP邻居。IP地址规划遵循一个原则按区域和功能划分网段。比如Area 0的互联地址用10.0.0.0/24Area 1用10.0.1.0/24Area 2用10.0.2.0/24Loopback地址用10.1.x.x/32ISP互联地址用200.1.1.0/30。这样规划的好处是看到地址就知道大概在哪个区域排错的时候很方便。配置的时候先配接口地址和Loopback确认直连能通。然后配OSPF确认邻居能起来。再配BGP确认邻居能建立。最后做重分发和策略。这个顺序不要乱一步一步来每步验证通过再往下走。3.2 OSPF多区域配置实操先配R1的OSPF。R1是ABR同时属于Area 0和Area 1。配置如下ospf 1 router-id 10.1.1.1 area 0.0.0.0 network 10.0.0.0 0.0.0.255 network 10.1.1.1 0.0.0.0 area 0.0.0.1 network 10.0.1.0 0.0.0.255R2在Area 0配置类似。R3在Area 1配置的时候只宣告Area 1的网段。R4在Area 2只宣告Area 2的网段。配完之后用display ospf peer检查邻居状态应该是Full。用display ospf routing检查路由表Area 0的路由器应该能看到Area 1和Area 2的路由。然后在R1上做路由汇总。假设Area 1里有10.0.1.0/24和10.0.1.1/24两个网段可以在R1上汇总成10.0.1.0/23ospf 1 area 0.0.0.1 abr-summary 10.0.1.0 255.255.254.0汇总之后Area 0的路由器看到的就是一条汇总路由明细路由被屏蔽了。用display ospf routing验证一下。3.3 BGP邻居建立与路由发布实操R1和R5之间建立EBGP邻居。R1的配置bgp 100 router-id 10.1.1.1 peer 200.1.1.2 as-number 200 peer 200.1.1.2 connect-interface GigabitEthernet0/1 address-family ipv4 unicast peer 200.1.1.2 enable network 10.0.0.0 255.255.0.0R5的配置类似AS号是200peer指向R1的接口地址。配完之后用display bgp peer检查邻居状态应该是Established。然后用display bgp routing-table检查BGP路由表R1应该能看到自己发布的10.0.0.0/16路由。如果邻居起不来先检查直连能不能通再检查AS号对不对再检查更新源和TTL。EBGP邻居默认TTL是1如果中间有设备需要配peer ebgp-max-hop。3.4 路由重分发与策略控制实操在R1上做OSPF到BGP的重分发。先配一个route-map给引入的路由打上tag 100route-map OSPF-to-BGP permit 10 set tag 100 bgp 100 address-family ipv4 unicast import-route ospf 1 route-map OSPF-to-BGP然后在R1上做BGP到OSPF的重分发拒绝带tag 100的路由route-map BGP-to-OSPF deny 10 match tag 100 route-map BGP-to-OSPF permit 20 ospf 1 import-route bgp route-map BGP-to-OSPF这样就能防止路由在两个协议之间反弹。配完之后用display ospf routing和display bgp routing-table检查路由表确认没有环路。3.5 策略路由配置与验证在R1的内网接口上配策略路由让办公网段走高速链路访客网段走普通链路。假设办公网段是10.1.10.0/24访客网段是10.1.20.0/24高速链路下一跳是200.1.1.2普通链路下一跳是200.1.2.2。acl number 3000 rule 10 permit ip source 10.1.10.0 0.0.0.255 acl number 3001 rule 10 permit ip source 10.1.20.0 0.0.0.255 policy-based-route PBR permit node 10 if-match acl 3000 apply next-hop 200.1.1.2 policy-based-route PBR permit node 20 if-match acl 3001 apply next-hop 200.1.2.2 interface GigabitEthernet0/0 ip policy-based-route PBR配完之后用tracert从办公网段和访客网段分别测试确认流量走了不同的出口。4. 常见问题与排查技巧实录4.1 OSPF邻居起不来的排查思路OSPF邻居起不来按这个顺序查先看接口状态是不是UP再看Hello包能不能通再看区域ID和认证是不是匹配最后看网络类型是不是一致。最常见的坑是network命令宣告错了。比如接口地址是10.0.0.1/24你宣告network 10.0.0.1 0.0.0.0这样只有这个地址参与OSPF接口上其他地址不参与。正确做法是宣告网段network 10.0.0.0 0.0.0.255。另一个坑是MTU不匹配。如果两台路由器之间的MTU不一样OSPF邻居可能卡在ExStart状态。解决办法是在接口上配ospf mtu-enable或者把MTU改成一致。4.2 BGP邻居卡在Active或Connect状态的排查BGP邻居卡在Active状态说明本端在等对端发起连接通常是对端没配或者对端不可达。卡在Connect状态说明本端在尝试建立TCP连接但没成功通常是网络不通或者端口被挡。排查步骤先ping对端地址确认三层可达。再telnet对端179端口确认TCP端口开放。再检查peer配置的AS号对不对connect-interface是不是指定了正确的接口。如果都对检查是不是有ACL挡了179端口。提示H3C设备上可以用display tcp status查看TCP连接状态确认BGP的179端口有没有在监听。4.3 路由重分发环路与次优路径的排查重分发环路的表现是路由表里出现自己发布出去的路由或者路由的AS_PATH里出现自己的AS号。排查方法是display bgp routing-table看AS_PATH如果看到自己的AS号说明环路已经形成。解决办法就是前面说的路由标记加route-map过滤。另外在OSPF引入BGP的时候可以用import-route bgp配合route-map只引入特定路由不要全量引入。次优路径的表现是流量绕了一圈才到目的地。排查方法是tracert看路径对比路由表的下一跳。解决办法是用local-preference或者med调整路径优先级。4.4 常见问题速查表问题现象可能原因排查命令解决办法OSPF邻居卡在InitHello包单向可达display ospf peer检查接口ACL和链路OSPF邻居卡在ExStartMTU不匹配display interface配ospf mtu-enableBGP邻居卡在Active对端未配或不可达ping、display bgp peer检查对端配置和路由BGP邻居卡在ConnectTCP端口被挡telnet179检查ACL和防火墙路由环路重分发未过滤display bgp routing-table配route-map打tag过滤次优路径路径属性未调优tracert调local-preference或med策略路由不生效ACL匹配错误display acl检查ACL规则和接口应用4.5 实操心得与避坑建议第一个心得配置之前一定要做地址规划表不要临时想地址。我见过太多人配到一半发现地址冲突回头改的时候牵一发动全身。第二个心得每配完一个协议就验证一次不要全配完再验证。OSPF配完验证OSPFBGP配完验证BGP重分发配完验证重分发。这样出问题的时候能快速定位是哪一步出的错。第三个心得重分发的时候一定要加route-map哪怕你觉得不会出环路。我踩过的坑就是觉得拓扑简单不会环路结果BGP学到的默认路由引入OSPFOSPF又引回BGP整个网络的路由表全乱了。第四个心得策略路由的ACL要写精确不要用any。我见过有人配PBR的时候ACL写rule permit ip结果所有流量都走了策略路由正常的路由转发全废了。第五个心得实验做完之后把配置导出来存好。下次做类似实验的时候可以直接参考不用从头再来。H3C设备上用display current-configuration导出配置保存成文本文件。第六个心得多关注display命令的输出。排错的时候display ospf peer、display bgp peer、display ip routing-table这三个命令能解决80%的问题。剩下的20%用debugging命令但生产环境慎用debug实验环境随便用。这个实验我前前后后做了三遍第一遍照着文档配第二遍自己规划拓扑配第三遍故意制造故障再排错。每一遍都有新收获。网络工程这个东西光看文档不行必须动手。动手的时候犯错越多记得越牢。