Докер: Как перенаправить IP-адрес внутри контейнера на другой IP-адрес - PullRequest
0 голосов
/ 08 января 2019

Я никогда не трогал iptables для Docker, но теперь думаю, что должен. Внутри специального контейнера программа / скрипт вызывает IP 57.55.10.210 и я не могу это изменить (другая история). Я хочу перенаправить звонок на этот IP 192.168.38.13. Как это можно сделать и повлияет ли это на другие контейнеры? Заранее спасибо! Фрэнк

1 Ответ

0 голосов
/ 08 февраля 2019

Один из способов - установить iptables в образе вашего контейнера и назначить вашему контейнеру возможность ядра (7) NET_ADMIN.

docker run --cap-add=NET_ADMIN ...

См. Справочник по запуску Docker и / или справочник по созданию файлов Docker

Затем вы можете добавить сценарий точки входа, файл cmd или .rules, из которого вы загружаете набор правил при запуске контейнера. Или вы прямо встраиваете правила в изображение. В вашем случае содержимое сценария точки входа будет выглядеть так:

iptables -t nat -A PREROUTING -d 57.55.10.210 -j DNAT --to-destination 192.168.38.13
iptables -t nat -A POSTROUTING -s 192.168.38.13 -j SNAT --to-source 57.55.10.210

Или с файлом .rules в скрипте точки входа выполните:

/sbin/iptables-restore /some-mounted-volume-or-file

Чтобы получить файл правил, вы можете вызвать один запуск вашего контейнера:

docker run --cap-add=NET_ADMIN --rm somethingwith/iptables /bin/bash -c "iptables -t nat -A PREROUTING -d 57.55.10.210 -j DNAT --to-destination 192.168.38.13; iptables -t nat -A POSTROUTING -s 192.168.38.13 -j SNAT --to-source 57.55.10.210; /sbin/iptables-save" > outside-of-container.rules

Что даст вам что-то вроде:

# Generated by iptables-save v1.6.1 on Fri Feb  8 14:42:52 2019
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -d 57.55.10.210/32 -j DNAT --to-destination 192.168.38.13
-A POSTROUTING -s 192.168.38.13/32 -j SNAT --to-source 57.55.10.210
COMMIT
# Completed on Fri Feb  8 14:42:52 2019

Насколько я знаю, этот подход не должен мешать другим контейнерам на хосте.

...