如何通过IP地址过滤一个特定的容器,并对所有容器进行默认过滤?

时间:2019-11-26 19:09:38

标签: traefik

我想根据连接客户端的IP将流量限制为某些Docker容器。容器会自动发现。

常规设置是运行在LAN(192.168.10.2)中的docker主机的服务器。防火墙将来自Internet的端口80和443转发到该主机。

我要达到的一般设置是:

  • 全局默认值:192.168.10/24192.168.20.24/24上的任何内容都可以访问任何容器(来自LAN的流量)
  • 全局默认值:拒绝其他所有内容
  • 特定设置:对于给定的容器,允许“来自Internet”的流量(即转发的流量)。我相信传入的IP将是客户端在Internet上的公共IP。

通常应该如何处理这些问题?

我试图使用https://docs.traefik.io/middlewares/ipwhitelist/来允许/阻止对选定容器的访问。除了不能解决上面的“全局默认值”之外,我还没有使其正常工作(我的docker-compose的相关部分在下面):

radarr:
(...)
    labels:
      - "traefik.http.routers.radarr.rule=Host(`radarr.mydomain`)"
      - "traefik.http.routers.radarr.entrypoints=web"
      - "traefik.http.middlewares.radarr.ipwhitelist.sourcerange=127.0.0.1/32, 192.168.50.0/24"

 traefik:
    # The official v2.0 Traefik docker image
    image: traefik:v2.0
    container_name: traefik
    # Enables the web UI and tells Traefik to listen to docker
    command: --api.insecure=true --providers.docker=true --entrypoints.web.address=:80
    ports:
      # The HTTP port
      - "15085:80"
      # The Web UI (enabled by --api.insecure=true)
      - "18085:8080"
    volumes:
      # So that Traefik can listen to the Docker events
      - /var/run/docker.sock:/var/run/docker.sock

无论我在sourcerange中输入什么内容,都可以随时通过http://radarr.mydomain:15085访问该服务

0 个答案:

没有答案