如何防止重定向的docker端口对外开放?

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

我有几个不同容器的Web服务,我将每个服务器的80个端口重定向到主机服务器上的另一个端口。 (容器1 80 - > 8003,容器2 80 - > 8004,容器3 80 - > 8005)我想阻止访问这些端口,但预先配置的ip列表除外

我已经将iptables规则添加到“docker-user”链中,如下所示;

-A INPUT -s 212.154.74.194/32 -p tcp -j ACCEPT //accept all from this ip
-A INPUT -s 185.22.208.0/25 -p tcp -j ACCEPT //accept all from this ip
-A INPUT -p tcp -m tcp --dport 8003 -j DROP //block anyone except allowed ips 
-A INPUT -p tcp -m tcp --dport 8004 -j DROP //block anyone except allowed ips
-A INPUT -p tcp -m tcp --dport 8005 -j DROP //block anyone except allowed ips

但它不起作用。仍然可以从外部访问路由端口。我不知道我做错了什么。如何阻止对路由端口的访问?

docker iptables portforwarding
1个回答
1
投票

好像From docker docs非常详尽地回答了你的问题:

默认情况下,允许所有外部源IP连接到Docker守护程序。要仅允许特定IP或网络访问容器,请在DOCKER过滤器链的顶部插入否定规则。例如,以下规则限制对除192.168.1.1之外的所有IP地址的外部访问:

$ iptables -I DOCKER-USER -i ext_if ! -s 192.168.1.1 -j DROP

要允许特定子网:

iptables -I DOCKER-USER -i ext_if ! -s 192.168.1.0/24 -j DROP

加成:您还可以将连接完全限制为localhost:docker run -p 127.0.0.1:80:8003应自动限制对localhost的访问。

另外还有docker compose:

webapp:
    image: image_name
    ports:
    - "127.0.0.1:80:8003"
© www.soinside.com 2019 - 2024. All rights reserved.