You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EC2中Docker容器1880端口无法从公网访问的排查求助

排查思路:EC2上Docker容器1880端口公网无法访问的问题

根据你描述的情况——本地能通、22端口正常但1880端口无流量到达主机,咱们一步步拆解排查:

  • 优先核查EC2安全组规则
    网络ACL是无状态全允许,但安全组是状态化的,这是最容易疏漏的点。登录AWS控制台,找到你的EC2实例绑定的安全组,检查入站规则是否添加了允许TCP 1880端口的条目(测试阶段可以把来源设为0.0.0.0/0,之后再缩窄到指定IP)。注意别选错了实例对应的安全组,有时候会不小心关联到其他未配置的组。

  • 验证Docker端口映射是否生效
    容器内部监听1880不代表EC2主机也在监听这个端口。在EC2本地执行:

    ss -tulpn | grep 1880
    

    如果没有输出,说明启动容器时缺少端口映射参数(比如-p 1880:1880),需要重新启动容器,确保把容器的1880端口映射到EC2主机的1880端口。

  • 检查EC2本地防火墙规则
    部分EC2镜像(比如Ubuntu、CentOS)自带防火墙工具,可能拦截了1880端口:

    • 对于Ubuntu的ufw:执行ufw status,确认1880端口是否被允许;
    • 对于CentOS的firewalld:执行firewall-cmd --list-ports,查看1880/tcp是否在允许列表中;
    • 对于原生iptables:执行iptables -L -n | grep 1880,排查是否存在DROP或REJECT规则。
  • 确认容器内服务的监听地址
    如果容器里的服务只监听127.0.0.1,即使做了端口映射,外部也无法访问。进入容器执行:

    netstat -tulpn | grep 1880
    

    确保监听地址是0.0.0.0(代表绑定所有网卡),而不是仅localhost。比如Node-RED默认是0.0.0.0,但如果自定义配置修改过就会出问题。

  • 修正tcpdump的捕获范围
    你之前没抓到1880的数据包,可能是只监听了单个网卡。试试在EC2主机上执行:

    tcpdump -i any port 1880
    

    这个命令会捕获所有网卡的1880端口流量,之后再从公网发起请求,如果还是没抓到,说明流量根本没到达EC2主机,重点回到安全组和网络ACL的二次核查。

  • 二次确认网络ACL的双向规则
    虽然你说ACL是默认全允许,但还是要确认入站ACL允许TCP 1880,出站ACL允许所有响应流量(比如1024-65535端口的TCP)。ACL是无状态的,出站规则如果限制了响应端口,也会导致连接失败。

内容的提问来源于stack exchange,提问作者Mark Ryan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:53:41