概述
本文主要介绍无法访问ECS实例中运行网站的排查方法。
详细信息
无法打开网站时,应该先查看报错提示的含义,查看报错原因。如果没有返回状态码,可参考以下步骤进行排查。
- 网络通信问题
- 端口通信问题
- 防火墙配置异常
- 重新配置安全组公网规则
- 其他问题
网络通信问题
本节主要介绍分别在Linux系统和Windows系统中网络通信问题的排查方法。
Linux实例网络通信问题排查
- 执行
ifconfig
或者ip addr
命令,查看IP地址。系统显示类似如下。
- 执行以下命令,通过实例路由表查看网关。
route -n
系统显示类似如下。
- 使用ping命令访问公网,检查是否为网络通信问题。
Windows实例网络通信问题排查
- 打开命令行窗口,执行以下命令,查看IP地址。
ipconfig
- 执行以下命令,通过实例路由表查看网关。
route print
说明:
- 若网卡驱动未开启或网卡配置有问题,请检查网卡驱动,并重新安装。
- 关于网络相关问题的测试工具,请参见ping 丢包或不通时链路测试说明。
- 使用ping命令访问公网,检查是否为网络通信问题。
端口通信问题
本节主要介绍分别在Linux系统和Windows系统中端口通信问题的排查方法。
Linux实例端口通信问题
- 执行以下命令,检测sshd服务的运行状态,确认端口是否有正常监听。
netstat -antpu | grep sshd
系统显示类似如下。
- 根据不同操作系统,执行下列命令查看服务运行状态。
- CentOS 6:
service sshd status
- CentOS 7:
systemctl status sshd
- CentOS 6:
- 如果sshd服务没有正常运行,则根据不同操作系统,执行下列命令手动启动sshd服务。
- CentOS 6:
service sshd restart
- CentOS 7:
systemctl restart sshd
- CentOS 6:
- 查看sshd程序日志。
- 如果无法正常启动sshd服务,CentOS 6系统一般会直接输出错误信息,而CentOS 7启动时没有输出信息,需要通过secure日志进行查看。sshd日志所在目录:
/var/log/secure
。 - 通过secure日志的报错信息,一般是可以定位绝大部分sshd启动异常的问题。
- 如果无法正常启动sshd服务,CentOS 6系统一般会直接输出错误信息,而CentOS 7启动时没有输出信息,需要通过secure日志进行查看。sshd日志所在目录:
Windows 实例端口通信问题
依次执行以下命令,检测远程端口,其中[$PID]为第一条命令返回的PID值。
Tasklist /svc | findstr "Ter" netstat -ano | findstr "[$PID]"
系统返回类似如下。
防火墙配置异常
本节主要介绍分别在Linux系统和Windows系统中防火墙配置异常的排查方法。
Windows实例中关闭防火墙后连接恢复正常
注意:只有在已授权可关闭防火墙的情况下,才能做该项排查。
- 调整防火墙配置策略。有关配置方案,请参见设置 Windows 实例远程连接防火墙。
- 调整后,重新进行远程连接。
Linux实例中关闭Iptables后连接恢复正常
注意:只有在已授权可关闭Iptables的情况下,才能做调整Iptables配置策略排查。
- 执行以下命令,查看防火墙规则。
iptables -nvL --line-number
说明:
- -n:不对IP地址进行反查,加上这个参数显示速度会快很多。
- -v:输出详细信息,包含通过该规则的数据包数量、总字节数及相应的网络接口。
- -L:查看当前表的所有规则,默认查看的是filter表,如果要查看NAT表,可以加上
-t NAT
参数。
- 修改iptables规则,具体操作步骤如下所示。
说明:如果之前已设置过规则策略,则执行
cp -a /etc/sysconfig/iptables /etc/sysconfig/iptables.bak
命令保存一份原有的Iptables文件,避免丢失已设置过策略。- 执行以下命令,清空实例上所有的规则。
iptables -F
- 执行以下命令,拒绝INPUT方向所有的请求。
iptables -P INPUT DROP
注意:线上业务请勿直接操作,会导致业务直接中断。
- 依次执行下列命令,放行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
- 执行以下命令,查看添加的规则是否生效。
iptables -L
系统显示类似如下。
- 执行以下命令,保存添加的规则。
iptables-save > /etc/sysconfig/iptables
- 执行以下命令,清空实例上所有的规则。
- 执行
service iptables restart
或/etc/init.d/iptables restart
命令,重启Iptables。 - 执行以下命令,重启实例验证配置。
systemctl reboot
- 重新进行SSH连接实例。
重新配置安全组公网规则
由于安全组默认没有放行网站使用的端口(如80端口),因此需要自行放行该端口。以下是放行该端口的具体操作步骤。想了解更多安全组规则相关信息,可参见添加安全组规则,添加安全组公网规则。
- 登录ECS 控制台,定位实例。
- 单击实例ID,进入详情页,再单击本实例安全组>安全组列表>配置规则。
- 根据网站使用的端口配置新的安全组规则,放行网站使用的端口,最后单击确定。
其他问题
引发网站访问异常的相关因素及症状很多,如果您需要了解更多ECS实例中网站无法访问的原因,请参见访问ECS实例异常时的因素。
如问题无法解决,可联系【云技术在线】工程师提供技术支持。