前阵子带新人做练习我布置了一道很基础的题两个企业连接公网。一个用固定公网IP的专线接入一个用PPPoE拨号接入。新人一开始觉得简单真配起来却状况百出——有的内网能互访但出不了网有的出网了但外面访问不了服务器有的拨号拨上了却一传大文件就断。这道题看着基础实际上把默认路由、NAT转换、地址规划、拨号链路、故障排查这些知识点全串起来了。今天就把这道题完整拆开从拓扑设计到每一条配置按我在实际练手时验证过的顺序讲一遍。不管你是刚学数通准备考证还是在企业里负责网络运维照着做一遍收获会比单纯背命令大得多。1. 这道练习题练的是什么两个企业、两条出口链路1.1 为什么要把两个企业放进同一道题很多人练出口配置喜欢只搭一台路由器、配一个NAT完事。那种做法练完容易忘因为太单一了。我把这道题设计成两个企业核心思路是做对比A公司走专线运营商分配了固定公网IPB公司走宽带拨号公网地址是动态获取的。这两种接入方式正好覆盖了现实中中小企业的绝大多数出口场景。固定IP专线的特点是对接关系简单运营商给你一个互联地址段和一段业务地址你配好路由和NAT就能用对外发布服务器也方便因为公网地址不变。PPPoE拨号的特点是成本低、开通快但地址是动态的IP变了NAT映射就要跟着变而且拨号链路本身比专线多一层协商过程多出不少坑。把两个企业放一起练你就能同时体会到这两种模式的差异而不是只会配其中一种。练这道题还有个好处两个企业内部网络独立但都汇聚到同一个模拟公网里。这样你可以站在运营商视角去观察两个企业的数据流怎么走排查问题的时候能同时看到两个方向思路会比单企业练习开阔得多。1.2 完整拓扑与业务需求我用的拓扑很简单但每个节点都有意义。两个企业各有一台出口路由器内部各有一台PC和一个服务器模拟公网区域用三台路由器组成一个小型网络一台模拟A公司对端的运营商边缘设备一台模拟B公司对端的运营商边缘设备中间一台模拟公网核心节点。公网核心节点上放一个环回口地址当作公网上的目标主机用来做连通性验证。A公司的业务需求有两类一是内网员工要正常访问公网二是内部有一台Web服务器需要对外提供服务。这两类需求分别对应出站NAT和入站静态映射是固定IP场景下最典型的两件事。B公司这边需求简单一些主要是员工上网外加拨号成功后NAT要正常工作。业务需求不用复杂练的是意识出口设备上哪些流量要转换、转换的时候用什么地址、回程流量怎么走。1.3 实验环境怎么搭这道题用eNSP或GNS3都能做真实设备也可以只要有三台以上路由器加上两台PC的模拟就行。我个人习惯用eNSP因为华为命令在练习和实际工作中用得多。如果你手边是思科设备思路完全一样命令稍微不同不影响练核心逻辑。还有个建议拓扑里一定要留出运营商侧的路由器不要用一台设备模拟全部公网。很多练习简化到一台路由器又当地址池又当运营商结果排错的时候什么都看不出来。隔离出运营商侧你才能学到一个关键动作——从运营商视角ping企业出口地址判断问题出在企业内部还是公网链路。这在真实故障处理里是最值钱的能力。2. 动手配置前先画三张地址表规划不到位排错跑断腿2.1 私网地址、互联地址、公网地址怎么分我在带新人时发现多数人配置前不画表直接上手敲命令敲到哪算哪。这种做法在单机练习时还行一旦企业数量多、链路多地址冲突和路由错乱几乎是必然的。所以这道题第一步不是配置是先把三类地址分清楚。第一类是内网私网地址。A公司我用192.168.10.0/24B公司用192.168.20.0/24两个网段分开避免互为对方网关模拟器里出现路由困惑。A公司Web服务器固定为192.168.10.10网关指向出口路由器的内网接口192.168.10.1。B公司PC终端为192.168.20.10网关192.168.20.1。私网段只要不冲突随便规划都行关键是养成内网段独立、网关地址固定的习惯。第二类是运营商互联地址。A公司专线接入运营商边缘设备一侧我设成203.0.113.1/30A公司出口路由器一侧为203.0.113.2/30。这个段是点对点链路前两个可用地址就够了。B公司走PPPoE不手工配互联IP地址由运营商地址池下发的这一块地址规划体现在运营商侧我在PPPoE服务器上划一个地址池203.0.113.64/26B公司拨号成功后动态获得其中一个地址。第三类是业务公网地址。A公司因为对外提供服务需要一段业务地址运营商分配了203.0.113.8/29共8个地址扣除网络地址和广播地址可用6个。其中203.0.113.9作为出口NAT的出接口业务地址203.0.113.10作为Web服务器的静态映射地址。这一段的规划直接决定了后面NAT怎么配因为出站NAT和入站映射都用它做转换载体。2.2 为什么要用文档测试地址段模拟公网细心的朋友会发现我上面所有公网地址都落在了203.0.113.0/24这个段里。这不是偷懒是刻意选的文档测试地址段。RFC 5737专门预留了三段地址用于文档和教学203.0.113.0/24就是其中之一。用这种地址的好处是不用去背真实公网地址也不用担心模拟器里的地址跟现实业务冲突实验效果却和真实公网完全一致。很多教材用10.0.0.0/8私网地址模拟公网我不太推荐。私网和公网路由行为虽然技术上没区别但容易让新人形成错误观念觉得公网地址和私网地址可以随便混用。你练这道题时把运营商边缘、地址池、业务段全放在203.0.113.0/24里逻辑上就和真实运营商的分配行为对上了。2.3 路由与NAT的关系一张数据流向图先想明白配置之前一定先把数据流向在脑子里走一遍否则你不知道NAT该加在哪一步。A公司员工PC访问公网主机时数据包是这样走的PC源地址192.168.10.5发到网关192.168.10.1出口路由器查路由表发现默认路由指向运营商互联下一跳203.0.113.1于是把包从WAN口转出去。但在转出去之前路由器检查NAT配置发现内网源地址匹配ACL就把它转换成203.0.113.9产生一条会话记录然后才发往外网。回程包到路由器时路由器根据会话记录反查把目的地址203.0.113.9换回192.168.10.5再根据直连路由转给内网PC。整个过程里路由是能不能到NAT是到了之后以什么身份出现。多少人配置完上不了网都是因为默认路由有了但NAT漏了或者NAT有了但路由只写了一半到内网。这两件事是配合关系不是二选一。3. A公司实操固定公网IP专线场景的出口配置3.1 先打通三层链路互联IP与默认路由A公司的配置从WAN口开始。进入出口路由器先给运营商互联接口配上IP地址203.0.113.2/30再给内网接口配上192.168.10.1/24。内网PC接在同一台路由器上这个配置就算简单链路通了。但此时PC只能到网关上不了公网因为路由器上还没有指向外部的路由。接着加默认路由。华为体系里命令是ip route-static 0.0.0.0 0.0.0.0 203.0.113.1意思是所有目的地址不在路由表里的流量统一扔给运营商边缘设备。这一条配上路由器才真正具备出口的资格。我在练手时习惯立刻在WAN口ping一下对端203.0.113.1确认三层链路是通的再往下走。这个动作很快却能提前排除物理和IP配置问题省得后面排查NAT时怀疑链路。提示默认路由的下一跳一定写运营商边缘设备和你互联的那一侧地址不要写成运营商边缘设备后背网段的地址。这个错误很隐蔽——链路本身通但数据包发出后回不来因为运营商设备上没有到那个地址的直连路由。3.2 出站NAT让内网全员能上网三层链路通了内网PC依然上不了网原因很直接内网PC的源地址是192.168.10.5这是私网地址运营商侧路由器收到后根本没有去往私网段的路由直接丢弃。NAT的作用就是把私网源地址替换成一个公网可达地址让运营商设备不再犯难。华为路由器上用两次配置配合完成这件事先定义一个ACL把需要转换的内网网段匹配出来然后在WAN口上把这个ACL绑定到出站NAT。基本配置是acl number 2001 rule 5 permit source 192.168.10.0 0.0.0.255 interface GigabitEthernet0/0/0 nat outbound 2001 address-group 1 nat address-group 1 203.0.113.9 203.0.113.9这里有个经验地址组里只有一个地址203.0.113.9因为A公司分到的业务地址也只有6个而员工上网几十人公网地址不够一一对应怎么办靠端口复用。路由器把不同内网PC的源端口拆开映射到同一个公网地址的不同端口上这就是PAT。用一个公网地址带着几十人上网在真实企业里也完全够用前提是地址组不要设成独占模式否则一个用户会尝试占满整个地址反而浪费。3.3 入站映射把内网Web服务器发布到公网员工上网解决了还要让外面的人能访问到内部Web服务器。服务器在192.168.10.10对外地址用203.0.113.10。这属于入站方向和出站NAT不一样外部用户发起访问203.0.113.10的80端口路由器要把这个目的地址转换成192.168.10.10的80端口再转给内网。华为路由器上用nat server实现interface GigabitEthernet0/0/0 nat server protocol tcp global 203.0.113.10 80 inside 192.168.10.10 80这一条命令相当于在出口路由器上挂了一条反向转发规则。外部流量到达203.0.113.10:80时路由器自动变换目的地址为192.168.10.10:80再按内网路由发给服务器。服务器的回程流量到达路由器后路由器根据会话反查把源地址变回203.0.113.10发给外部请求方。这里有一个最容易翻车的细节服务器的网关必须正确指向出口路由器的内网口192.168.10.1。如果服务器网关配成了别的地址回程流量到不了路由器NAT会话就建不起来外面怎么访问都不通。我见过不少人配置命令一字不差最后就栽在服务器的网关设置上。3.4 配置完成后的三个验证点A公司配置完成后不要急着说配完了做三个验证。第一内网PC ping公网主机203.0.113.100通了说明出站NAT和默认路由没问题。第二在公网主机上ping A公司的业务地址203.0.113.10通了说明入站静态映射的会话方向是正常的。第三打开浏览器访问http://203.0.113.10能看到内网服务器的页面说明80端口映射完整生效。第三条尤其重要。ping通只能证明ICMP协议被转换了HTTP协议还要走TCP 80端口ALG处理和会话表项都有独立逻辑。把访问真实页面作为验收标准比只看ping通过硬得多。我在练习时还会在出口路由器上敲display nat session看当前活跃的转换会话。如果能看到内网PC和公网的映射关系说明NAT不是只在配置里存在是真的在转发数据。4. B公司实操PPPoE拨号场景的配置与两个绕不开的坑4.1 拨号链路怎么建Dialer接口与地址协商B公司走PPPoE拨号首先得理解它和专线的区别。专线是物理链路配IP直接通PPPoE则是在物理链路上先建立会话再通过会话协商获得IP地址。也就是说B公司出口路由器不手工配WAN口地址而是通过拨号从运营商侧自动获取。华为路由器上配置PPPoE拨号核心是Dialer接口。先把拨号要用的用户名密码配好建立Dialer接口指定拨号链路绑定到物理口然后通过ppp-negotiate让接口地址从运营商动态获取。主要配置如下interface Dialer1 link-protocol ppp ppp chap user bcompany ppp chap password cipher 密码 ip address ppp-negotiate dialer user bcompany dialer bundle 1 interface GigabitEthernet0/0/0 pppoe-client dial-bundle-number 1这段配置的含义是物理口通过PPPoE客户端绑定到Dialer1所有拨号协商都在Dialer1上完成协商成功后Dialer1会拿到一个运营商下发的IP地址。这个地址不需要你关心具体是多少但它决定了后面NAT要挂在哪。B公司内网口配192.168.20.1/24后默认路由指向Dialer1即可ip route-static 0.0.0.0 0.0.0.0 Dialer1。4.2 MTU这口锅为什么大包不通、小包正常PPPoE练习里最容易遭遇的诡异故障网页能打开但下载稍大文件就卡住或者ping小包全通、ping大包全丢。问题十有八九出在MTU上。普通以太网帧的MTU是1500但PPPoE拨号时物理层之上多了8字节的PPPoE头部开销链路实际能承载的最大报文就变成了1492。如果路由器WAN口默认MTU还是1500报文发出前会被分片而很多运营商链路对分片报文不友好就会造成大包丢失。解决方案很直接把WAN口所在的Dialer接口MTU改成1492同时内网PC上如果手动设置了MTU也要一起改成1492。用ping -s 1500 -f 这个测试可以快速验证如果报DF bit set和需要分片提示说明路径MTU过小问题就锁定了。我曾见过有人为了消灭分片问题憋了一下午又是排查路由又是检查交换机最后只是把这个8字节的差值补上就好了。这道题的B公司部分必须把这个坑完整走一遍以后你就知道网络上看起来一切正常但大流不稳定时该怀疑什么。4.3 路由联动与动态NAT拨号场景的收尾工作B公司还有一个和A公司截然不同的细节默认路由指向的是Dialer1接口不是固定IP下一跳。这说明路由是跟着拨号链路状态走的——链路在路由在链路断路由消失。这个特性很有用拨号掉线时路由器会自动丢弃那些本来要发往公网的流量而不是把它们丢进一个黑洞。我见过有人配拨号链路时默认路由写成了运营商分配地址的下一跳链路重新拨号后地址变了旧路由变成废纸业务直接全断。用出接口做下一跳是拨号场景更稳妥的写法。NAT配置也要挂在Dialer接口上。因为B公司公网地址是动态获取的没法像A公司那样固定写一个地址组直接用接口IP做转换最合适acl number 2001 rule 5 permit source 192.168.20.0 0.0.0.255 interface Dialer1 nat outbound 2001配置里没有指定地址池表示复用Dialer1接口拨号后得到的地址。这样做的好处是不管运营商这次下发的是203.0.113.66还是别的什么地址NAT都能跟着接口地址自动适配不需要每次拨号后去改配置。这也是Easy IP这类做法的核心逻辑动态地址场景下让设备自己跟着接口走。5. 从运营商侧回看整张网连通性验证与四层排错思路5.1 在公网模拟区发起主动探测整张网配置完把视角切到运营商侧。公网核心路由器上有个环回口地址203.0.113.100模拟公网上的目标服务器。从它去ping两个企业的公网地址可以同时验证很多事ping A公司203.0.113.10通说明Web服务器的入站映射链路正常ping A公司203.0.113.9通但打不开网页说明问题可能出在80端口映射或者服务器本身ping B公司拨号后的动态地址通说明PPPoE会话和路由都健康。注意一点ping公网地址和访问业务是两个层面。公网侧能ping通203.0.113.10只代表出口路由器对ICMP做了回应不代表Web服务正常。真实排错中我习惯在公网侧先用ping确认三层可达再用TCP端口测试确认四层服务最后才让客户端访问完整业务。这样一层一层排除永远不会面对整个页面打不开不知道问题在哪的窘境。5.2 内网不通公网时的排查顺序两个企业都有可能出现内网通、外网不通的情况。我总结了一套固定排查顺序照着走基本不会漏从内网PC ping出口路由器内网口地址验证PC到网关这一段。不同查网线口和接口状态。从出口路由器ping运营商对端地址验证上行三层链路。不同查WAN口地址、默认路由。从出口路由器ping公网目标地址验证外部路由是否真的存在。不同查运营商侧路由或模拟公网区路由。从内网PC ping公网目标地址验证NAT是否生效。此时不同基本就是NAT漏配或ACL没匹配到内网段。每走一步都先缩小一半范围。尤其第二步和第三步能区分问题在链路侧还是路由侧。经验少的同事遇到外网不通第一反应就是改NAT其实超过一半时候NAT根本没毛病反而是一跳默认路由写错了位置。5.3 三个真实翻车案例复盘我拿这道题带人的时候有几个翻车案例值得单独说。案例一A公司员工能ping通网关但访问公网超时。查设备默认路由没配。同事以为配置了内网网关就等于配了出口完全没理解出口路由是独立的一件事。加上默认路由后立即恢复。这个案例几乎每个新人都会重复因为它暴露出对路由表基本逻辑的忽略。案例二A公司外部访问Web服务器不通但配置命令看着一点问题没有。最后发现在内网服务器上访问网关192.168.10.1都不通服务器网关设成了192.168.10.254整台内网交换机没有这个地址。回程包全丢了。网关错误往往表现为入口能通、回程不通因为入站NAT把包交给了服务器服务器却不知道该把回包交到哪儿。案例三B公司员工上网一切正常一到传输大文件就断流或极慢。查了半天MTU没改Dialer接口还是1500。改成1492后立刻正常。这类问题不会在ping小包时暴露只有长时间跑大流量时才会被注意到所以验证时一定要测大包不能只测能通就算完事。6. 练完这道题下一步可以往哪儿走6.1 出口安全策略NAT之外还要做什么练习里NAT完成了地址转换但真实生产环境的出口设备不会只做NAT就结束。A公司既然发布了Web服务器就应该考虑是不是只把80/443端口放进来其他入站全部拒绝华为设备上可以通过入站ACL配合nat server一起控制也可以在服务器侧用策略再收一道。这一步练习里不是必须的但做一下能帮你建立出口设备是安全边界的认知。B公司拨号场景也一样员工虽然只上网但出站流量也不能完全不设防。内网一台PC中了恶意程序向外扫描出口如果没有任何限制风险就会扩散到整个内网。哪怕只是加一条仅允许内网访问目标端口80/443的策略练习的含金量都会上一个台阶。6.2 双出口与自动切换从单链路到高可用练完单链路后可以再往生产环境想一步如果这条出口断了怎么办更接近真实的做法是加一条备用链路两条默认路由一条优先级高、一条优先级低配合NQA检测运营商对端地址。主链路断了NQA探测失败走高优先级的默认路由自动消失流量切到底优先级的备用路由上。这个机制理解透了再看企业双线接入就不再神秘无非是在这道练习基础上多加了NQA和路由优先级。6.3 一份自检清单判断自己是否真的练完了最后给你一份我反复用来自检的清单。每完成一项就在纸上打个勾两个企业的内网段互不冲突网关地址明确A公司默认路由下一跳写的是互联对端地址不是随意地址A公司员工出站流量能通过NAT正常转换A公司外部Web访问通过入站静态映射正常打开服务器网关正确回程流量不丢B公司PPPoE拨号成功Dialer接口获取到运营商地址B公司默认路由指向Dialer接口且拨号断开时路由自动消失B公司MTU从1500改成1492大包测试通过模拟公网区能从运营商侧看到两个企业的路由和NAT行为清单上的每一项看起来都不难但全部通过说明你已经把企业出口从配置到排错的闭环走通了。这道题自己反复练过几遍之后再看真实企业的网络拓扑很多曾经觉得混乱的出口结构都会变得一目了然。最后分享个练习小技巧在模拟公网区的运营商设备上开启接口抓包观察NAT转换前后的地址和端口变化。亲眼看到一次源地址被改写的过程比你背十条NAT命令都管用。