本文介绍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登录Windows实例。
-
在Windows PowerShell中,执行
ipconfig命令,查看私网IP地址和网关。如果主私网IP与下一跳IP的前缀匹配短于辅助私网IP与下一跳IP的前缀匹配,请继续执行下一步。
说明具体前缀匹配规则说明,请参见问题原因。
PS C:\Users\Administrator> ipconfig Windows IP 配置 以太网适配器 以太网: 连接特定的 DNS 后缀 . . . . . . : 本地链接 IPv6 地址. . . . . . . . : fe80::99e0:a786:fca5:4601%5 IPv4 地址 . . . . . . . . . . . . : 192.168.1.14 子网掩码 . . . . . . . . . . . . : 255.255.255.0 IPv4 地址 . . . . . . . . . . . . : 192.168.1.252 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 192.168.1.253 -
打开网络和共享中心。
-
单击更改适配器设置。
-
双击当前主网卡网络名称以太网,然后在以太网状态对话框中单击属性。
在控制面板 > 网络和 Internet > 网络连接路径下,主网卡适配器型号显示为 Red Hat VirtIO Ethernet Adapter。
-
在以太网属性对话框中,双击Internet 协议版本4(TCP/IPv4)。
-
在Internet 协议版本4(TCP/IPv4)属性对话框中,选择使用下面的IP地址,然后单击高级。
重要此处改变了自动获取IP的策略,完全为手动配置,因此下面的配置也需要配置网卡的主私网IP地址。否则会导致实例无法通过主私网IP远程连接。
-
在高级TCP/IP设置对话框中,设置IP地址。
-
在IP地址区域,仅保留已分配的以太网的主私网IP地址和子网掩码,删除辅助私网IP内容。
-
在默认网关区域,单击添加,然后输入查询获取的默认网关。
操作完成后,高级 TCP/IP 设置 对话框的 IP 地址 区域显示已配置的地址(如
192.168.1.14,子网掩码255.255.255.0),默认网关 区域显示已添加的网关(如192.168.1.253)。
-
-
在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实例中访问外网,如果可以正常访问,说明问题已解决。