Как обновить правила iptables хоста Linux для перенаправления трафика внутри контейнера докеров?

Я знаю, что это не тот ответ, который вы ищете, но я думаю, что он правильный:

Нет. Для этого вы просто используете стабильную версию Debian.

Если вы хотите использовать свежие пакеты с датами от -до -, вам придется смириться с (редкими )моментами поломки пакетов. У сопровождающих пакетов нет возможности проверить, есть ли в одной из их (многих )зависимостей обновление, которое может нарушить их собственный пакет, поскольку им придется просматривать все журналы изменений, а также выполнять тесты, потому что иногда журналы изменений не точны и не полны.

В качестве альтернативы вы можете использовать стабильную версию Debian и смешать некоторые пакеты из нестабильной версии, если вам действительно нужна ее версия от -до -. Но тогда вам все равно нужно убедиться, что обновления этих пакетов совместимы с вашей стабильной системой.

У вас всегда должна быть возможность вернуться к предыдущим версиям пакетов, если вы не очистили кеш. Вы можете клонировать свою машину, попробовать обновление и, если ваши тесты пройдут успешно, вы сможете выполнить обновления на своей основной машине.

Do you actually manually check the bug reports for each individual package, or is there a more efficient way of doing this? When you are maintaining a Debian unstable system, what steps do you take during system-wide updates like this to know when to hold off on updating?

Я не использую нестабильную версию для производительных систем, которым необходимо работать и которые не могут позволить себе простои. Для нестабильных систем :скрещиваю пальцы и обновляю.Если что-то работает не так, как ожидалось, я просто загружаю свой последний снимок btrfs -, чтобы откатить всю мою систему, и жду, пока проблемы не будут исправлены выше по течению.

0
15.03.2020, 18:53
1 ответ

Хорошо, разобрался.

Если я хочу перенаправить трафик с 192.168.86.30:80на 192.168.86.30:8084для контейнера с ip-адресом 172.17.0.2, то вы можете добавить следующее правило:

sudo iptables -t nat -A PREROUTING --protocol tcp --destination 192.168.86.30 \
    --dport 80 --source 172.17.0.2 \
    --jump DNAT --to-destination 192.168.86.30:8084

Похоже, это также работает с общедоступными внешними IP-адресами.

REDIRECTне работает, потому что [источник]:

It redirects the packet to the machine itself by changing the destination IP to the primary address of the incoming interface (locally-generated packets are mapped to the 127.0.0.1 address).

Все еще не совсем уверен, что происходит, но я думаю, что именно поэтому REDIRECT работал с некоторыми вещами, обслуживаемыми локально (, особенно со всем, что прослушивалось на 0.0.0.0 ), но не с внешними IP-адресами.

0
28.04.2021, 23:20

Теги

Похожие вопросы