为什么同一个路由器根据源ip选择不同的路由?

为什么同一个路由器根据源ip选择不同的路由?

我正在 ping同一IP在两台不同的 PC 上,使用两个不同的 ISP。使用一个 ISP,我得到了回复,使用另一个 ISP,我没有得到回复。

当对 IP 运行 tracert 时,我发现两个 ISP 的数据包都在某一点经过同一个路由器。

此时,第一个 ISP 会将数据包转发到正确的下一个路由器,而另一个 ISP 则会将数据包路由到错误的路由器,从而将数据包丢弃。

我的问题是:为什么路由器会根据数据包的源 IP 来选择将数据包转发到哪里?在两种情况下,数据包具有相同的目标 IP,并且路由器根据 ISP 做出不同的选择。

这是常见事吗?

答案1

确实可以根据数据包的源地址来路由数据包:

https://en.wikipedia.org/wiki/Source_routing
https://en.wikipedia.org/wiki/Policy-based_routing

以下是 Cisco 路由器的一些示例:

http://www.cisco.com/en/US/docs/ios/12_2/qos/configuration/guide/qcfpbr_ps1835_TSD_Products_Configuration_Guide_Chapter.html

至于为什么网络管理员会选择这样做……只有他知道。

答案2

听起来像是基于 IP 的防火墙。如果源数据包来自已知的“坏”网络,则将其丢弃。这实际上是相当常见的做法。如果 ISP 是大量垃圾邮件或企图攻击的来源,您只需用防火墙阻断其 IP 块即可。甚至有服务试图为公司提供黑帽 ISP 列表,因为这种“打地鼠”游戏可能会耗费大量时间。

http://en.wikipedia.org/wiki/Blacklist_(computing)

发生这种情况的另一个原因是,对于负载平衡服务器,使用的哈希算法通常基于源 IP 地址。这对于访问频繁使用的网站来说非常常见。实际上是第二个路由器丢弃了数据包,还是仅仅是主机宕机了?

相关内容