Назад | Перейти на главную страницу

Как заблокировать любой внешний порт (докер-хост), скажем, 80 в виртуальной машине Ubuntu Linux

Как заблокировать любой внешний порт (docker-host), скажем, 80 в виртуальной машине ubuntu linux.

Всем привет,

У меня есть две виртуальные машины Ubuntu на провайдере Hertzner Cloud в режиме кластера docker-swarm с двумя стеками, обслуживающими один и тот же контент (но два стека используются для разных целей), один (скажем, VM-1) на порту 80 (отображение портов контейнера докеров 80:80) и другие (скажем, VM-2) на 7000 (отображение портов контейнера докеров 7000: 80).

Итак, я хочу заблокировать порт 7000 на ВМ-1 и порт 80 на ВМ-2.

Мне не удалось реализовать описанный выше сценарий с веб-консоли моего облачного провайдера Hertzner, поскольку они не предоставили никакого раздела для блокировки входящего и исходящего трафика с использованием IP-адресов и портов как AWS или Azure.

До сих пор я пытался использовать UFW для блокировки порта 80 на VM-2. (Не получил желаемого результата).

Также использовал iptables, используя следующие команды

 sudo iptables -I INPUT -p tcp -s 0/0 -d 0/0 --dport 80 -j DROP

Он не блокирует трафик при использовании с контейнерами докеров. Но он блокирует трафик, если я устанавливаю любую службу, например nginx, на порт 80 на виртуальной машине как службу.

sudo iptables -I DOCKER-USER -p tcp -s 0/0 -d 0/0 --dport 80 -j DROP

Эта команда (см. Ссылку ниже) блокирует обслуживание всего трафика через порт 80 (например, 80:80 и 7000: 80) внутри контейнера докеров. Я не хочу, чтобы порт 80 внутри контейнера докеров был заблокирован.

https://docs.docker.com/network/iptables/#:~:text=Add%20iptables%20policies%20before%20Docker's,not%20manipulate%20this%20chain%20 вручную.

Итак, как мне заблокировать только снаружи (dockerhost-port) 80, отображаемое как 80:80 для контейнера докеров на любой виртуальной машине Linux.

Спасибо. Жду быстрого ответа.