本文介绍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实例中访问外网,如果可以正常访问,说明问题已解决。