Как сбросить правила iptables, установленные контейнером Docker - PullRequest
0 голосов
/ 12 января 2020

У меня есть docker -композиция, в которой есть контейнер, который действует как обратный прокси-сервер для других контейнеров, содержащих серверы.

Этот прокси-сервер запускает Nginx с включенным req_limit_module и Fail2Ban для запрета в iptables всех IP-адресов, которые выполняют более 10 запросов в секунду. Для того, чтобы Fail2Ban работал, я дал возможности NET_ADMIN для прокси.

Это минимальная версия docker -compose.yaml:

version: "3.7"
services:    
  rest-server:
    restart: "always"
    image: api-rest-server:latest
    expose:
      - "8080"
    env_file: .env

  proxy:
    restart: "always"
    image: proxy:latest
    expose:
      - "80"
    ports:
      - "80:80"
    cap_add:
      - NET_ADMIN
    depends_on:
      - rest-server
    env_file: .env

При такой настройке Fail2Ban работает, как и ожидалось, но проблема в том, что правила iptables не очищаются, когда перезапуск сочинения. Таким образом, если я наложу бан на мой IP и перезапущу прокси, я все равно забанен в его iptables, но Fail2Ban не знает об этом, в результате чего я никогда не получу бан.

Если я этого не сделаю Неправильно понимать, что это происходит из-за того, что правила iptables располагаются в пространстве имен для каждого контейнера, а идентификатор контейнера одинаков.

Существует ли способ автоматической очистки правил iptables, созданных контейнером при его удалении?

...