Linux的弱主机模型(TCP/IP协议的弱端系统)

名词解释:

弱端系统模型 (weak end system model) : IP实现接受目的地址为本主机任一IP地址的数据报,而不管数据报到达的接口。当从二层接收到分组时,匹配系统的所有的接口的所有的ip地址。
强端系统模型 (strong end system model): 只接受达到接口与目的地址一致的数据报。当从二层接收到分组时,匹配接收到该分组的接口的所有的ip地址。

现象描述:

主机配置:

其中ens33是连通的网卡,ens37未连通。

从主机ping局域网其他机器:

走ens33可以ping通其他机器,走ens37无法ping通其他机器。

从其他机器ping主机:

主机ens33的ip192.168.36.3和ens37的ip192.168.36.37都可以从其他机器ping通,但其他机器上的arp缓存里的主机mac地址只有ens33的,192.168.36.37的mac地址也是ens33的mac。

现象解释(借鉴AI):

ens37 根本没有物理链路(NO-CARRIER),但它的 IP 能被 ping 通,是因为 Linux 内核开启了「弱主机模型」(weak host model)。

简单说:

  • 别的机器 ping 36.37 → 数据包到你主机 → 内核发现 "这个 IP 是我的",就直接从 ens33 回包了
  • 所以你看到:外面能 ping 通 ens37 的 IP,但本机从 ens37 发不出去任何包

1. 先看你自己的输出:ens37 是 NO-CARRIER

复制代码
3: ens37: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 ... state DOWN
  • NO-CARRIER = 网卡没插线 / 没连上交换机 / 虚拟机网卡没桥接 / 仅主机
  • state DOWN = 链路层不通

所以:ens37 只能收包(被内核代答),不能发包。


2. 为什么外面能 ping 通 192.168.36.37?

Linux 默认是 weak host model(弱主机模型)

只要 IP 属于本机,不管从哪个网卡进来,内核都认,并从 ** 默认路由网卡(ens33)** 回复。

所以流程是:

  1. alma88 ping 192.168.36.37
  2. 包走交换机 → 到达你的 ens33
  3. 内核看到:"36.37 是我本机 IP"
  4. 直接从 ens33 回复 ICMP 应答
  5. 对方收到 → 显示 ping 通

这就是典型的 "单向通"、"IP 能 ping 通但网卡不通"。


3. 为什么你本机 ping -I ens37 36.5 不通?

因为:

  • 你强制从 ens37 出包
  • 但 ens37 NO-CARRIER,物理层不通
  • 包根本发不出去,直接丢在本机协议栈

所以 100% 丢包。


4. 从 arp 表也能看出来猫腻

复制代码
192.168.36.37   ether   00:0c:29:b2:35:ec   C   ens33
  • 36.37 对应的 MAC 是 ens33 的 MAC
  • 不是 ens37 的 MAC(00:0c:29:b2:35:f6)

说明:应答来自 ens33,不是 ens37


5. 怎么验证我说的对不对?

方法 1:看 ens37 根本收不到 arp
复制代码
tcpdump -i ens37 arp

再从外面 ping 36.37,你会发现:ens37 上没有任何流量,全走 ens33。

方法 2:关闭弱主机模型,立刻不通
复制代码
sysctl -w net.ipv4.conf.all.arp_ignore=1
sysctl -w net.ipv4.conf.all.arp_announce=2
sysctl -w net.ipv4.conf.all.rp_filter=1

再从外面 ping 36.37,直接不通


6. 你真正要解决的是:ens37 NO-CARRIER

VMware 虚拟机 ens37 没连上网络:

  • 网络模式没选对(host-only / 桥接 / NAT 没开)
  • 或虚拟机网卡没连上
  • 或同网段交换机没开

解决:

  1. 关机
  2. 编辑虚拟机设置
  3. 找到网络适配器 2(ens37)
  4. 选择和适配器 1 一样的模式(比如 NAT 或 桥接)
  5. 开机

之后 ens37 会变成:

复制代码
state UP

ping -I ens37 36.5 就通了。


一句话总结

  • ens37 物理链路 DOWN,所以发不出包
  • Linux 弱主机模型让别的机器能 ping 通它的 IP
  • 本质:IP 通 ≠ 网卡通

--end--

相关推荐
三言老师6 小时前
K8s集群运行时自动化运维全覆盖落地实操(下)
linux·运维·服务器·网络
ltl7 小时前
HAProxy HTX 与 HTTP 路径:内部表示、改写落点与协议分叉
linux
ltl7 小时前
可拆分 OS:CXL 内存池化如何动摇本地 DRAM 假设
linux
80s7777 小时前
住宅代理解析:动态住宅IP与静态住宅IP如何选型?
网络·网络协议·tcp/ip
ltl7 小时前
Tetragon 强制执行:Override 与 SIGKILL 各自保证什么
linux
lengjingzju8 小时前
编译与调试完全指南—第6章 性能分析工具
linux
吴声子夜歌8 小时前
网络安全——网络渗透测试(网络扫描)
网络·web安全·php
fish-man8 小时前
ceshi ceshi yixia
网络·安全·web安全
anxiao_m8 小时前
2026制造业云桌面选型攻略,不同生产场景适配方案汇总
大数据·网络·数据库
躺不平的理查德8 小时前
嵌入式 Linux 系统移植与 SD 卡量产镜像制作
linux·运维·服务器