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%的特殊场景时,就知道如何应对了。
相关推荐
hhhh明1 天前
quest2+alvr+steamvr
linux·windows·quest2
dqsh061 天前
树莓派5+Ubuntu24.04 LTS CH348 / CH9344 驱动安装 保姆级教程
linux·c语言·单片机·嵌入式硬件·iot
menge23331 天前
Linux DNS域名解析服务器练习
linux·运维·服务器
wsad05321 天前
CentOS 7 更换腾讯云 yum 源及 EPEL 源
linux·centos·腾讯云
wdfk_prog1 天前
[Linux]学习笔记系列 -- [kernel]kallsyms
linux·笔记·学习
emiya_saber1 天前
Linux 进程调度管理
linux·运维·服务器
不脱发的程序猿1 天前
嵌入式Linux:线程同步(读写锁)
linux·嵌入式
yangzhi_emo1 天前
配置dns主从服务
linux·运维·服务器
SongYuLong的博客1 天前
Linux开源代码汇总
linux·运维·服务器
JiMoKuangXiangQu1 天前
Linux 内存管理 (5):buddy 内存分配简要流程
linux·内存管理·buddy 分配器