为什么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.68)与下一跳IP地址(网关:192.168.1.127)的前缀匹配长于主私网IP地址(192.168.1.14)与下一跳IP地址(网关:192.168.1.127)的前缀匹配,所以辅助私网IP的优先级高于主私网IP,出网流量将由辅助私网IP发送。

私网IP地址

二进制地址

主私网IP

192.168.1.14

11000000 10101000 00000001 00001110

辅助私网IP

192.168.1.68

11000000 10101000 00000001 01000100

网关

192.168.1.127

11000000 10101000 00000001 01111111

解决方案

您可以通过Netsh命令设置辅助私网IP,将skipassource设置为true以解决该问题。

  1. 远程连接Windows实例。

    具体操作,请参见通过密码或密钥认证登录Windows实例

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

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

    说明

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

    image.png

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

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

    参数说明如下:

    辅助私网IP信息

    说明

    示例

    <Interface>

    辅助私网IP的网络接口

    '以太网'

    <IP Addr>

    辅助私网IP地址

    192.168.0.100

    <Netmask>

    辅助私网IP的掩码

    255.255.255.0

    示例说明如下:

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