Windows实例通过外部访问网络不通的处理

Windows实例通过外部访问网络不通的处理

更新时间:2020-03-24 10:01:50

概述

本文介绍Windows实例不能正常通过外部网络访问的处理方法。

 

详情描述

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

 

网络不通原因

用户从外部访问Windows实例时,发现无法ping通、无法访问业务、或者无法telnet到业务监听的端口。从公网客户端访问到阿里云ECS会经过多跳网络链路,此类网络不通有非常多的可能原因,此处介绍如下几种可能。

  • 公网客户端的自身网络问题。
  • 公网ISP运营商的管控。
  • 公网客户端访问的异常行为触发Windows实例的安全组策略导致网络管控。
  • Windows实例安全组的错误配置。
  • Windows实例账号欠费。
  • Windows实例系统性能问题。
  • Windows实例上业务服务未监听或者服务状态异常。
  • Windows实例上防火墙的限制。
  • Windows实例安装的三方杀毒软件的限制。
  • Windows实例被病毒、木马影响。
  • Windows实例TCP/IP协议栈自身Bug或者兼容性问题导致。
  • Windows实例安装了路由与远程服务后,配置错误。
  • Windows实例路由表、网络配置错误。

 

排查方案

根据以上问题原因,此处分别介绍通过逐步排查和抓网络包分析两种处理方法。

 

方法一:逐步实践排查

请根据现场情况,选择以下合适的排查步骤。

  • 在云盾中检查该ECS实例状态,确认其状态正常。
  • 检查是否针对特定网段的网络不通。如果是,可能与运营商管控有关。
  • 使用ipconfig all命令检查网卡配置是否正确。在 运行 中,输入ncpa.cpl打开网络共享与管理中心,检查网卡状态是否正常收发。
  • 使用route print命令检查Windows实例路由表,查看Active路由中是否配置正确。
  • 通过nslookupping命令检查是否有DNS解析问题。
    提示:关于PING命令检查,请参考在ECS实例的Windows服务器PING外网提示一般故障处理方法
  • 检查Windows实例是否有性能问题,如CPU资源占用高、内存耗尽、带宽占用满、网络动态端口耗尽。
    提示:检查Windows实例性能问题,请参考Windows系统内存分析工具的介绍
  • 检查Windows实例安全组是否有配置错误,更改安全组配置允许所有网络通信进行测试。
  • 尝试禁用Windows实例中防火墙策略,检查是否可以通信。如果禁用后可以通信,请检查防火墙策略配置。
  • 尝试禁用或者卸载Windows实例中第三方杀毒软件,检查问题是否仍然存在。
  • 请运行Windows Update程序,安装最新版本的补丁,排除操作系统TCP/IP协议栈自身问题。
  • 通过如下命令,检查Windows实例上运行的服务对应端口是否有在正确监听。
    netstat -ano | findstr [$Prot]
    注:[$Prot]为需要查看的端口号。
  • 在Windows实例上依次执行如下命令,尝试禁用Windows实例的TCP Chimney、RSS和IP Offload等高级功能来排除网卡兼容性问题。
    提示:通过管理员权限打开Windows实例命令行。
    netsh int tcp set global chimney=disabled
    netsh int tcp set global RSS=disabled
    netsh int ip set global taskoffload=disabled
    netsh int tcp set global ecncapability=disabled #仅对Windows Server 2012操作系统版本有效
    注:
    • 上述命令执行的功能,只是为Windows实例的系统提高性能与网卡硬件协同提供的高级功能,禁用后不会对系统有影响,后无需重启实例或系统。如果需要恢复默认设置,请替换以上命令的disabledenabled,并再次执行即可。
    • Windows Server 2012引入的新功能ECN(Explicit Congestion Notification)根据RFC规定来减少网络包重传的机制,但是由于国内某些ISP封杀此类的SYN包,导致目标机器无法收到带有ECN标志的SYN包,Windows机器在发送2次ECN包没有得到响应后(第一次重传3秒,第二次重传6秒),会采用没有ECN标志位的SYN包,后续可以连接成功。如果遇到很久才能建立公网访问连接的情况,请禁用该功能后测试。更多ECN说明请参考文档Delays when you print from a server that's running Windows Server 2012
  • 使用Route Print命令检查Windows实例的路由表,查看Active路由中是否配置正确,检查与网关通信是否正常。

 

方法二:网络抓包分析

通过Wireshark工具进行网络抓包分析,分别在客户端、阿里IDC入口处和Windows实例三个抓包点,进行抓取网络包,并提交全部抓取的网络包给阿里云技术支持分析,包括客户端MTR到Windows实例的输出结果和Windows实例MTR到客户端的输出结果,也一并提交阿里云技术支持。关于Wireshark工具的使用说明,请参考其官方文档抓包点图例分析如下。

 

适用于

  • 云服务器 ECS