小编Pet*_*sen的帖子

Docker:限制访问某些 IP 地址的正确方法

我有一个 Docker 容器向 Internet 公开端口 3306。我想限制对某些公共 IP 地址的访问。例如,让我们使用 1.2.3.4。

作为附加条件,我希望规则在重新启动 Docker 守护程序和重新启动服务器后仍然存在。这允许我在服务器重新启动时使用iptables-persistent( iptables-save/ iptables-restore) 来恢复规则,而不会dockerd干扰它的启动。

我尝试了以下方法:

  1. 修改FORWARD链:

    iptables -I FORWARD -p tcp --dport 3306 -j REJECT
    iptables -I FORWARD -p tcp --dport 3306 -s 1.2.3.4 -j ACCEPT
    
    Run Code Online (Sandbox Code Playgroud)

    这在启动 Docker 守护进程后完成。重新启动守护进程时,Docker 在链的顶部插入了额外的规则,而我的自定义规则最终会被忽略。

  2. 修改DOCKER链:

    iptables -N DOCKER # if chain does not yet exist
    iptables -I DOCKER -p tcp --dport 3306 -j REJECT
    iptables -I DOCKER -p tcp --dport 3306 -s 1.2.3.4 …
    Run Code Online (Sandbox Code Playgroud)

networking iptables docker

7
推荐指数
1
解决办法
2077
查看次数

标签 统计

docker ×1

iptables ×1

networking ×1