本文介绍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以解决该问题。
远程连接Windows实例。
具体操作,请参见通过密码或密钥认证登录Windows实例。
在Windows PowerShell中,执行
ipconfig
命令,查看私网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.0.100
<Netmask>
辅助私网IP的掩码
255.255.255.0
示例说明如下:
Netsh int ipv4 add address '以太网' 192.168.0.100 255.255.255.0 skipassource=true
从ECS实例中访问外网,如果可以正常访问,说明问题已解决。