Linux IP路由源地址选择

Linux IP路由源地址选择

我一直在尝试独立验证回答这个 stackoverflow 问题当源没有请求特定源地址时,Linux 内核如何为 IP 数据包分配源地址。其中一条评论提到这个来源其中包含以下句子:

如果缺少此提示,内核将选择接口上配置的第一个地址,该地址与目标地址位于同一网络中...

我觉得这句话可以有两种解读:

  • 内核选择与目标地址位于同一网络上的接口,然后选择分配给该接口的第一个地址。
  • 在分配给接口的地址中,内核选择第一个与目标地址位于同一网络的地址。

我认为第一个是对该句子的幼稚(即纯粹语法)解释,但第二个是我猜测内核选择的方式。我的推理是这样的:为了简单起见,假设该网络上没有网关/路由器。如果所选源地址不在同一网络上(这在第一种解释中是可能的),那么目的地如何向源地址发送响应(例如 TCP ACK)?

哪种解释是正确的?

  • 如果是第一个,目标如何将响应路由回源?
  • 这种行为是否记录在任何地方(最好是 Linux 手册页)?

相关内容