Netplan - Запрос помощи для правильного управления маршрутами в настройке macvlan

. Я использую докер с macvlan, где каждый из моих контейнеров имеет собственное соединение L2 с MAC-адресом и IP. Мне также нужно гарантировать, что контейнеры достигают хоста и наоборот. Я могу добиться этого в настоящий момент, используя netplan и сценарий для удаления некоторых маршрутов, но хочу, чтобы вы помогли понять, могу ли я сделать это с помощью netplan.

Моя конфигурация такова:

Пакетный сценарий для создания интерфейса macvlan (пока не поддерживается в netplan)

#! /bin/bash
#! ip link add macvlan link vlan10 type macvlan mode bridge

Интерфейс vlan10 создается с помощью конфигурации netplan

01-netcfg.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      dhcp4: yes
      dhcp6: yes
      addresses:
        - aaaa:bbbb:cccc:1::11/64

  vlans:
    vlan10:
      id: 10
      link: eno1
      dhcp4: no
      dhcp6: no
      addresses:
        - 192.168.10.11/24
        - aaaa:bbbb:cccc:10::11/64

Это гарантирует, что Создан и доступен интерфейс VLAN, созданный специально для докера.

20-docker.yaml

network:
    version: 2
    renderer: networkd
    ethernets:
        macvlan:
            dhcp4: no
            dhcp6: no
            addresses:
                - 192.168.10.5/24
                - aaaa:bbbb:cccc:10::5/64

Я бы признал, что, возможно, это не самый эффективный способ настройки необходимого мне решения, но он работает, и поэтому я избегаю создания скриптов, запускаемых при перезагрузке с помощью cron .

Часть маршрутов

Теперь, когда я создал интерфейсы, когда они настроены, автоматически создается набор маршрутов, даже я не определяю шлюз4 и шлюз6 директивы и определите netplat, чтобы игнорировать маршруты DHCP по умолчанию. Но, несмотря на это, эти маршруты для IPv4 и IPv6 создаются автоматически, что позволяет избежать попадания в контейнеры в сети vlan10 из-за конструктивного ограничения драйверов сети докеров.

Маршруты IPv4 для новых интерфейсов

192.168.10.0/24 dev vlan10 proto kernel scope link src 192.168.10.11
192.168.10.0/24 dev macvlan proto kernel scope link src 192.168.10.5
192.168.10.0/24 via 192.168.10.5 dev macvlan proto static metric 100
192.168.10.0/24 via 192.168.10.11 dev vlan10 proto static metric 150

Маршруты IPv6 для новых интерфейсов

aaaa:bbbb:cccc:10::/64 dev vlan10 proto kernel metric 256 pref medium
aaaa:bbbb:cccc:10::/64 dev macvlan proto kernel metric 256 pref medium

Чтобы мое решение работало, мне нужно было бы вручную удалить (или использовать сценарий boot bash), чтобы удалить указанные выше маршруты ядра для устройства vlan10 в IPv4 и IPv6. Выполнив эту задачу, я могу восстановить связь хост-контейнер.

Есть ли способ улучшить это решение и избежать создания этих маршрутов, или команду игнорировать этот конкретный маршрут, который мне не нужен в этом конкретном интерфейсе, чтобы гарантировать использование моего решения в netplan?

Ваш опыт и доступность очень ценится. Спасибо

** 20.10.2021 - Редактирование после комментариев и дальнейшего тестирования **

После еще нескольких проверок, тестирования и изучения я приступил к следующим изменениям, которые решили мои проблемы и разрешили моему хосту для доступа к контейнерам внутри интерфейса macvlan .

01-netcfg.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      dhcp4: yes
      dhcp6: yes
      addresses:
        - aaaa:bbbb:cccc:dddd:192:168:1:11/64

  vlans:
    vlan10:
      id: 10
      link: eno1
      dhcp4: no
      dhcp6: no
      addresses:
        - 192.168.10.11/32
        - aaaa:bbbb:cccc:10::11/128
      link-local: []

Изменены маски подсети IPv4 и IPv8 на / 32 и / 128 соответственно. Это создало правильные правила и заставило мой хост восстанавливать связь с моей сетью контейнеров докеров. Также включен `link-local: [] ´, чтобы избежать этого интерфейса, чтобы создать локальный IP-адрес ссылки, который может мешать.

20-docker.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    macvlan:
      dhcp4: no
      dhcp6: no
      addresses:
        - 192.168.10.5/24
        - aaaa:bbbb:cccc:10::5/64

С этой конфигурацией я мог восстановить обмен данными между хостом и контейнерами для IPv4 и IPv6 и избежать внешних сценариев для удаления маршрутов или объявления определенных ​​маршрутов: и routing-policy: директивы в netplan.

Надеюсь, это поможет другим решить подобные проблемы.Спасибо

0
задан 19 October 2021 в 08:58

0 ответов

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

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