Linux 网络协议栈数据流跟踪-静态路由demo

内容

实现一个demo,来学习静态路由规则,使用静态路由,来使得通过WAN口互联的两个路由器,他们lan侧分别下挂两个路由器的pc1和pc2,能够互ping通

为什么这么做?

  • 这是一个非常经典且实用的网络实验,可以用来深理解路由的原理

实践设备需求:

  • 两台基于linux 路由器
  • 两台windows PC

框架拓扑图

配置如上图

流程分析

当PC1 (192.168.10.2) 想要Ping PC2 (192.168.20.2) 时,会发生什么?
  1. PC1检查目标IP 192.168.20.2,发现不在自己的 192.168.10.0/24 网段,于是将数据包发给自己的网关192.168.10.1
  2. AR1 收到数据包,查看自己的路由表,只知道:
    直连网络 192.168.10.0/24 (LAN口)
    直连网络 192.168.100.0/30 (WAN口)
    却不知道 192.168.20.0/24 在哪里。
  3. 这里数据包传输就会出现两种选择:
    1)传给默认网关
    2)传给静态路由

如果都没有,AR1会直接将数据包丢弃,并回复一个Unreachable的ICMP错误

数据包流向分析

  1. 当PC1 Ping PC2时,数据包的流程:
    PC1 -> AR1:
    源IP: 192.168.10.2
    目标IP: 192.168.20.2
    PC1发现目标不在本地网络,将包发给网关 192.168.10.1
  2. AR1 处理:
    AR1收到包,查看目标IP 192.168.20.2
    查询路由表匹配 到我们添加的静态路由 192.168.20.0/24 via 192.168.100.2
    它将数据包从WAN口 (192.168.100.1) 转发 出去,目标是下一跳 192.168.100.2 (AR2)
  3. AR2 处理:
    AR2从WAN口收到这个包,查看目标IP 192.168.20.2
    它发现这个IP在自己的直连网络 192.168.20.0/24 (LAN口) 上
    它将数据包从LAN口转发给PC2 192.168.20.2
  4. PC2 回复 PC1:
    PC2收到Ping请求,准备回复。回复包的源IP是 192.168.20.2,目标IP是 192.168.10.2
    PC2发现目标不在本地网络,将回复 包发给自己的网关 192.168.20.1 (AR2)
    AR2查询路由表,匹配静态路由 192.168.10.0/24 via 192.168.100.1
    它将回复包从WAN口转发 给 192.168.100.1 (AR1)
    AR1收到包,发现目标 192.168.10.100 在自己的直连网络,于是通过LAN口将包最终送达PC1
所以,我们在这做这个让静态路由的实践时,我们应该让默认网关不生效!

选择静态路由方案

添加静态路由规则:我们需要在双方的路由器上手动带领它们如何去往对方所在的局域网。

  1. 使得默认网关不生效:
    AR1配置成192.168.100.3这个无效网关

    AR2配置成192.168.100.4这个无效网关
  2. 连通性检测:

    不通,正常,因为没有正确的路径选择
  3. 在 AR1 上添加一条静态路由:
    目的网络: 192.168.20.0 (这是PC2所在的网段)
    子网掩码: 255.255.255.0
    下一跳地址: 192.168.100.2 (你要去192.168.20.0/24,请把数据包交给对面的AR2的WAN口)
    解释: 所有发往 192.168.20.0/24 的流量,请转发给 192.168.100.2。
  4. 在 AR2 上添加一条静态路由:
    目的网络: 192.168.10.0 (这是PC1所在的网段)
    子网掩码: 255.255.255.0
    下一跳地址: 192.168.100.1 (你要去192.168.10.0/24,请把数据包交给对面的Router A的WAN口)
    解释: 所有发往 192.168.10.0/24 的流量,请转发给 192.168.100.1。
  5. 规则命令查询
    AR1:

    AR2:
  6. 连通性检测:
    注意,因为是实体设备,WAN口是无法进行ping包进入的,所以我们需要清空一下防火墙:

    结果:

疑问?

  1. 默认网关可以解决80%的网络到达问题,为什么还要使用静态路由呢?
    我们的Demo正是为了理解这背后的原理,当您将来遇到那些复杂网络拓扑、多路径网络 等20%的特殊场景时,就知道如何应对了。
相关推荐
FoldWinCard21 小时前
D5 Linux 网络及端口命令
linux·运维·服务器
零涂毕业设计1 天前
毕业设计模块开发-OLED显示屏(IIC协议0.96寸)STM32 ESP32 FPGA Linux驱动免费分享
linux·stm32·单片机·嵌入式·esp32·fpga·oled
tedcloud1231 天前
OmniRoute怎么部署?开源AI模型路由平台Linux部署教程
linux·服务器·人工智能·开源·音视频
霸道流氓气质1 天前
KMS 密钥管理服务(Key Management Service)原理与实践
linux·服务器·数据库
SakitamaX1 天前
LVS(Linux Virtual Server)概念详解
linux·运维·lvs
小张同学a.1 天前
Linux系统管理
linux·运维
阿龙的工作记录1 天前
深入理解Linux设备驱动模型
linux·嵌入式硬件·工作记录
代码村新手1 天前
Linux的基本指令
linux·运维·服务器
hkj88081 天前
Ubuntu 切换java版本
java·linux·ubuntu
撩得Android一次心动1 天前
Linux编程笔记3【个人用】
linux·笔记