泊坞窗口上,即使UFW拒绝访问界面中可见

问题描述 投票:0回答:1

我有我使用泊坞窗机与Ubuntu-18-04-64图像产生的一个数字海洋滴。我使用搬运工-撰写,其中之一是具有80和8080端口转发到0.0.0.0,从而侦听所有接口的nginx的部署三个容器到它。

  nginx:
image: noumena/nrg-vpp/nginx:latest
ports:
- "80:80"
- "8080:8080"
depends_on:
- engine
- api

防火墙被配置为阻止在eth0所有流量(DO公共接口),除了为2376泊坞窗,和开放的端口22,80,8080上的eth1(DO专用接口)。

22/tcp on eth1             ALLOW       Anywhere
8080/tcp on eth1           ALLOW       Anywhere
80/tcp on eth1             ALLOW       Anywhere
2376/tcp on eth0           ALLOW       Anywhere
Anywhere on eth0           DENY        Anywhere
Anywhere on eth1           DENY        Anywhere
22/tcp (v6) on eth1        ALLOW       Anywhere (v6)
8080/tcp (v6) on eth1      ALLOW       Anywhere (v6)
80/tcp (v6) on eth1        ALLOW       Anywhere (v6)
2376/tcp (v6) on eth0      ALLOW       Anywhere (v6)
Anywhere (v6) on eth0      DENY        Anywhere (v6)
Anywhere (v6) on eth1      DENY        Anywhere (v6)

然而,通过搬运工(80,8080)转发的端口仍然在eth0可见,任何其他端口上没有ETH 0(例如22)可见

17:10 $ telnet public-ip 22 
Trying x.x.x.x... 
telnet: connect to address x.x.x.x: Operation timed out 
telnet: Unable to connect to remote host 

17:16 $ telnet public-ip 80 
Trying x.x.x.x... 
Connected to x.x.x.x. 
Escape character is '^]'. 
^] 
telnet> Connection closed. 

17:17 $ telnet public-ip 8080 
Trying x.x.x.x...  
Connected to x.x.x.x.
Escape character is '^]'. 
^] 
telnet> Connection closed.

到底为什么这些端口是开放的?是否涉及防火墙之前转发发生的呢?

我已经固定通过限制容器只在私人IP听的尖锐问题,但它需要额外的逻辑来查询其私有IP液滴与泊坞窗,撰写文件成为一个模板,这是烦人。这将是一个简单得多,如果我可以依靠在防火墙上保留转发的端口关闭。

有没有人碰到这种类型的行为之前?我真的想明白发生了什么。

docker ubuntu docker-compose docker-machine ufw
1个回答
1
投票

这是由于码头工人处理网络的方式。总之,从容器暴露的端口您指示泊坞把ACCEPT为特定端口规则的防火墙(至少UFW)之前有机会运用自己的规则。

在GitHub上跟踪这一行为主体,最明智的问题似乎#22054。根据您的具体配置防火墙(UFW?),一个评论(尤其是一次更新,因为2017年左右)可以保持你的解决方案。

另请参见this answer to similar question on ServerFault,这是由同一人one of successful advices on #22054 issue

© www.soinside.com 2019 - 2024. All rights reserved.