You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

本地curl主机IP:81时流量不经过lo设备的原因咨询

本地curl主机IP:81时流量不经过lo设备的原因咨询

嗨,这个问题其实涉及到Linux系统的路由决策逻辑和网络接口绑定规则,我来给你掰扯清楚:

  • 先看用curl http://127.0.0.1:81的情况:系统一看到127.0.0.1这个地址,就知道这是**回环地址段(127.0.0.0/8)**的内容,默认路由规则会直接把流量导向lo回环接口。数据包完全在内核内部完成收发,根本不会碰物理网卡,所以用tcpdump -i lo能抓到包是理所当然的。

  • 再看curl http://hostip:81的情况:这里的hostip是你主机物理网卡(比如eth0、ens33这类)绑定的IP。系统处理请求时会先查路由表,发现目标IP是绑定在物理网卡上的公网/局域网IP,对应的路由规则是把流量发往物理网卡接口,而不是lo。哪怕你是在本地发起请求,数据包也会走物理网卡的链路(内核会做内部转发,不会真的发出去,但路径是物理网卡),所以你在lo接口上用tcpdump自然抓不到流量。

如果想验证的话,你可以试试用tcpdump -i 你的物理网卡名,就能抓到这个请求的数据包了;或者执行ip route get 你的hostip,返回结果里会明确显示流量走的是物理网卡,而不是lo。

备注:内容来源于stack exchange,提问作者jiawei

火山引擎 最新活动