可能似乎是一个愚蠢的问题,但我试图让以下工作:
因此每个主机现在都可以从任何地方访问发布的端口。
我如何限制通过UFW访问此发布的docker端口?
该服务使用的特定端口是3333 。
我试图让它工作使用-p 127.0.0.1:3333:3333为了将端口绑定到本地主机。 但是之后我需要一个代理从UFW限制的公共端口到localhost:3333 。 我也尝试使用iptables -j REDIRECT ,但我无法使它工作。
所以这不是容器限制外部访问的问题,而是外部访问容器的问题。
我想保留我的当前UFW设置明确白名单Dockerized服务。
在新的docker iptables解决scheme推出1.5+以上之前,我已经find了一个更好的更一致的解决scheme。
通过不使用FORWARD链,但另一个规则是在 docker改变iptable链之前处理的,因此docker容器将重新启动。 如果有人需要它:这解决了我在主机上定制iptable规则和docker的问题:
iptables -I PREROUTING 1 -t mangle ! -s [SOURCEIP_TO_ALLOW] -p tcp --dport [PORT] -j ACCEPT iptables -I PREROUTING 2 -t mangle -p tcp --dport [PORT] -j DROP
诀窍是PREROUTING和mangle步骤。 这样,我可以从主机上的SOURCEIP_TO_ALLOW允许其他人进入…!
您有三个选项来发布/公开Docker端口:
如果主机上有防火墙阻止所有到达端口3333的传入连接,但是您希望在全球范围内访问,则可以使用UFW打开端口或打开指定源主机的端口,如下所示:
请注意,您也可以指定proto使用的协议,否则ufw将同时打开tcp和udp。