本文介紹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實例中訪問外網,如果可以正常訪問,說明問題已解決。