假设我们的路由器有两个广域网IP地址-- ether1 ( 199.16.1.2 )和ether2 ( 199.16.2.2 )和一个指向199.16.1.1 (路由器直接连接到ether1上的路由器)的默认路由。
如果一个数据包出现在指定为199.16.1.2的ether1上,则非常简单--来自我们路由器的回复返回到ether1 (使用默认网关路由),其源IP为199.16.1.2。
如果一个数据包出现在ether2上,目的地为199.16.2.2,路由器的应答将退出默认网关(out ether1),其源IP地址为199.16.2.2 (ether2's IP)。如果您想要将回复输出到它所使用的相同的接口,您需要某种方式告诉它,任何具有源IP地址为199.16.2.2的内容都应该退出ether2。
听起来对吗?
发布于 2017-01-16 15:58:13
路由器根据目标地址(而不是源地址)单独路由数据包。路由器不知道任何数据包都是对任何其他数据包的答复。这有时会导致不对称路由。
发布于 2017-01-16 15:58:05
通常,路由器在路由时只考虑目标IP。
许多路由器可以基于更复杂的条件进行路由,包括源地址,但这需要特别配置。这通常被称为“策略路由”。
最后,除非路由器也在进行NAT,否则将数据包发送给路由器是有点奇怪的。至少在Linux上,我发现策略路由和NAT之间存在问题,特别是用于策略路由的源IP Linux是原始的源IP,而不是翻译的源IP。我详细介绍了我在如何使多个子网能够使用一个资源而不以任何方式相互连接中找到的解决这个问题的方法。
https://networkengineering.stackexchange.com/questions/38103
复制相似问题