Есть машина, на ней крутится докер с контейнером с 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