![Linux 如何处理将请求路由到其自己的 IP 的情况?](https://linux22.com/image/122842/Linux%20%E5%A6%82%E4%BD%95%E5%A4%84%E7%90%86%E5%B0%86%E8%AF%B7%E6%B1%82%E8%B7%AF%E7%94%B1%E5%88%B0%E5%85%B6%E8%87%AA%E5%B7%B1%E7%9A%84%20IP%20%E7%9A%84%E6%83%85%E5%86%B5%EF%BC%9F.png)
尤其是 CentOS。假设机器位于 1.2.3.4 上运行 httpd 并发出请求http://1.2.3.4,机器是否立即知道该请求是发给自己的,因此在内部路由它,或者它是出去又回来?
我有兴趣了解这是如何工作的。
答案1
是的,机器立即知道该请求是发给它自己的。它通过将数据包的目标地址与分配给网络接口的所有已知 IP 地址进行比较,将数据包标记为当地的,查询一个特殊的路由表 ( ip route show table local
),该表会根据本地分配的 IP 地址的规则自动更新,并替换网络接口以传递它lo
,即使目标地址不是(在 ping 本地地址时127.0.0.1
尝试)。tcpdump -ni lo
您还可以使用它ip route get 1.2.3.4
来显示 Linux 内核如何对路由 ( local
) 进行分类,以及它将通过什么接口传递数据包,以及网关等其他信息。