Следующие изменения конфигурации должны обеспечить поток трафика между Docker и хостом Shorewall. Протестировано на Shorewall 4.5.21.9, но должно применяться к самым последним версиям:
/etc/shorewall/shorewall.conf
Убедитесь, что включена переадресация IP-адресов (большинство элементов конфигурации - Да/ Нет, но этот включен).:
IP_FORWARDING=On
/etc/береговая стена/маска
Включите маскировку (NAT) для вашей частной сети Docker (если вы используете другую сеть, т.Е. Вы запускаете docker с --bip=#.#.#.#/#
, затем измените соответствующим образом). Изменить eth0
к любому интерфейсу на главном компьютере с внешним подключением:
#INTERFACE:DEST SOURCEeth0 172.17.0.0/16
/etc/береговая стена/интерфейсы
Добавьте запись интерфейса, чтобы Shorewall знала, какой интерфейс dock
зона относится к:
#ZONE INTERFACE OPTIONSdock docker0
/etc/береговая стена/зоны
Создать новую зону; примечание, docker
слишком длинный и вызовет ошибку "недопустимое имя зоны".
#ZONE INTERFACEdock ipv4
/etc/береговая стена/политика
Вероятно, вы хотите разрешить контейнерам Docker взаимодействовать с хост-машиной и Интернет, так что это хорошая отправная точка:
#SOURCE DEST POLICY# ...(other policies)...dock all ACCEPT# ...(other policies, catch-all)...
Вам также может понадобиться аналогичный ACCEPT
политика для трафика из fw
к dock
, если вы еще не открыли его с помощью fw
к all
.
Вы можете еще больше усилить это в политика или правила файлы по мере необходимости. Например, вышеизложенное явно не позволяет внешнему трафику достигать ваших контейнеров Docker; проверьте для этого ваши другие зоны / политики / правила.