本文介绍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作为出站流量的源地址(需显式指定)。
- 远程连接Windows实例。 - 具体操作,请参见使用Workbench工具以RDP协议登录Windows实例。 
- 在Windows PowerShell中,执行 - ipconfig命令,查看私网IP地址和网关。- 如果主私网IP与下一跳IP的前缀匹配短于辅助私网IP与下一跳IP的前缀匹配,请继续执行下一步。 说明- 具体前缀匹配规则说明,请参见问题原因。  
- 打开网络和共享中心。 
- 单击更改适配器设置。 
- 双击当前主网卡网络名称以太网,然后在以太网状态对话框中单击属性。  
- 在以太网属性对话框中,双击Internet 协议版本4(TCP/IPv4)。  
- 在Internet 协议版本4(TCP/IPv4)属性对话框中,选择使用下面的IP地址,然后单击高级。 重要- 此处改变了自动获取IP的策略,完全为手动配置,因此下面的配置也需要配置网卡的主私网IP地址。否则会导致实例无法通过主私网IP远程连接。  
- 在高级TCP/IP设置对话框中,设置IP地址。 - 在IP地址区域,仅保留已分配的以太网的主私网IP地址和子网掩码,删除辅助私网IP内容。 
- 在默认网关区域,单击添加,然后输入查询获取的默认网关。  
 
- 在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
- 从ECS实例中访问外网,如果可以正常访问,说明问题已解决。