资讯详情

资讯详情

NAT、OSPF与RIP综合实验:从原理到实战配置

1. 计网综合实验的整体设计思路1.1 为什么选择 NAT、OSPF、RIP 这三个协议组合做计网综合实验最怕的就是“为了做实验而做实验”——把一堆协议堆在一起结果每个都只配了个皮毛最后连自己都不知道为什么要用这个协议。NAT、OSPF、RIP 这三个东西放在一个实验里其实是有内在逻辑的。先说 NAT。它的核心作用是做地址转换让内网私有地址能够访问外部网络。在实际网络环境中内网通常用 192.168.x.x 或 10.x.x.x 这类私有地址段这些地址在公网上不可路由必须经过 NAT 转换才能出去。实验里引入 NAT主要是为了模拟真实企业网络的边界场景——内网一堆设备出口只有一个公网地址怎么让它们都能上网这就是 NAT 要解决的问题。再说 OSPF 和 RIP。这两个都是动态路由协议但它们的定位完全不同。RIP 是距离矢量协议用跳数作为度量值最大跳数 15适合小型网络。OSPF 是链路状态协议用开销作为度量值支持区域划分适合中大型网络。把这两个放在一起目的是让你直观感受两种协议在工作机制上的差异——RIP 是“邻居告诉我什么我就信什么”OSPF 是“我自己算出一张全网地图”。那为什么不是 OSPF 加 BGP或者 RIP 加 EIGRP因为 NAT、OSPF、RIP 这三个组合起来刚好覆盖了一个典型中小型企业的网络架构内网用 OSPF 做骨干路由分支或边缘设备用 RIP 做简单路由出口用 NAT 做地址转换。这个组合不复杂但该有的全有了非常适合用来做综合实验。1.2 实验拓扑的典型结构基于常见教学实践这个实验的拓扑通常包含以下几个部分内网区域若干台路由器或三层交换机运行 OSPF 协议负责内网各网段之间的路由互通。内网使用私有地址段比如 192.168.1.0/24、192.168.2.0/24 等。边界路由器连接内网和外部网络同时运行 OSPF 和 RIP做路由重分发。它是整个实验的核心节点NAT 也配置在这台设备上。外部区域模拟公网或上级网络运行 RIP 协议使用公有地址段或另一个私有地址段来模拟。终端设备内网侧有 PC 或服务器外部侧有一个模拟的公网服务器用来验证 NAT 转换和路由可达性。这个拓扑的好处是层次清晰内网 OSPF、外网 RIP、边界做重分发和 NAT每个协议的作用域和职责都很明确。你在排查问题的时候也能快速定位是哪一层出了毛病。1.3 协议选型背后的考量有人可能会问为什么内网用 OSPF 而不是 RIP原因很简单——OSPF 收敛快、支持变长子网掩码、没有跳数限制内网如果有多层路由结构OSPF 明显更合适。而外部区域用 RIP一方面是因为实验环境里外部网络通常比较简单就几台设备RIP 够用了另一方面也是为了制造协议差异让你必须做路由重分发这本身就是个重要的考点。NAT 的选型也有讲究。实验里通常用PAT端口地址转换也就是 NAPT让多个内网地址映射到一个公网地址的不同端口上。这样做的好处是节省公网地址也是目前最常见的 NAT 部署方式。配置的时候用overload关键字就能启用 PAT。注意NAT 和路由协议之间有个容易踩的坑——NAT 的转换规则只对“穿越”边界路由器的流量生效路由器自身产生的流量比如 OSPF 报文不会被 NAT 转换。所以你在边界路由器上同时跑 NAT 和 OSPF/RIP 的时候要确保协议报文走的是正确的接口别被 NAT 规则误伤。2. 核心细节解析与实操要点2.1 NAT 配置的关键细节NAT 的配置看起来简单但细节特别多一不小心就翻车。先说要配置哪几个东西第一步是定义内外网接口。在边界路由器上连接内网的接口要标记为ip nat inside连接外网的接口标记为ip nat outside。这个方向千万不能搞反否则 NAT 转换表根本不会建立。第二步是定义感兴趣流。用 ACL 来匹配哪些内网地址需要做 NAT 转换。比如access-list 1 permit 192.168.1.0 0.0.0.255 access-list 1 permit 192.168.2.0 0.0.0.255这里有个细节ACL 里的通配符掩码是反掩码0 表示匹配1 表示忽略。很多人习惯用子网掩码的写法结果配错了自己还不知道。第三步是配置 NAT 转换规则。用ip nat inside source list 1 interface GigabitEthernet0/0 overload这样的命令把 ACL 匹配的流量转换到外网接口的地址上overload就是启用 PAT。实操心得配置完 NAT 之后一定要用show ip nat translations查看转换表。如果表是空的说明要么感兴趣流没匹配上要么接口方向标反了。另外debug ip nat可以看到实时的转换过程排查问题非常有用但在生产环境慎用会刷屏。还有一个容易忽略的点NAT 转换是有超时时间的。TCP 会话默认 24 小时UDP 是 5 分钟ICMP 是 1 分钟。实验里如果发现转换表条目突然消失了别慌大概率是超时了重新触发一下流量就行。2.2 OSPF 配置的核心要点OSPF 的配置比 RIP 复杂得多但核心就那么几件事启用进程、宣告网段、配置区域。router ospf 1 network 192.168.1.0 0.0.0.255 area 0 network 192.168.2.0 0.0.0.255 area 0 network 10.0.0.0 0.0.0.3 area 0这里有几个关键点第一区域号必须一致才能建立邻居。如果一边配了 area 0另一边配了 area 1邻居关系起不来。实验里统一用 area 0 就行也就是骨干区域。第二network 命令里的反掩码要算对。比如 10.0.0.0/30 的网段反掩码是 0.0.0.3不是 0.0.0.255。算错了会导致接口没有加入 OSPF 进程邻居自然起不来。第三Router ID 不能冲突。OSPF 用 Router ID 来唯一标识一台路由器。如果两台路由器的 Router ID 一样邻居关系会反复震荡。实验里建议手动指定 Router ID比如用router-id 1.1.1.1这样的格式清晰又好记。OSPF 邻居建立的过程分几个状态Down、Init、2-Way、ExStart、Exchange、Loading、Full。正常情况下最终会到 Full 状态。如果卡在 2-Way说明是 DR/BDR 选举的问题在广播网络里这是正常的如果卡在 ExStart通常是 MTU 不匹配。注意OSPF 默认的 Hello 时间是 10 秒Dead 时间是 40 秒。如果两台路由器的 Hello 时间不一致邻居关系起不来。实验里一般不用改但如果遇到邻居反复断开可以检查一下这个参数。2.3 RIP 配置的注意事项RIP 的配置相对简单但有几个版本问题必须搞清楚。router rip version 2 no auto-summary network 10.0.0.0 network 172.16.0.0version 2是必须的因为 RIPv1 不支持变长子网掩码也不支持认证。实验里如果用 RIPv1稍微复杂一点的子网划分就会出问题。no auto-summary也是必须的。RIP 默认会在主类网络边界做自动汇总比如把 10.1.1.0/24 和 10.1.2.0/24 汇总成 10.0.0.0/8。这在实验环境里会导致路由黑洞必须关掉。RIP 的度量值是跳数最大 15 跳16 跳表示不可达。实验里网络规模小跳数一般不会超。但如果你发现某条路由突然消失了可以看看是不是跳数超了。实操心得RIP 的更新周期是 30 秒收敛速度比 OSPF 慢很多。实验里如果改了配置等个 30 秒再看路由表别急着下结论说配错了。可以用debug ip rip看实时的更新报文确认路由有没有发出去。2.4 路由重分发的配置方法边界路由器同时跑 OSPF 和 RIP必须做重分发否则两种协议的路由信息无法互通。在 OSPF 进程里重分发 RIProuter ospf 1 redistribute rip subnetssubnets关键字很重要不加的话只重分发主类网络子网路由会丢失。在 RIP 进程里重分发 OSPFrouter rip redistribute ospf 1 metric 2RIP 重分发 OSPF 的时候必须指定 metric因为 RIP 的度量值是跳数而 OSPF 的度量值是开销两者没有自动映射关系。这里指定 metric 2 表示把 OSPF 路由引入 RIP 时跳数设为 2。注意重分发的时候如果不做过滤可能会导致路由环路。实验里网络简单一般不会出问题但养成好习惯重分发的时候想想有没有可能形成环路。可以用distribute-list做过滤只允许特定的路由通过。3. 实操过程与核心环节实现3.1 实验环境搭建与基础配置先把拓扑搭起来。假设我们用四台路由器R1 和 R2 在内网跑 OSPFR3 是边界路由器同时跑 OSPF 和 RIP并配置 NATR4 在外部跑 RIP。R1 的基础配置hostname R1 interface GigabitEthernet0/0 ip address 192.168.1.1 255.255.255.0 no shutdown interface GigabitEthernet0/1 ip address 10.0.0.1 255.255.255.252 no shutdownR2 的基础配置hostname R2 interface GigabitEthernet0/0 ip address 192.168.2.1 255.255.255.0 no shutdown interface GigabitEthernet0/1 ip address 10.0.0.5 255.255.255.252 no shutdownR3边界路由器的基础配置hostname R3 interface GigabitEthernet0/0 ip address 10.0.0.2 255.255.255.252 ip nat inside no shutdown interface GigabitEthernet0/1 ip address 10.0.0.6 255.255.255.252 ip nat inside no shutdown interface GigabitEthernet0/2 ip address 200.1.1.1 255.255.255.252 ip nat outside no shutdownR4外部路由器的基础配置hostname R4 interface GigabitEthernet0/0 ip address 200.1.1.2 255.255.255.252 no shutdown interface GigabitEthernet0/1 ip address 172.16.1.1 255.255.255.0 no shutdown这里有个细节R3 的两个内网接口都标了ip nat inside外网接口标了ip nat outside。这个方向一定要对否则 NAT 不工作。3.2 OSPF 与 RIP 的部署与验证在 R1 上配置 OSPFrouter ospf 1 router-id 1.1.1.1 network 192.168.1.0 0.0.0.255 area 0 network 10.0.0.0 0.0.0.3 area 0在 R2 上配置 OSPFrouter ospf 1 router-id 2.2.2.2 network 192.168.2.0 0.0.0.255 area 0 network 10.0.0.4 0.0.0.3 area 0在 R3 上配置 OSPF 和 RIProuter ospf 1 router-id 3.3.3.3 network 10.0.0.0 0.0.0.3 area 0 network 10.0.0.4 0.0.0.3 area 0 redistribute rip subnets router rip version 2 no auto-summary network 200.1.1.0 redistribute ospf 1 metric 2在 R4 上配置 RIProuter rip version 2 no auto-summary network 200.1.1.0 network 172.16.0.0配置完之后在 R1 上show ip route应该能看到 192.168.2.0/24 的 OSPF 路由以及 172.16.1.0/24 的 OSPF 外部路由因为是从 RIP 重分发过来的。在 R4 上show ip route应该能看到 192.168.1.0/24 和 192.168.2.0/24 的 RIP 路由。实操心得验证 OSPF 邻居关系用show ip ospf neighbor看到 Full 状态就说明邻居建立成功了。验证 RIP 用show ip rip database能看到从各个接口学到的路由。如果路由表里没有预期的路由先检查邻居关系再检查重分发配置。3.3 NAT 配置与连通性测试在 R3 上配置 NATaccess-list 1 permit 192.168.1.0 0.0.0.255 access-list 1 permit 192.168.2.0 0.0.0.255 ip nat inside source list 1 interface GigabitEthernet0/2 overload配置完之后从 R1 上 ping R4 的 172.16.1.1R1# ping 172.16.1.1 source 192.168.1.1如果通了说明 NAT 和路由都正常。然后在 R3 上show ip nat translations应该能看到转换表Pro Inside global Inside local Outside local Outside global icmp 200.1.1.1:1 192.168.1.1:1 172.16.1.1:1 172.16.1.1:1这里 200.1.1.1 是 R3 外网接口的地址192.168.1.1 是 R1 的内网地址。端口号 1 是 ICMP 的标识符用来区分不同的会话。注意如果 ping 不通先检查路由。在 R3 上show ip route确认有 172.16.1.0/24 的路由。然后在 R4 上show ip route确认有 200.1.1.0/30 的路由。路由没问题再查 NAT用debug ip nat看转换过程。3.4 路由重分发的验证与调试重分发配置完之后最重要的是验证路由有没有正确传播。在 R1 上show ip route ospf应该能看到O E2 172.16.1.0/24 [110/20] via 10.0.0.2, 00:01:23, GigabitEthernet0/1O E2 表示这是 OSPF 外部路由类型 2。度量值 20 是默认值因为重分发的时候没有指定 metric。在 R4 上show ip route rip应该能看到R 192.168.1.0/24 [120/2] via 200.1.1.1, 00:00:12, GigabitEthernet0/0 R 192.168.2.0/24 [120/2] via 200.1.1.1, 00:00:12, GigabitEthernet0/0[120/2] 里的 120 是 RIP 的管理距离2 是跳数就是我们重分发时指定的 metric。实操心得重分发的时候最容易出的问题是“单向重分发”——只在一个方向配了另一个方向忘了配。结果就是一边能看到另一边的路由反过来看不到。排查的时候两边都show ip route一下对比一下路由表就清楚了。4. 常见问题与排查技巧实录4.1 NAT 相关故障排查问题一NAT 转换表为空。这是最常见的问题。排查思路检查接口方向show ip nat statistics看 inside 和 outside 接口有没有正确标记。检查 ACLshow access-lists看感兴趣流有没有匹配上。可以在 ACL 里加log关键字看有没有命中。检查路由如果路由器没有去往外网的路由流量根本到不了 NAT 设备转换表自然为空。问题二NAT 转换表有条目但 ping 不通。这种情况通常是回程路由的问题。NAT 只转换了去的方向回来的流量需要外部路由器有去往 NAT 地址的路由。在 R4 上show ip route确认有 200.1.1.0/30 的路由。问题三部分内网地址能上网部分不能。检查 ACL 有没有覆盖所有内网网段。比如只配了 192.168.1.0/24忘了 192.168.2.0/24那 R2 下面的设备就上不了网。故障现象可能原因排查命令NAT 表为空接口方向标反show ip nat statisticsNAT 表为空ACL 未匹配show access-listsNAT 表为空缺少路由show ip route有表项但不通回程路由缺失在外部路由器上 show ip route部分地址不通ACL 覆盖不全show access-lists4.2 OSPF 邻居建立失败排查问题一邻居卡在 Init 状态。Init 状态表示路由器收到了对方的 Hello 报文但对方没有收到自己的 Hello。通常是单向链路问题或者 ACL 把 Hello 报文过滤了。检查接口的 ACL 配置确保没有阻断 OSPF 报文协议号 89。问题二邻居卡在 ExStart 状态。ExStart 是协商主从关系的状态卡在这里通常是 MTU 不匹配。用show interface检查两端接口的 MTU确保一致。OSPF 默认要求 MTU 匹配不匹配的话可以在接口下配ip ospf mtu-ignore来忽略。问题三邻居反复震荡。通常是 Router ID 冲突或者 Hello/Dead 时间不一致。用show ip ospf查看 Router ID用show ip ospf interface查看 Hello/Dead 时间。注意OSPF 邻居建立失败的原因很多但排查思路是固定的——先看物理层和链路层通不通再看 Hello 报文有没有正常收发最后看参数匹配不匹配。一层一层往下查别跳步。4.3 RIP 路由学习异常排查问题一路由表里没有 RIP 路由。先检查network命令有没有宣告正确的网段。RIP 只宣告主类网络比如network 10.0.0.0会宣告所有 10.x.x.x 的接口。如果接口地址是 192.168.x.x但只配了network 10.0.0.0那这个接口就不会参与 RIP。问题二路由被自动汇总了。RIPv2 默认在主类网络边界做自动汇总。比如 10.1.1.0/24 和 10.1.2.0/24 会被汇总成 10.0.0.0/8。解决办法是配no auto-summary。问题三跳数超限。RIP 最大跳数 15超过 15 跳的路由会被标记为不可达。实验里网络规模小一般不会超。但如果拓扑里有环路跳数会迅速增加最终导致路由失效。故障现象可能原因排查命令无 RIP 路由network 未宣告show run section router rip路由被汇总auto-summary 未关show ip protocols路由消失跳数超限show ip rip database路由震荡更新周期未到debug ip rip4.4 路由重分发故障排查问题一重分发后路由丢失。最常见的原因是忘了加subnets关键字。OSPF 重分发 RIP 时如果不加subnets只重分发主类网络子网路由全部丢失。问题二重分发导致路由环路。如果两边互相重分发且没有做过滤可能导致路由在两种协议之间来回传递形成环路。解决办法是用distribute-list或route-map做过滤只允许特定的路由通过。问题三重分发后度量值不合理。RIP 重分发 OSPF 时必须指定 metric否则重分发不生效。OSPF 重分发 RIP 时可以不指定 metric默认是 20。如果度量值不合理可能导致路由选择不是最优的。实操心得重分发是个双刃剑配好了路由互通配不好环路满天飞。我的习惯是重分发的时候一定加过滤只放行必要的路由。实验里虽然简单但养成好习惯没坏处。5. 实验扩展与进阶玩法5.1 增加区域划分模拟多区域 OSPF现在的实验里 OSPF 只有一个 area 0。你可以把 R2 划到 area 1R3 作为 ABR区域边界路由器这样就能观察 OSPF 多区域的路由传播。area 1 的路由会以 O IA区域间路由的形式出现在 area 0 里而 area 0 的路由也会以 O IA 的形式出现在 area 1 里。配置方法很简单在 R2 上把 network 命令改成 area 1在 R3 上增加一个 area 1 的 network 宣告。然后show ip route ospf就能看到 O IA 的路由了。5.2 配置 NAT 静态映射模拟服务器发布PAT 是动态转换内网地址映射到外网接口的不同端口上。但如果你想把内网的一台服务器发布到外网让外部用户能主动访问就需要配静态 NAT。ip nat inside source static 192.168.1.100 200.1.1.10这样外部用户访问 200.1.1.10 的时候流量会被转换到 192.168.1.100 上。这个玩法在实验里很实用可以模拟企业内网服务器的对外发布。5.3 引入 ACL 做路由过滤在重分发的时候可以用distribute-list做路由过滤。比如只允许 192.168.1.0/24 重分发到 RIP不允许 192.168.2.0/24access-list 2 permit 192.168.1.0 0.0.0.255 router rip distribute-list 2 out ospf 1这样 192.168.2.0/24 就不会被重分发到 RIP 里了。这个技巧在实际网络里很有用可以控制路由的传播范围。5.4 用 Traceroute 验证路径配置完之后从 R1 上 traceroute 到 R4 的 172.16.1.1R1# traceroute 172.16.1.1 source 192.168.1.1输出应该显示经过 R3 到达 R4。如果路径不对比如绕了一圈说明路由配置有问题。Traceroute 是验证路径最直观的工具实验里一定要用。注意Traceroute 在 NAT 环境下可能会显示不完整因为 NAT 转换会改变源地址导致回程的 ICMP 超时报文找不到正确的目的地。这是正常现象不用慌。6. 个人实操体会与建议这个实验我前前后后做了好几遍每次都有新的收获。最开始的时候NAT 和路由重分发一起配结果 NAT 表死活建不起来排查了半天才发现是 ACL 写错了——把 192.168.1.0/24 写成了 192.168.1.0/25导致一半的地址没匹配上。从那以后我养成了一个习惯配完 ACL 一定用show access-lists看一眼确认匹配计数在涨。还有一次OSPF 邻居死活起不来卡在 ExStart。查了半天才发现是两端接口的 MTU 不一样——一边是 1500另一边是 1476。后来在接口下加了ip ospf mtu-ignore才解决。这个坑让我记住了OSPF 对 MTU 很敏感实验里如果遇到邻居卡在 ExStart先查 MTU。RIP 的自动汇总也是个坑。有一次重分发之后R4 上看到的路由是 10.0.0.0/8而不是具体的子网。查了半天才想起来 RIPv2 默认自动汇总赶紧加了no auto-summary。这个命令现在我已经形成肌肉记忆了配 RIP 第一件事就是关自动汇总。最后说一个验证技巧实验配完之后不要只 ping 一下通了就完事。一定要用show ip route看路由表用show ip nat translations看 NAT 表用show ip ospf neighbor看邻居状态。这三个命令一跑基本就能确认实验做没做对。如果路由表里有预期的路由NAT 表里有转换条目OSPF 邻居是 Full 状态那这个实验就是成功的。另外实验里最好把配置保存下来用write memory或者copy running-config startup-config。不然设备一重启配置全没了又得重来一遍。这个习惯在实际工作中也很重要配置改完随手保存免得意外断电导致配置丢失。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →