问题现象
云主机端口不通,会导致云主机之间无法通信或云主机无法对外服务,会影响应用或服务间的调用,或者用户对服务的访问。
根因分析
可能有以下几种原因导致端口不通:
- 在控制台界面,云主机所在安全组未放行该端口;
- 应用服务配置存在问题,对外服务端口未被正常监听;
- 操作系统内,防火墙配置策略异常,如防火墙未放行端口访问。
问题定位步骤
本文分别对Windows和Linux操作系统的远程连接端口进行排查,以下为操作步骤。
Windows 操作系统
此部分以Windows Server 2012操作系统的云主机为示例,对云主机无法远程连接问题的定位步骤。
步骤1:排查安全组是否放通Windows远程连接端口3389。
- 登录控制中心,选择云主机所在区域,点击“弹性云主机”进入云主机控制台。
- 在云主机列表,点击需要远程连接的云主机实例名称。
- 点击“安全组”页签,查看安全组规则。
- 检查云主机所在的安全组是否已添加3389入方向的安全组规则。
步骤2 :排查端口是否正常被监听。
在Windows操作系统中打开cmd窗口,执行如下命令。
netstat -ano | findstr :3389
如果回显信息如下则说明3389端口正常全网监听。否则,请开启监听。
步骤3 :排查防火墙已经放行服务。
- 单击“控制面板”>“Windows防火墙”。
- 根据防火墙状态,如果防火墙处于关闭状态,且您不需要使用防火墙,则无需再做其他处理。
- 如果防火墙处于开启状态,则单击“高级设置”。
- 在弹出窗口的左侧导航栏中,单击“入站规则”。
- 右键“入站规则”>新建入站规则>选择“端口”>填写“需要放开的端口”完成配置。
Linux 操作系统
此部分以CentOS 7.8操作系统的云主机为示例,对云主机无法远程连接问题的定位步骤。
步骤1 :确认安全组已经放行22端口。
-
登录控制中心,选择云主机所在区域,点击“弹性云主机”进入云主机控制台。
-
在云主机列表,点击需要远程连接的云主机实例名称。
-
点击“安全组”页签,查看安全组规则。
-
检查云主机所在的安全组是否已添加22入方向的安全组规则。
步骤2 :可通过控制台登录云主机操作系统,确认远程连接服务已经开启。
执行如下命令,检查sshd服务是否已经开启。
systemctl status sshd
回显信息如下所示,则说明sshd已经启动。
如果未开启,则执行以下命令启动sshd服务。
systemctl start sshd
步骤3 :执行如下命令,查看22端口在实例中是否正常被监听。
netstat -ant | grep 22
回显信息则说明22端口正常全网监听。如果返回的不是上述结果,请开启监听。
步骤4 :查看防火墙iptables规则列表,排查防火墙是否已经放行服务。
- 执行以下命令,查看防火墙状态。
systemctl status firewalld 或 firewall-cmd --state
- 根据防火墙状态,如果防火墙处于关闭状态,且您不需要使用防火墙,则无需再做其他处理。如果您需要使用防火墙,且防火墙处于关闭状态,可以执行以下命令开启。
systemctl start firewalld
- 如果开启命令执行后提示“Failed to start firewalld.service: Unit is masked.”请执行以下命令后再重新执行开启防火墙的命令。
systemctl unmask firewalld
- 查看打开的端口。(如果没有已打开的端口则无返回结果)
firewall-cmd --zone=public --list-ports
- 放行TCP 22端口。
firewall-cmd --zone=public --add-port=22/tcp --permanent
- 更新防火墙规则。再次执行查看打开的端口命令,将会返回已打开的接口。
firewall-cmd --reload