Требования: Частная домашняя система альбомов была создана с использованием контейнеров Docker, которая ограничена доступом и просмотром в домашней локальной сети, потому что образ Docker разрабатывается сторонним разработчиком, и я не знаю, будет ли это вопрос безопасностиСоздавать нарушения конфиденциальностиЧтобы лучше решить эту проблему, мы хотим добавить гарантию конфиденциальности, запрещая Docker-контейнерам доступ к Интернету (внешней сети).
В этой статье используется система CentOS7, версия Docker: 20.10.20, и изображения nginx для проведения тестов.
Доступ в Интернет (экстранет) по умолчанию разрешен
Создайте новый контейнер nginx, который предоставляет веб-сервисы, к которым можно получить доступ18080 Доступ к порту, контейнер по умолчанию может выходить в Интернет (внешняя сеть), команда следующая:
Введите контейнер и запросите ресурсы этого сайта через команду curl, которую можно получить нормально, как показано на рисунке ниже:
Отключение доступа к интернету Docker-контейнерам (экстранету)
Сначала нужно создать пользовательскую сеть через docker и виртуальную сетевую карту с помощью следующей команды:
Установите правило на виртуальной сетевой сетке через iptables, запрещающее доступ к Интернету следующей командой:
Независимо от того, доступен ли сервис iptables, независимо от того, включен ли файрвол или нет,Правила iptables, добавленные командой, вступают в силу немедленно!!!
Примечание: этот план уместенЕсли разные контейнеры присоединяются к одной сети, контейнеры не смогут общаться друг с другом!!!!
Посмотрите на правило DOCKER-USER, как показано ниже:
Снова создайте новый контейнер nginx, контейнер предоставляет веб-сервис, и18081 Порт предоставляет услуги внешнему миру, и контейнеру запрещен доступ к Интернету (публичной сети), команда следующая:
Мы достигли своей цели, но,После перезапуска сервера правила, созданные в iptables, исчезнутКак можно автоматически загрузить наши пользовательские правила после перезапуска сервера?
Команда iptables-save используется для экспорта таблицы iptables в ядре Linux стандартному поставщику вывода, обычно с помощью функции перенаправления ввода/вывода в оболочке для сохранения вывода в заданный файл. Сохранить существующее правило iptables
Добавьте правило восстановления iptables в загрузочную загрузку, загрузочный файл — /etc/rc.d/rc.local, отредактируйте файл и добавьте следующую команду в конце:
Наконец, добавьте разрешение на выполнение следующей командой:
После завершения настроек правила iptables всё равно будут действовать даже при перезагрузке сервера.
Всем контейнерам в Docker запрещен доступ к Интернету (экстранету),Не тестировали, команда следующая:
(Конец)
|