Моя среда разработки использует док-узел Swarm с множеством микросервисов внутри. Мне нужно, чтобы микросервисы, работающие на моей машине, связывались с микросервисами, работающими внутри докера, однако у меня возникают некоторые проблемы для правильной маршрутизации пакетов. Когда ip-адрес контейнеров меняется, когда я перезагружаю докер-сервер, я пытаюсь использовать шлюз для маршрутизации пакетов. Используя эти правила, я могу пропинговать любой микросервис, какой захочу:
sysctl net.ipv4.conf.all.forwarding=1
iptables -P FORWARD ACCEPT
iptables -t nat -A PREROUTING -d 10.0.0.0/24 -j DNAT --to-destination 172.18.0.1
как вы можете видеть, микросервисы работают в сети 10.0.0.0/24, и я использую IP-адрес шлюза 172.18.0.1. Проблема в том, что я не могу найти способ обработки пакетов ответов, так как не знаю, какой источник я должен указать в правиле:
sudo iptables -t nat -A POSTROUTING -s 172.18.0.1 -j SNAT --to-source IP
Есть ли способ, которым я могу пометить пакет и установить исходный IP на основе этой метки? Что я могу сделать, чтобы правильно проложить маршрут?