ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

HCIP私网跨公网实验:GRE隧道、NAT与PPP认证全解析

HCIP私网跨公网实验:GRE隧道、NAT与PPP认证全解析 搞过HCIP组网题的朋友应该都有印象私网跨公网互通这个主题几乎每年都会出现一上来就是GRE隧道加NAT地址转换的组合拳偶尔还要穿插PPP认证里PAP和CHAP的对比。很多人在学习时容易把这三块割裂开GRE隧道单独练过、NAT单独配过、PPP认证也单独敲过可真把三样放到一张拓扑里就开始懵——隧道为什么起不来、私网地址为什么ping不通、PPP链路明明起来了认证却一直失败。这篇文章我就围绕这个组合场景把私网跨公网互通的完整链路拆开讲一遍重点说清楚GRE隧道、NAT地址转换、PPP认证各自承担什么角色以及你在HCIP实验和考试中会踩到的那些坑。1. 这个题目到底在考什么一张拓扑理解三者的关系1.1 从一张最常见的备考拓扑说起先别急着背命令先把场景定义清楚。HCIP里涉及私网跨公网互通的题目最经典的就是总部和分支机构的组网左边是总部私网右边是分支私网中间隔着一大片公网。两边私网地址通常是RFC1918里的私有地址段比如总部用10.1.0.0/16分支用172.16.0.0/16中间设备的接口地址和互联地址使用公网地址或运营商分配的地址。在这个拓扑里私网和公网的边界往往有一台出口设备它干的活有两个一是做NAT地址转换让内部私网主机访问公网时能把源地址转换成公网地址二是作为隧道的起点或终点把内网流量封装后送往对端。HCIP考这个题目的核心意图就是让你理解私网之间不直接路由可达必须借助隧道在公网上挖掘一条逻辑直连通道而NAT和PPP认证则是这条通道两端的边界保障。这个拓扑真正难的点在于GRE隧道建立起来以后两端的私网路由是通过隧道接口互相通告的但实际报文在公网上传输时外层源目IP是隧道端点的公网地址。如果中间还插了NAT报文封装结构会变得很微妙——后面我会专门讲。1.2 为什么三件事必须放在一起学很多备考资料把GRE、NAT、PPP认证分成三个独立章节我觉得这是看起来清晰、用起来混乱的安排。在实际组网里这三件事是层层嵌套的关系第一层是物理或逻辑链路层PPP认证在这个层面保证链路是合法的第二层是网络层封装GRE隧道在这层解决私网穿越公网的问题第三层是地址转换NAT在这层解决私网地址如何被公网路由识别的问题。三层叠在一起任何一个环节出问题结果都是私网跨不过公网。做HCIP实验时如果你只配了GRE而不配NAT总部私网主机访问分支时虽然隧道能封装但回程路由可能因为私网地址在公网上不可路由而出问题只配NAT而不配GRE两边私网地址如果重叠或使用了私有地址段流量根本无法直接互访。至于PPP认证它看似跟前两者关系不大但一旦链路验收、拨号接入场景出现PAP的明文密码就成了一个明显的安全隐患CHAP的加密挑战机制才是更符合工程实践的选择——所以考试里总爱把PAP和CHAP放到一起考你的判断能力。2. GRE隧道封装结构、建立过程与最容易丢分的关键参数2.1 GRE报文的封装顺序别把外层IP和内层IP搞反GRE全称Generic Routing Encapsulation通用路由封装。它最核心的价值就是把一种协议的数据报文装进另一种协议里传输。在私网跨公网的场景里原始报文是私网IP报文公网不认识这个私网地址于是GRE在外层再套一个公网可达的IP头中间加上GRE头形成外层IP头 GRE头 内层IP头 载荷的结构。这个封装顺序看着简单但特别容易丢分。我见过不少朋友把外层IP配置成私网地址、内层IP配置成公网地址结果隧道一直处于down状态还以为是GRE参数问题。你要记住隧道接口的源地址和目的地址必须是对端设备在公网上可达的地址而隧道接口本身还要有一个独立的IP地址这个地址通常来自私网规划段用于承载私网路由。举个例子总部隧道接口配置的是10.1.0.1/30分支隧道接口配置的是10.1.0.2/30这是隧道内部的逻辑地址而隧道源是总部的公网出口地址202.100.1.1隧道目的是分支的公网出口地址202.100.2.1。数据转发时私网主机发送IP报文路由器查私网路由表发现下一跳在隧道接口于是把报文交给GRE封装再查公网路由表把封装后的报文发往隧道目的地。2.2 隧道源、隧道目的与路由建立不起来通常就这三个原因GRE隧道建立不起来90%的原因集中在三个方面。第一个是隧道源和目的写反了或写成了私网地址。比如源地址应该配置为本端出口的公网地址目的地址应该配置为对端出口的公网地址一旦颠倒或者用了接口的私网地址对端收到报文后无法正确识别隧道状态自然起不来。第二个是公网路由不通。GRE隧道依赖底层IP连通性如果本端到对端公网地址没有路由或者中间有防火墙过滤了GRE协议IP协议号47隧道就无法建立。排查时先ping一下对端的公网地址通了再思考隧道的事。第三个是隧道接口没有宣告进路由协议或者静态路由指向有问题。隧道接口起来了不代表私网路由通了你必须在隧道接口上配置IP地址并且让动态路由协议如OSPF在隧道接口上发送hello报文或者手动配置静态路由指向隧道接口。很多人只建了隧道却忘了宣告路由导致数据包到达本端后不知道往哪里送这是非常典型的丢分点。2.3 GRE的Keepalive与MTU问题在HCIP实验配置里GRE隧道接口下经常见到keepalive配置。keepalive的作用是让本端定期向对端发送探测报文如果对端没有回应本端就把隧道接口标记为down避免流量发往一个失联的隧道。这个机制在真实组网里很重要它能加快故障感知但实验中要注意keepalive报文同样依赖底层公网IP连通性如果公网链路质量不佳频繁的keepalive超时会导致隧道状态抖动反而影响稳定性。另一个容易被忽略的是MTU。GRE封装会额外增加至少24字节的开销外层IP头20字节 GRE头4字节如果物理接口MTU是1500GRE隧道接口的MTU一般要下调到1476甚至更小否则大报文在传输时会被分片。HCIP考试不见得直接考你一个具体的MTU数值但结合故障排查题时你得能判断报文过大无法转发是不是因为MTU不一致导致的。3. NAT地址转换它在GRE场景里既是帮手也是拆台选手3.1 私网到公网的基本转换源地址转换NAT地址转换在私网跨公网场景里的基本责任是把私网主机发出的源地址转换为公网地址让报文在外层公网传输时具有合法的源地址。GRE隧道建立后隧道的hello报文或封装的数据报文其实是在公网传输的对这些报文而言如果出口设备做的是源NAT就会把隧道外层源IP改掉。这里要区分两种情况一种是隧道端点本身就在公网出口设备上隧道源就是公网地址不涉及NAT另一种是隧道端点在内网设备上出口边界设备做NAT。第二种情况在HCIP实验里常出现也是最容易出问题的地方GRE隧道的hello报文到达出口设备时外层源IP是内网设备的内网口地址NAT会把它转换成公网地址这看起来好像没问题——反正我要的就是公网可达。但问题在于NAT转换通常是动态的如果映射关系不稳定或者GRE报文穿过NAT设备后校验和处理不同步隧道可能时通时断。3.2 GRE报文穿过NAT时的坑协议号、封装后的地址GRE协议在IP层使用协议号47不是TCP也不是UDP没有端口号的概念。NAT做动态转换时通常依赖传输层端口来维护会话表但GRE没有端口这就让传统的PAT端口复用很难优雅地处理GRE报文。实际网络里很多边界设备对GRE的处理是要么只做地址转换不转换端口要么干脆放行协议47。如果你在出口设备上配置了基于接口的NAPT想把所有流量都转成公网地址的某个端口GRE流量就会被卡住。因为GRE没有端口可供映射NAPT表项根本建不起来。这种情况下隧道建立失败的典型表现是从内网设备ping对端公网地址能通ICMP有端口吗ICMP也没有端口但NAT设备对ICMP有专门的映射机制而GRE隧道却一直down。HCIP考试如果出这种综合分析题你要能看出题目的坑点在于NAT配置方式决定GRE报文能否穿越。稳妥的做法是在出口设备上单独配置一条规则对源IP为内网隧道设备、目的IP为对端公网地址、协议为GRE的流量执行一对一地址转换或直接放行不让它走普通的NAPT。3.3 实验里推荐的做法哪些流量需要NAT、哪些需要放行结合我的实验经验私网跨公网GRE场景里NAT策略一般这样规划一是私网主机主动访问公网比如上网流量做源NAT肯定没错二是私网主机访问对端私网走GRE隧道这部分流量实际上是被封装后转发不应该由出口设备做NAT因为GRE封装后的外层源IP已经是隧道端点的公网地址了。三是GRE协议报文协议号47以及可能用到的ICMP探测建议配置放行或一对一转换。实际操作中在边界设备上我会这样区分在公网接口的入方向放行对端公网地址发来的GRE和ICMP在出方向对去往对端公网地址的GRE报文不启用NAPT。这个不启用NAPT可以通过地址池设计实现——给GRE隧道流量单独分配一个公网地址做静态映射而不是混入动态地址池。这样做的好处是隧道外层源地址稳定对端无需频繁更新邻居状态。4. PPP认证PAP和CHAP的报文交互与配置区别4.1 为什么PPP认证会出现在这个场景里在HCIP的私网跨公网考点中PPP认证往往作为广域网链路接入的一部分出现。你可以理解为总部和分支之间的链路不一定总是以太网专线很多时候是运营商的串行链路或拨号链路这些链路工作在PPP协议下。PPP本身只是一种数据链路层协议它不解决路由问题但它可以在链路建立阶段验明正身——你是谁、你有没有权限接入这张网络。把这个放到整体场景里就通顺了链路层用PPP保证接入合法性网络层用GRE隧道承载私网路由出口用NAT负责地址转换。三层各司其职这就是完整的企业分支互访链路。考试中如果只给你一张串行链路的拓扑要求配置PPP认证后跑通OSPF或静态路由你就要先意识到链路层是否up再谈上层协议。4.2 PAP的致命弱点与适用场景PAPPassword Authentication Protocol密码认证协议。它的工作方式简单直接被认证方主动把用户名和密码以明文形式发送给认证方认证方比对后返回通过或拒绝。整个过程只涉及两次握手。PAP最大的问题是密码在链路上明文传输抓包就能直接看到密码内容安全性很差。在HCIP实验里很多教材还习惯配置PAP因为命令简单容易通。但从工程角度看只要链路不是绝对可信的专线PAP都不是第一选择。考试里如果问你PAP有什么缺点何时选用PAP标准答案就是明文传输密码易被窃听只适用于对安全性要求较低的链路。4.3 CHAP的挑战-响应机制为什么更安全CHAPChallenge Handshake Authentication Protocol挑战握手认证协议。它的核心机制是挑战-响应三次握手并且密码不在链路上直接传输。过程是认证方向被认证方发送一个随机挑战值被认证方用用户名和密码实际是密码的某种散列值结合挑战值计算出响应值回传给认证方认证方用同样的方法计算期望响应值比对一致则认证通过。CHAP的关键点有两个一是随机挑战值每次不同即使抓包抓到了一次响应值也无法重放攻击二是密码本身不在链路上传送保护了安全性。HCIP考试里常见题型是给你一段抓包结果或配置需求让你选择用CHAP还是PAP这时候安全性是最优先的判断依据。实际组网里CHAP是更稳妥的默认选择。4.4 配置关键点与常见认证失败原因华为设备上配置PPP认证认证方的配置大致是接口视图下启用 ppp authentication-mode chap然后配置本地用户。被认证方配置 ppp chap user 用户名并指定密码。如果你记不住命令细节至少要知道认证方向认证方是验证别人的一方被认证方是提交身份的一方这个关系别搞反。搞反后配置命令虽然敲得进去但链路始终起不来。常见认证失败原因主要有三个用户名或密码不一致认证方没有创建对应的本地用户PAP和CHAP模式不匹配。前两个好排查第三个最隐蔽。比如认证方配置的是CHAP被认证方却只配置了PAP的用户名密码两边握手协议不同认证永远失败。遇到这种情况先看两端的认证模式是否一致再看密码里是否有大小写或特殊字符被命令行转义处理。5. 一个完整的HCIP实验从配置到验证的全流程5.1 实验拓扑与IP规划假设有一个标准的两地组网拓扑总部路由器R1连接总部内网192.168.1.0/24R1公网接口接运营商地址13.1.1.1/24分支路由器R2连接分支内网192.168.2.0/24R2公网接口接运营商地址23.1.1.1/24。中间的两台运营商设备模拟公网云。R1和R2之间建立GRE隧道隧道接口规划为192.168.100.0/30网段R1隧道接口192.168.100.1/30R2隧道接口192.168.100.2/30。在这个规划里私网路由的互通依靠隧道接口的直连网段两边再配置指向对端内网的静态路由下一跳写隧道对端地址。如果你想跑OSPF就把隧道接口加进OSPF区域注意network宣告时要覆盖隧道接口和本地私网接口。5.2 关键配置步骤含完整命令先看R1的GRE配置公网接口配置IP并确保能ping通对端。R2的GRE配置方向类似只是隧道源目的对调。配置完成后你会发现隧道接口的协议状态是否up取决于底层公网IP是否可达以及GRE参数是否正确。然后是NAT这里我采取的策略是只对私网主机访问公网的流量做源NATGRE流量放行。假设R1连接总部的私网接口为G0/0/0公网接口为G0/0/1再配合一个ACL允许总部私网网段访问分支私网网段的流量不需要做NAT但这条策略在实验里通常通过路由方向直接实现——GRE封装后的报文外层源地址已经是公网地址NAT默认不会转换已经具有公网源地址的报文所以关键是不要把GRE协议本身混进NAPT规则里。如果链路是串行PPP再叠加认证R1作为认证方R2作为被认证方。5.3 验证命令与抓包思路实验做完别急着点下一步验证环节的信息量很大。第一步ping对端公网地址确认底层链路通。第二步查看隧道状态display interface Tunnel 0/0/0重点看protocol是否up。第三步ping对端隧道接口地址确认GRE隧道内层IP连通。第四步ping对端私网主机地址这一步通了才说明私网跨公网互通真正完成。如果隧道起不来我的习惯是在本端用display ip routing-table看是否有去往对端公网地址的路由然后用抓包工具过滤协议号47看GRE报文是否正常出接口。抓包时注意外层IP的源目地址是否如预期如果源地址变成了私网地址说明NAT配置把GRE报文的源地址转换出了问题需要回到边界NAT策略上做调整。6. 我在这类实验里踩过的坑和备考建议6.1 排错顺序先通底层、再看隧道、最后查路由三年多的网络项目实施经历告诉我私网跨公网排错最忌讳哪都想调哪个都没调对。我的固定排错顺序是公网通不通 → 认证过没过 → 隧道起没起 → 路由有没有 → 私网通不通。先ping公网地址如果对端公网都ping不通GRE隧道一定起不来这时候断然不用去看隧道配置。公网通而隧道down重点检查认证模式和GRE参数。隧道up而私网不通基本是路由问题——静态路由下一跳写错、OSPF区域没宣告隧道接口或者隧道接口IP冲突。最后再检查NAT策略是否把隧道流量截胡。我曾经帮同事排查一个分支互联故障现象是总部能访问分支分支却访问不了总部。排查一圈下来发现是分支出口设备把回程的GRE流量做了NAPT导致隧道外层源地址不稳定对端设备把来自同一隧道的报文当成了不同来源。当时最直接的解法就是把GRE流量从NAT策略里摘出来问题立刻消失。6.2 备考HCIP题目的几个务实提醒首先不要只背命令要多想为什么。HCIP题目不会只让你填一条命令很多时候是给一段排错日志让你判断问题出在GRE还是NAT还是PPP。如果你只是机械地背了配置顺序遇到设问题就懵。其次题库确实值得刷但刷题的核心目的是建立题型敏感度而不是背答案。我建议每做完一道综合题就在纸上画一遍拓扑标出隧道地址、公网地址、私网网段、认证方向这几个要素再口述一遍报文的完整转发路径。能不能把路径讲清楚基本就能判断你对这个知识点的掌握程度。第三实验环境允许的话把PAP改成CHAP重新做一遍配置感受两者的调试输出差异。CHAP模式下链路建立时会有挑战值交互过程而PAP模式下直接发送用户名密码。你亲眼见过这两种报文考试里遇到相关描述就不慌。最后再说一个容易被忽略的小技巧GRE隧道建立后在两端的私网主机上分别tracert一下对端私网地址观察路径中每一跳的地址。如果路径里出现了公网地址之外的异常地址很可能就是NAT做了多余的转换如果路径里只看到隧道接口的两跳说明数据确实在逻辑隧道里转发这是最直观的私网已跨公网互通证据。
返回列表