您已在ECS管理控制台中配置了相应端口的安全组规则,但安全组规则似乎并未按预期生效,出现了无法访问应用或业务的情况。本文介绍ECS实例的安全组规则未生效问题排查的方法。
问题原因
导致该问题的可能原因如下:
ECS实例未加入已配置规则的对应安全组中,即ECS实例与安全组不关联。
实例内对应程序或服务未正常启动。
实例中对应端口没有被正常监听。
实例中端口监听地址配置为单个特定IP地址。
安全组规则配置错误,与实际期望不符。
实例内系统自带防火墙限制导致端口未开放。
解决方案
ECS实例的安全组规则未生效的现象和原因较多,请您进行以下操作快速排查问题。
检查ECS实例是否已加入目标安全组
如果实例未加入已配置对应规则的安全组,则安全组规则不会对该实例生效。
您可以进入实例详情页面,查看实例绑定的安全组信息。具体操作,请参见查看实例信息。
您可以将ECS实例加入一个或多个安全组。具体操作,请参见安全组与ECS实例关联的管理。
检查服务状态及端口监听状态
即使安全组或防火墙规则已被设置为允许特定端口的流量通过,但如果实例内对应的服务没有正常启动,或者端口未被正常监听,则该端口的连接请求将无法得到响应,进而导致连接失败。具体操作,请参见检查服务状态及端口监听状态。
检查端口监听地址配置是否正确
端口监听地址的配置决定了服务可以接受来自单个还是全部网络接口的连接请求:
当监听地址设为
0.0.0.0
时,服务将接受通过服务器上任何IPv4网络接口发起的连接请求,不限制源IP地址。若监听地址设置为特定IP地址,服务仅接受发送到该特定IP的连接请求,从而限制服务只在指定的网络接口上可访问。
例如,如果一个服务器具有两个IP地址,192.168.XX.XX
和10.0.XX.XX
,且某个服务的监听地址设定为192.168.XX.XX
,那么只有通过192.168.XX.XX
这个地址发起的连接请求才会被接受,通过10.0.XX.XX
或任何其他地址到此服务的连接请求都会被拒绝。
您可以修改端口监听地址。具体操作,请参见Linux系统的ECS实例中如何修改Nginx、Tomcat等Web服务的端口监听地址。
检查安全组规则配置是否正确
请您根据以下内容进行安全组规则排查。具体操作,请参见检查ECS实例安全组规则。
核查安全组规则配置,确认协议类型、端口号和源IP地址段等参数是否与期望匹配,并确保对应规则满足特定访问需求。
如果实例关联了多个安全组,需确保当前规则优先级足够高,或者在其他安全组中没有冲突且优先级更高的规则。
您也可以通过使用安全组规则检测功能,主动判断安全组允许和拒绝访问的情况是否符合预期。具体操作,请参见安全组规则检测。
针对网站提供Web服务、远程连接实例等常见场景,为您提供了一些安全组规则配置示例。更多信息,请参见安全组应用案例。
有关更多安全组规则信息,请参见安全组规则。
检查实例内系统防火墙对开放端口的限制
除了安全组规则之外,请检查ECS实例内系统自带的防火墙设置,确保其未阻止对应端口的访问,并避免与安全组规则发生冲突。具体操作,请参见检查ECS防火墙设置。
您也可以关闭防火墙改为使用安全组。具体操作,请参见开启或关闭Linux实例中的系统防火墙。