我在通过TCP从internet访问在码头容器(端口5005)中运行的服务时遇到了问题。
服务器是一个ubuntu ec2实例,在安全组中打开端口5005 ( v4和v6寻址)。

码头进程运行良好,似乎将端口从其容器内映射到ec2实例。
ubuntu@ip-172-31-5-89:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
71e620ea2969 rasa/rasa-sdk:latest "./entrypoint.sh sta…" 15 minutes ago Up 15 minutes 0.0.0.0:5055->5055/tcp, :::5055->5055/tcp emma_action_server_1
533010182ca7 rasa/rasa:latest-full "rasa run --enable-a…" 15 minutes ago Up 15 minutes 0.0.0.0:5005->5005/tcp, :::5005->5005/tcp emma_rasa_1(是的,5005和5055都是有效的端口,而不是一个错误--但只有5005应该公开给ec2实例,并通过防火墙向web公开。ufw似乎在向港口发出信号。
Status: active
To Action From
-- ------ ----
5005/tcp ALLOW Anywhere
5005 ALLOW Anywhere
22 ALLOW Anywhere
5005/tcp (v6) ALLOW Anywhere (v6)
5005 (v6) ALLOW Anywhere (v6)
22 (v6) ALLOW Anywhere (v6) ec2实例似乎很好地侦听:
ubuntu@ip-172-31-5-89:~$ sudo netstat -plunta | grep LISTEN
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 561/systemd-resolve
tcp 0 0 0.0.0.0:5055 0.0.0.0:* LISTEN 6473/docker-proxy
tcp 0 0 0.0.0.0:5005 0.0.0.0:* LISTEN 6451/docker-proxy
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 810/sshd: /usr/sbin
tcp6 0 0 :::5055 :::* LISTEN 6480/docker-proxy
tcp6 0 0 :::5005 :::* LISTEN 6458/docker-proxy
tcp6 0 0 :::22 :::* LISTEN 810/sshd: /usr/sbin 然而,当我尝试在任何在线端口检查工具上访问public.IP.address:5005时,它说端口关闭了。当我试图通过邮递员发出一个帖子请求-我得到ETIMEDOUT,我不确定这是不是另一种方式来表示它关闭,或事实上,它只是一个超时.但是,当我在服务器上发出相同的POST请求时,使用本地地址,它可以正常工作。
它在ec2 (容器外)上本地工作:
curl -XPOST localhost:5005/webhooks/rest/webhook -d '{"message":"hi"}'这是行不通的- ETIMEOUT:
curl -XPOST publicIPAddressHere:5005/webhooks/rest/webhook -d '{"message":"hi"}'ACL和Network的设置也是正确的。


当我运行可达性分析器时,它可以工作--但这显然来自网络内部的私有IP地址.172..。所以这个问题显然是把港口暴露在世界面前。
发布于 2022-10-12 20:13:46
我能够通过在自己的VPC/ACL上创建一个新的ec2实例来实现这一点,其配置与上面的配置相同。
这并不是一个真正的答案,因为它是一个在系统中工作的捣蛋鬼。
https://stackoverflow.com/questions/74009120
复制相似问题