使用VPC网络的ECS实例无法通过公网EIP访问

问题描述

在Windows 2012系统的ECS实例中使用IIS服务的时候,由经典网络迁移到专有网络VPC之后出现以下问题。
  • 网站不可访问。
  • 直接访问ECS实例的弹性公网IP(EIP)地址时,显示“ERR_CONNECTION_REFUSED” 错误。
  • 打开了安全组相关访问策略,还是无法连通网站。
  • 使用telnet命令测试3389端口可通,测试80端口不通。

问题原因

ECS实例没有绑定内网IP地址。

解决方案

排查过程

  1. 登录服务器,执行如下命令,查看80端口是否被监听。
    netstat  -ant
    
    系统显示类似如下,80端口并未监听。
  2. 打开IIS,启动应用时报“无法启动此网站,其他网站可能正在使用同一端口”错误,说明80端口有冲突。
  3. 查看站点绑定的地址,站点全部绑定了EIP,原来经典网络的公网IP建议修改为全部未分配或者内网IP。
  4. 按照上述步骤操作后,还是无法显示监听80端口,但是直接通过localhost或者127.0.0.1访问站点,可以正常访问。
  5. 执行如下命令,查看监听的信息。
    netsh http show iplisten
    
    系统显示类似如下,没有绑定内网IP。

解决方法

  1. 执行如下命令,添加内网IP。
    netsh http add iplisten ipaddress=[$IP]
    
    注:[$IP]为内网IP地址。
    系统显示类似如下。
  2. 执行如下命令,查看监听的信息。
    netsh http show iplisten
    
    系统显示类似如下,说明添加成功。
  3. 设置完成后,通过公网可以正常访问网站。

适用于

  • 云服务器ECS