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--

相关推荐
A小辣椒7 小时前
TShark:Wireshark CLI 功能
linux
A小辣椒11 小时前
TShark:基础知识
linux
AlfredZhao13 小时前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao1 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334661 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪1 天前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5202 天前
Linux 11 动态监控指令top
linux
网络研究院2 天前
2026年网络安全
网络·安全·法律·法规·趋势·发展