#  无法访问 QVM 实例中运行网站的详细排查方法

最近更新时间: 2020-08-14 11:28:37

> **免责声明：**
> 本文档可能包含第三方产品信息，该信息仅供参考。七牛云对第三方产品的性能、可靠性以及操作可能带来的潜在影响，不做任何暗示或其他形式的承诺。

# **概述**

本文主要介绍无法访问QVM实例中运行网站的排查方法。

# 详细信息

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

无法打开网站时，应该先查看报错提示的含义，查看报错原因。如果没有返回状态码，可参考以下步骤进行排查。

  * 网络通信问题
  * 端口通信问题
  * 防火墙配置异常
  * 重新配置安全组公网规则
  * 其他问题

## 网络通信问题

本节主要介绍分别在Linux系统和Windows系统中网络通信问题的排查方法。

### Linux实例网络通信问题排查

  1. 执行`ifconfig`或者`ip addr`命令，查看IP地址。系统显示类似如下。

![](http://qey2kbifv.hn-bkt.clouddn.com/2020-08-13/x7BhQt3aOb0ngIrpLc25.png)  
![](http://qey2kbifv.hn-bkt.clouddn.com/2020-08-13/hfTEYNDBSeMrjukdxUcK.png)

  2. 执行以下命令，通过实例路由表查看网关。
    
        route -n

系统显示类似如下。  
![](http://qey2kbifv.hn-bkt.clouddn.com/2020-08-13/OthW1KTVX6Y7DG2rslJ8.png)

  3. 使用ping命令访问公网，检查是否为网络通信问题。

### Windows实例网络通信问题排查

  1. 打开命令行窗口，执行以下命令，查看IP地址。
    
        ipconfig

  2. 执行以下命令，通过实例路由表查看网关。
    
        route print

> **说明** ：  
>
>      * 若网卡驱动未开启或网卡配置有问题，请检查网卡驱动，并重新安装。
>
>      * 关于网络相关问题的测试工具，请参见[ping
> 丢包或不通时链路测试说明](https://developer.qiniu.com/document_detail/40573.html)。

  3. 使用ping命令访问公网，检查是否为网络通信问题。

## 端口通信问题

本节主要介绍分别在Linux系统和Windows系统中端口通信问题的排查方法。

### Linux实例端口通信问题

  1. 执行以下命令，检测sshd服务的运行状态，确认端口是否有正常监听。
    
        netstat -antpu | grep sshd

系统显示类似如下。  

![sshdservice](http://qey2kbifv.hn-
bkt.clouddn.com/2020-08-13/pSdcZh4NiK3rUYfsRTvg.png)

  2. 根据不同操作系统，执行下列命令查看服务运行状态。

     * CentOS 6：`service sshd status`

     * CentOS 7：`systemctl status sshd`

  3. 如果sshd服务没有正常运行，则根据不同操作系统，执行下列命令手动启动sshd服务。
     * CentOS 6：`service sshd restart`
     * CentOS 7：`systemctl restart sshd`

  4. 查看sshd程序日志。

     * 如果无法正常启动sshd服务，CentOS 6系统一般会直接输出错误信息，而CentOS 7启动时没有输出信息，需要通过secure日志进行查看。sshd日志所在目录：`/var/log/secure`。

     * 通过secure日志的报错信息，一般是可以定位绝大部分sshd启动异常的问题。

### Windows 实例端口通信问题

依次执行以下命令，检测远程端口，其中[$PID]为第一条命令返回的PID值。

    
    
    Tasklist /svc | findstr "Ter"  
    netstat -ano | findstr "[$PID]"

系统返回类似如下。

![remoteport](http://qey2kbifv.hn-
bkt.clouddn.com/2020-08-13/EICiL0prQOUXw7zu9Mdm.png)

## 防火墙配置异常

本节主要介绍分别在Linux系统和Windows系统中防火墙配置异常的排查方法。

### Windows实例中关闭防火墙后连接恢复正常

> **注意：** 只有在已授权可关闭防火墙的情况下，才能做该项排查。

  1. 调整防火墙配置策略。。

  2. 调整后，重新进行远程连接。

### Linux实例中关闭Iptables后连接恢复正常

> **注意：** 只有在已授权可关闭Iptables的情况下，才能做调整Iptables配置策略排查。

  1. 执行以下命令，查看防火墙规则。
    
        iptables -nvL --line-number

> **说明** ：  
>
>      * -n：不对IP地址进行反查，加上这个参数显示速度会快很多。
>
>      * -v：输出详细信息，包含通过该规则的数据包数量、总字节数及相应的网络接口。
>
>      * -L：查看当前表的所有规则，默认查看的是filter表，如果要查看NAT表，可以加上`-t NAT`参数。

  2. 修改iptables规则，具体操作步骤如下所示。

> **说明** ：如果之前已设置过规则策略，则执行`cp -a /etc/sysconfig/iptables
> /etc/sysconfig/iptables.bak`命令保存一份原有的Iptables文件，避免丢失已设置过策略。

    1. 执行以下命令，清空实例上所有的规则。
        
                iptables -F

    2. 执行以下命令，拒绝INPUT方向所有的请求。
        
                iptables -P INPUT DROP

> **注意** ：线上业务请勿直接操作，会导致业务直接中断。

    3. 依次执行下列命令，放行80端口。
        
                iptables -A INPUT -p tcp --dport 80 -j ACCEPT  
        iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

或者您也可以参见以下命令，允许指定IP访问80端口，此处以“192.168.1.1”为例。

        
                iptables -I INPUT -s 192.168.1.1 -p tcp --dport 80 -j ACCEPT

    4. 执行以下命令，查看添加的规则是否生效。
        
                iptables -L

系统显示类似如下。

![iptables -L](http://qey2kbifv.hn-
bkt.clouddn.com/2020-08-13/CO5atMwmfNS7EPWDRkQx.png)

    5. 执行以下命令，保存添加的规则。
        
                iptables-save > /etc/sysconfig/iptables

  3. 执行`service iptables restart`或`/etc/init.d/iptables restart`命令，重启Iptables。

  4. 执行以下命令，重启实例验证配置。
    
        systemctl reboot

  5. 重新进行SSH连接实例。

## 重新配置安全组公网规则

由于安全组默认没有放行网站使用的端口（如80端口），因此需要自行放行该端口。以下是放行该端口的具体操作步骤，添加安全组公网规则。

  1. 登录[QVM 控制台](https://portal.qiniu.com/qvm/dashboard "登陆 QVM 控制台")，定位实例。
  2. 单击实例ID，进入详情页，再单击**本实例安全组** >**安全组列表** >**配置规则** 。
  3. 根据网站使用的端口配置新的安全组规则，放行网站使用的端口，最后单击**确定** 。

# 适用于

  * 云服务器QVM