Docker вставляет правила iptable Postrouting поверх добавленных правил администратора - PullRequest
0 голосов
/ 03 ноября 2018

Мне пришлось добавить несколько iptable-записей в таблицу NAT, цепочку POSTROUTING, чтобы позволить контейнерам-докерам выходить в Интернет через другой интерфейс адреса-источника / источника-хоста (to_source).

Все работает нормально.

Ex:

target     prot opt source               destination
SNAT       all  --  100.100.8.0/22       10.1.2.3       to:100.64.0.5

Но, когда служба docker перезапускается, она вставляет правила MASQUERADE поверх моих записей, и, следовательно, мое исправление, как указано выше, маскируется. Контейнеры Docker не могут получить доступ к Интернету.

Ex:

target     prot opt source               destination
MASQUERADE  all  --  100.100.8.0/22       0.0.0.0/0
SNAT        all  --  100.100.8.0/22       10.1.2.3       to:100.64.0.5

Есть ли какие-либо правила, чтобы мои правила POSTROUTING всегда были на вершине цепочки даже после перезапуска докера?

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Вы можете добавить --iptables=false к опциям запуска вашего docker-демона, которые вообще не позволяют вносить изменения в правила iptables.

Ссылка: https://docs.docker.com/engine/reference/commandline/dockerd/

0 голосов
/ 08 ноября 2018

Если на вашем хосте установлена ​​Ubuntu, вы можете использовать утилиту iptables-save для сохранения правил iptables в файл после запуска демона docker. Затем, после очистки старых правил, вы можете просто восстановить исходные правила докера, используя iptables-restore и сохраненный файл правил.

Если вы не хотите восстанавливать все старые правила iptables, вы можете изменить файл сохраненных правил, чтобы сохранить только те, которые вам нужны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...