阿里服务器安全组的设置

[复制链接]
866|0
keer_zu 发表于 2025-11-7 00:42 | 显示全部楼层 |阅读模式

安全组是否必须创建?

回答:是的,安全组是必须的。

为什么安全组是必需的?

1. 网络安全基础

  • 阿里云默认策略:新创建的 ECS 实例如果没有绑定安全组,默认会拒绝所有入站流量
  • 防火墙功能:安全组是阿里云的虚拟防火墙,控制着实例的入站和出站流量

2. 当前状态分析

从您的系统信息可以看到 sudo ufw status 显示 Status: inactive,这意味着:

  • 系统级防火墙未启用
  • 但阿里云的网络级安全组仍然在工作
  • 如果没有配置安全组规则,外部无法访问您的 EMQX 服务

如果不创建安全组会怎样?

连接测试结果

# 从外部测试会失败
telnet 您的服务器IP 1883
# 连接被拒绝

# 管理控制台无法访问
http://您的服务器IP:18083
# 页面无法加载

EMQX 状态检查

虽然在服务器内部 EMQX 运行正常:

sudo systemctl status emqx  # 显示正常运行
sudo netstat -tlnp | grep emqx  # 显示端口在监听

但外部客户端无法建立连接,因为阿里云的网络层面阻止了流量。

替代方案(不推荐)

方案一:使用默认安全组(如果存在)

检查是否已有默认安全组:

  1. 登录阿里云控制台
  2. 进入 ECS 管理页面
  3. 查看您的实例是否已经绑定了某个安全组
  4. 如果有,直接修改该安全组的规则

方案二:极简安全组配置

如果只想快速测试,可以创建最小化的安全组:

# 只开放绝对必要的端口
# 入方向规则:
# - 端口: 22 (SSH) - 授权对象: 您的IP/32
# - 端口: 1883 (MQTT) - 授权对象: 0.0.0.0/0
# - 端口: 18083 (Dashboard) - 授权对象: 您的IP/32

验证当前网络状态

您可以通过以下命令验证当前网络连通性:

# 在您的服务器上测试本地连接(应该成功)
telnet localhost 1883

# 从另一台服务器测试外部连接(应该失败)
telnet 您的服务器公网IP 1883

实际操作建议

快速创建安全组的步骤

  1. 登录阿里云控制台ECS安全组
  2. 创建安全组
    • 名称:emqx-basic
    • 网络类型:专有网络
  3. 添加入方向规则(最少配置):
    协议类型 | 端口范围 | 授权对象
    TCP      | 22/22    | 您的IP/32      (SSH)
    TCP      | 1883/1883| 0.0.0.0/0      (MQTT)
    TCP      | 18083/18083| 您的IP/32      (Dashboard)
    
  4. 绑定到 ECS 实例

立即测试

配置完成后立即测试:

# 从外部机器测试 MQTT 连接
mosquitto_pub -h 您的服务器IP -t "test" -m "connection test"

# 访问管理控制台
http://您的服务器IP:18083

总结

安全组是阿里云 ECS 实例访问控制的必要组件。没有正确配置安全组,即使 EMQX 服务在服务器内部正常运行,外部客户端也无法连接到您的 MQTT Broker。

建议操作:花 5-10 分钟在阿里云控制台创建并配置安全组,这是让 EMQX 正常对外服务的必要步骤。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群:49734243 Email:zukeqiang@gmail.com

1497

主题

12969

帖子

55

粉丝
快速回复 在线客服 返回列表 返回顶部