路由器是否从他们收到请求的同一接口发送回复?

网络工程 路由
2022-02-12 06:46:01

假设我们的路由器有 2 个 WAN IP 地址 - ether1 和 199.16.1.2,ether2 和 199.16.2.2,以及一个指向 199.16.1.1 的默认路由(路由器直接连接到 ether1 上的路由器)。

如果一个数据包从 ether1 进入,目标地址是 199.16.1.2,事情就很简单了——来自我们路由器的回复返回 ether1(使用默认网关路由),源 IP 为 199.16.1.2。

如果一个数据包在 ether2 上到达 199.16.2.2,路由器的回复将通过默认网关 (out ether1),其源 IP 地址将是 199.16.2.2(ether2 的 IP)。如果您希望回复从它进来的同一个接口发出,您需要某种方式告诉它源 IP 地址为 199.16.2.2 的任何东西都应该从 ether2 发出。

听起来对吗?

2个回答

路由器根据目标地址而不是源地址单独路由数据包。路由器不知道任何数据包是对任何其他数据包的回复。这有时会导致非对称路由。

通常路由器在路由时只考虑目标IP。

许多路由器可以基于更复杂的标准进行路由,包括源地址,但这需要专门配置。这通常称为“策略路由”。

最后,除非路由器也在进行 NAT,否则将数据包发往路由器有点奇怪。至少在 Linux 上,我发现策略路由和 NAT 之间存在问题,特别是用于策略路由的源 IP Linux 是原始源 IP,而不是转换后的源 IP。我详细介绍了一种我发现的解决此问题的方法,即如何使多个子网能够使用一个资源而不能以任何方式相互连接