如果默认网关发生变化,现有连接会发生什么情况?

如果默认网关发生变化,现有连接会发生什么情况?

我一直在思考以下场景:

+-------+        +-------+
| ISP 1 |        | ISP 2 |
+-------+        +-------+
  |                    |
  |     +--------+     |
  --eth0| ROUTER |eth1--
        +--------+
           eth2
             |
             |
          +----+
          | PC |
          +----+

ROUTER 是一台具有三个网络接口的 Linux 机器:

接口 eth0 连接到主互联网提供商,并配置为执行源 NAT。
接口 eth1 连接到备用互联网提供商,并配置为执行源 NAT。
接口 eth2 连接到普通 PC。

接口 eth0 配置为默认路由,因此 PC 将通过 ISP 1 访问互联网。

假设用户开始在 PC 上从互联网下载一个大文件,然后 ISP 1 离线。如果将 ROUTER 上的默认路由更改为 eth1,会发生什么情况?下载会继续吗?

答案1

好吧,建立的下载会话将在 ISP1 的 IP 地址、Eth0 上的外部 NAT 地址和远程主机(假设为 netflix)之间进行,当 ISP1 无法访问时,netflix 将不知道 ISP2,并且不会通过 ISP2 从它与 ISP1 的地址建立的会话发送任何数据。如果 ISP1 路径上的路由器没有创建 ICMP 错误(例如“HOST UNREACHABLE”或“NO ROUTE T​​O HOST”),则在 TCP 计时器到期后,如果未从您的系统收到带有 ISP1 NAT 地址的 ACK 消息,则连接将超时。

您的系统可能会尝试使用 ISP2 的 NAT 地址确认其最后收到的数据包,但 netflix 会忽略这些数据包,因为会话是在 ISP1 和 netflix 之间进行的。

如果您没有使用 NAT,有自己的可移植 IP 分配,并且与两个 ISP 有 BGP 对等连接,那么您的传输将继续进行,并且中断最少,除非路由器在此期间由于路由表发生变化而发出如上所述的 ICMP 错误。

相关内容