IP 混叠

✅ IP 混叠的概念

  • IP aliasing 指的是在 同一个网络接口(网卡) 上配置多个 IP 地址。
  • 这些 IP 可以属于同一个子网,也可以属于不同子网。
  • 作用:一台设备可以同时参与多个网络,或者提供多个服务 IP。
  • U-Boot 的网络栈非常简化,只支持一个活动接口(ethact)和一个 IP 地址(ipaddr)。
  • Linux 网络栈允许在一个接口上绑定多个 IP 地址(通过 ip addr add)。
  • Windows,BSD 系列,路由器/交换机大多数支持在逻辑接口上配置多个 IP(虚拟接口、子接口)

✅ 为什么服务器可以通过 ip addr add 添加另一个 IP?

  • 原因 :Linux 支持 多 IP 地址绑定在同一个网卡(多播地址或别名) ,这叫 IP aliasing。

  • 当你执行:

    Shell 复制代码
    sudo ip addr add 192.168.1.133/24 dev eth0

    你实际上给 eth0 增加了一个新的 IP 地址(192.168.1.133),并指定它属于 /24 子网(掩码 255.255.255.0)。

  • 这样,服务器同时拥有:

    • 原来的公司内网 IP(比如 10.x.x.x)
    • 新增的 192.168.1.133
  • 所以它可以同时在两个网络中通信(逻辑上是两个子网)。


✅ 计网知识点

  1. 子网(Subnet)
    • 子网掩码决定网络地址 和主机地址的划分。
    • /24 → 掩码 255.255.255.0 → 网络地址是前 24 位,主机地址是后 8 位。
    • 所以 192.168.1.111 和 192.168.1.133 在同一子网,可以直接通信,无需网关。
  2. CIDR 表示法
    • /n 表示前 n 位是网络地址位。
    • /24 → 255.255.255.0
    • /25 → 255.255.255.128
  3. 网关(Gateway)
    • 当目标 IP 不在本地子网 时,需要通过网关转发。(例如如果板子IP设置为 192.168.1.111/25,则192.168.1.133与其不在同一子网,则需要网关转发)
    • 如果两台设备在同一子网,网关不参与(例如如果板子IP设置为 192.168.1.111/24,则192.168.1.133与其在同一子网,则不需要网关转发)。
  4. ARP(地址解析协议)
    • 在同一子网通信时,设备通过 ARP 获取对方的 MAC 地址。
  5. IP aliasing
    • 一个网卡可以绑定多个 IP 地址,属于不同子网或同一子网。

✅ 服务器:Linux 中设置IP混叠

现代 Linux 推荐使用 ip 命令:

c 复制代码
# 添加 IP 地址
sudo ip addr add 192.168.1.133/24 dev eth0  
# 删除 IP 地址
sudo ip addr del 192.168.1.133/24 dev eth0  
# 查看 IP 地址
ip addr show dev eth0
# 查看Linux系统的路由表 ,路由表决定了当系统要发送一个 IP 数据包时,应该通过哪个接口、走哪条路径。
ip route
# 查看ARP表(存储 IP → MAC 映射)
arp -n

✅ 板子:U-Boot 中设置IP地址

  • ipaddr:本机 IP 地址。
  • netmask:子网掩码。
  • gatewayip:默认网关 IP,用于跨网段通信。
  • serverip:TFTP 或其他服务的服务器 IP。
  • ethadd:eth0 的MAC地址
  • eth1add:eth1的MAC地址

设置命令:

shell 复制代码
u-boot=> setenv ipaddr 192.168.1.111 
u-boot=> setenv netmask 255.255.255.0  #子网掩码,用于子网划分,1-255属于同一子网,不非该子网IP通信则需要走 gatewayip
u-boot=> setenv serverip 192.168.1.133   # 服务器ip
u-boot=> setenv gatewayip 192.168.1.1    # dhcp命令会自动获取,自己设置时没啥用
u-boot=> saveenv

✅ 结论

  • 只要配置服务器增加一个混叠IP,让板子与服务器的混叠IP连接到同一交换机,后设置板子与服务器ip处于同一子网,板子就可以在uboot中通过tftp 0xD0000000 zephyr.bin;来从服务器获取文件了。
  • 问题:板子:192.168.1.111,服务器:192.168.1.133 不能相互ping通。
    • 现象:就是在 U-Boot 中 ping 192.168.1.133是通的,在服务器 ping 192.168.1.111不通。(只要在U-boot中执行个tftp 0xD0000000 111111.bin命令让Uboot网络处于活跃状态,就通了)
    • 原因:U-Boot 空闲时不响应 ARP 请求 ,Linux ping 时无法解析 MAC → ping 超时。一旦 U-Boot 进入网络命令(tftp、ping、dhcp),它就会处理 ARP → Linux ping 成功。
相关推荐
衍玊几秒前
深入剖析 TCP/IP 网络通信原理与内核实现
服务器·网络·tcp/ip
.Bryce.18 分钟前
从零到一开发技术名词大全:从需求分析到 AI Agent 工程
java·网络·人工智能·agent·需求分析·agent评测
Black蜡笔小新2 小时前
上云网关/端口穿透/设备上云EasyNTS:无需公网IP、也不改防火墙,设备怎么从内网跑到外网去
网络·网络协议·tcp/ip
女神下凡2 小时前
芯参谋(85):Linux_PPI_NAND_驱动开发指南
linux·运维·arm开发·驱动开发·单片机·嵌入式硬件·设计规范
12.=0.3 小时前
【持续更新】shell脚本 + Linux命令
linux·运维·服务器
Escalating_xu3 小时前
【Linux 网络编程】五种 I/O 模型与非阻塞 I/O:从“等数据”到正确处理 EAGAIN
java·linux·网络
无言听风雨丶4 小时前
Linux 容器本质探秘:Cgroup 与 Namespace 深度解析与实战
linux·运维·服务器·kubernetes
万联WANFLOW4 小时前
CVE-2026-98432 等漏洞自查:AI 查出的 Linux、Windows 漏洞,运维怎么确认受不受影响
linux·运维·windows·网络安全
OPEN-F4 小时前
Ubuntu 自动登录后 GNOME 远程桌面连不上?一次登录钥匙环锁定的排查与永久修复
linux·运维·ubuntu
硅基手札4 小时前
【Linux 内核专栏 19】20 · 嵌入式子系统 — GPIO·pinctrl·clock·regulator
linux·运维·单片机·linux内核·嵌入式开发·调试定位