【问题标题】:Block Docker container ports with iptables/firewalld使用 iptables/firewalld 阻止 Docker 容器端口
【发布时间】:2021-10-21 22:31:14
【问题描述】:

我有一个带有容器的 docker-compose 部署,例如:

version: "3"
services:
  web:
    image: nginx
    ports:
     - "8080:80"

Docker 版本是 20.10.9,操作系统是 CentOS 7。

我需要阻止外部 IP 地址对 8080 端口的访问,除非指定。

但是iptables -A INPUT -p tcp -m tcp --dport 8080 --src ! <IP whitelist> -j DROP 不适用于 docker 容器。

在为 public 区域设置了 firewalld 的系统中,不适用于 Docker 容器。

DOCKER-USER 链无法按需要工作,因为我应该使用 --dport 80(docker 容器中的内部端口)而不是 dport 8080。但是我需要使用外部端口,因为内部端口 80 可以有很多容器,但外部端口是唯一的。

我用过

【问题讨论】:

    标签: docker iptables firewalld


    【解决方案1】:

    当我想阻止容器端口时,我会更改 DOCKER-USER 链。

    据我所知:到 docker 的流量永远不会触及 iptables 中的 INPUT 链。

    所以我会尝试:

    iptables -A DOCKER-USER -i <INCOMING-INTERFACE> -p tcp -m tcp --dport 8080 --src ! <IP whitelist>  -j DROP
    

    更多信息:https://docs.docker.com/network/iptables/

    【讨论】:

      猜你喜欢
      • 2018-09-17
      • 1970-01-01
      • 1970-01-01
      • 2021-11-08
      • 2022-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-20
      相关资源
      最近更新 更多