问题描述
我正在 ec2 上运行一个容器(docker-compose up)。并希望通过 Nginx 路由流量。 最初是为了测试工作,我允许来自端口 9000 的流量。测试后我删除了规则,但我可以从外部访问它,我注意到的另一个奇怪的问题是我可以从几个访问流量如果我只是更改侦听端口,其他端口也是如此。
ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming),allow (outgoing),deny (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
80/tcp ALLOW IN Anywhere
9000/tcp DENY IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6)
80/tcp (v6) ALLOW IN Anywhere (v6)
9000/tcp (v6) DENY IN Anywhere (v6)
即使在我明确拒绝了到端口 9000 的流量之后,我仍然能够访问它
编辑:我曾尝试在规则更改后重新加载防火墙,但没有效果。
在我允许来自端口 9000 的流量之前登录
Mar 9 06:26:48 10 kernel: [UFW BLOCK] IN=br-OUT= PHYSIN= MAC= SRC=172.19.0.2 DST=172.19.0.1 LEN=1500 TOS=0x00 PREC=0x00 TTL=64 ID =18491 DF PROTO=TCP SPT=9000 DPT=34558 WINDOW=506 RES=0x00 ACK URGP=0
删除该规则后,防火墙不会阻止流量。
解决方法
此解决方案适用于 Debian 10
https://github.com/chaifeng/ufw-docker/blob/master/README.md#solving-ufw-and-docker-issues
root@malloc:~# ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming),allow (outgoing),deny (routed)
New profiles: skip
To Action From
-- ------ ----
22 ALLOW IN Anywhere
22 (v6) ALLOW IN Anywhere (v6)
9000/tcp ALLOW FWD Anywhere
9000/tcp (v6) ALLOW FWD Anywhere (v6)