Контейнер обратного прокси Docker в мостовой сети, указывающий на контейнер в сети Macvlan

Прежде всего: я знаю об этом: Невозможно получить доступ к контейнерам докера с хоста через сеть Macvlan

Я использую настройку хоста с одним докером (не боюсь, но это не имеет значения).

По разным причинам я использую контейнер почтового сервера (poste) в сети Macvlan, так как мне нужно иметь IP-адрес в локальной сети (межсетевой экран, фильтрация спама, эксперименты). Контейнер почтового сервера также содержит веб-сервер и webui. Я также хочу, чтобы мой контейнер обратного прокси (в сети docker0) указывал на webui моего почтового сервера.

Есть ли обходной путь для этого, не используя 2 сети, добавленные в мой контейнер почтового сервера? Например, добавив маршрут? В настоящее время я использую вторую сеть в качестве решения для моей ситуации. Итак, запустив # docker network connect docker0 containername после запуска контейнера, где docker0 - внутренняя сеть докеров 172.17.0.0/16.

Тем не менее, это создает некоторые проблемы с безопасностью, imho. хотя я мог бы ограничить доступ через мостовую сеть к почтовому контейнеру только обратным прокси-контейнером?

У меня есть другой путь для изучения, когда я использую второй адаптер eth на хосте

сетевые адаптеры хоста:

  • eth0: 10.10.0.16/16
  • eth1: 10.10.0.17/16

Когда я делаю # docker network inspect br0это результат. br0 - это имя сети macvlan.

[
    {
        "Name": "br0",
        "Id": "beb3548b7a4a4fdaba6c3fa2771ea7a8511d44b0e2545abc9b2f7d8ed922",
        "Created": "2018-03-09T17:48:09.444567623+01:00",
        "Scope": "local",
        "Driver": "macvlan",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "10.10.0.0/16",
                    "Gateway": "10.10.0.99",
                    "AuxiliaryAddresses": {
                        "server": "10.10.0.16"
                    }
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "1c215b70764d198ce95b702f49b1f263a7a68a308f13db2907921d8bd4d9": {
                "Name": "poste",
                "EndpointID": "7d560d531e4f88472b7cbf96b5f460964bf12bdd478f88840475732215ff",
                "MacAddress": "02:42:0a:0a:20:f2",
                "IPv4Address": "10.10.32.242/16",
                "IPv6Address": ""
            }
        },
        "Options": {
            "parent": "br0"
        },
        "Labels": {}
    }
]

И тогда я могу использовать

# ip link add link eth1 dev eth1m type macvlan mode bridge
# ip link set eth1m up
# ip route add 10.10.32.242 dev eth1m

Теперь я могу пинговать / связываться с контейнером (даже если подключена только сеть Macvlan) с хоста. Проблема в том, что я до сих пор не могу дозвониться до 10.10.32.242 из моего контейнера обратного прокси (который, как уже говорилось, находится в сети docker0).

0 ответов

Другие вопросы по тегам