Cmac-online
@Cmac-online

Как настроить два сетевых интерфейса с разными шлюзами для Docker?

Есть машина, на ней крутится докер с контейнером с nginx который слушает 80 порт. К этой машине подключены два сетевых интерфейса. Один публичный, т.е. доступен из инета. Другой приватный и доступен внутри сети.

Nginx доступен по публичному, а по приватному нет. Но если отцепить GW у публичного, то меняются местами. Пробовал открывать доступ на SSH, такой проблемы не наблюдалось. Машина доступна по обоим интерфейсам в один момент.

Думал, что проблема в iptables. Но добрые люди, из комментариев ниже, доходчиво объяснили, что нет. Т.к. докер сам настраивает правила хитрым способом. На докер сетевая подсистема использует сетевой драйвер по умолчанию (bridge).

Интерфейсы на хосте настроил по примеру из Маршрутизация через несколько каналов (Находил в тырнете еще тучу мануалов и рекомендаций, но все они сводились к аналогичным решениям). Но что то не хочет работать. Собственно прошу помощи. Т.к. с моим уровнем компетенции ни чего не работает.

Допускаю, что ошибся в конфигурации интерфейсов.

/etc/iproute2/rt_tables

#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
50 160
51 192



Приватный (доступен в локалке)
/etc/netplan/160-cloud-init.yaml

network:
  version: 2
  ethernets:
    ens160:
      addresses: [192.168.10.150/24]
      dhcp4: false
      gateway4: 192.168.10.1
      nameservers:
        addresses: [8.8.8.8,8.8.4.4]
      routes:
        - to: 0.0.0.0/0
          via: 192.168.10.1
          table: 160
      routing-policy:
        - from: 192.168.10.150
          table: 160
          priority: 301



Публичный (белый ip)
/etc/netplan/192-cloud-init.yaml

network:
  version: 2
  ethernets:
    ens192:
      addresses: [XXX.XXX.XXX.20/29]
      dhcp4: false
      gateway4: XXX.XXX.XXX.17
      nameservers:
        addresses: [8.8.8.8,8.8.4.4]
      routes:
        - to: 0.0.0.0/0
          via: XXX.XXX.XXX.17
          table: 192
      routing-policy:
        - from: XXX.XXX.XXX.20
          table: 192
          priority: 300

  • Вопрос задан
  • 287 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Drno
iptables -t nat -A PREROUTING -p tcp --dport 443 -i ens4 -j DNAT --to 172.172.172.1:50003;

где -i = имя интерфейса внешнего

ну и маскардинг включаем
iptables -t nat -A POSTROUTING -o ens4 -j MASQUERADE;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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