为什么Windows系统的ECS实例配置辅助私网IP后,无法从ECS实例中访问公网环境?

本文介绍Windows系统的ECS实例配置辅助私网IP后,无法从ECS实例中访问公网环境的问题原因和解决方案。

问题现象

Windows系统的ECS实例配置辅助私网IP后,无法从ECS实例中访问公网环境。

问题原因

Windows Server 2008之后的操作系统,微软将出网IP策略调整为选择与下一跳IP的前缀匹配(matching prefix)最长的IP。

假设当前ECS实例使用的是Windows Server 2008之后的版本,且实例的私网IP地址和网关的配置如下,因为辅助私网IP地址(192.168.1.252)与下一跳IP地址(网关:192.168.1.253)的前缀匹配长于主私网IP地址(192.168.1.14)与下一跳IP地址(网关:192.168.1.253)的前缀匹配,所以辅助私网IP的优先级高于主私网IP,出网流量将由辅助私网IP发送。

私网IP地址

二进制地址

主私网IP

192.168.1.14

11000000 10101000 00000001 00001110

辅助私网IP

192.168.1.252

11000000 10101000 00000001 01111110

网关

192.168.1.253

11000000 10101000 00000001 01111111

解决方案

说明
  • 示例操作系统:Windows Server 2022。

  • 示例网卡:以主网卡以太网为例演示操作,请根据实际情况修改网卡标识符,如以太网2

您可以通过Netsh命令设置辅助私网IP,并设置skipassource=true来禁止系统默认使用此IP作为出站流量的源地址(需显式指定)。

  1. 远程连接Windows实例。

    具体操作,请参见使用Workbench工具以RDP协议登录Windows实例

  2. Windows PowerShell中,执行ipconfig命令,查看私网IP地址和网关。

    如果主私网IP与下一跳IP的前缀匹配短于辅助私网IP与下一跳IP的前缀匹配,请继续执行下一步。

    说明

    具体前缀匹配规则说明,请参见问题原因

    image

  3. 打开网络和共享中心。

  4. 单击更改适配器设置

  5. 双击当前主网卡网络名称以太网,然后在以太网状态对话框中单击属性

    image

  6. 以太网属性对话框中,双击Internet 协议版本4(TCP/IPv4)

    image

  7. Internet 协议版本4(TCP/IPv4)属性对话框中,选择使用下面的IP地址,然后单击高级

    重要

    此处改变了自动获取IP的策略,完全为手动配置,因此下面的配置也需要配置网卡的主私网IP地址。否则会导致实例无法通过主私网IP远程连接。

    image

  8. 高级TCP/IP设置对话框中,设置IP地址。

    1. IP地址区域,仅保留已分配的以太网的主私网IP地址和子网掩码,删除辅助私网IP内容。

    2. 默认网关区域,单击添加,然后输入查询获取的默认网关

      image

  9. Windows PowerShell中,执行如下命令,将skipassource设置为true。

    Netsh int ipv4 add address <Interface> <IP Addr> [<Netmask>] [skipassource=true]

    参数说明如下:

    辅助私网IP信息

    说明

    示例

    <Interface>

    辅助私网IP的网络接口

    '以太网'

    <IP Addr>

    辅助私网IP地址

    192.168.1.252

    <Netmask>

    辅助私网IP的掩码

    255.255.255.0

    示例说明如下:

    Netsh int ipv4 add address '以太网' 192.168.1.252 255.255.255.0 skipassource=true
  10. ECS实例中访问外网,如果可以正常访问,说明问题已解决。