Внешний DHCP с LXD 2.3+

Я пытаюсь LXD. По умолчанию сетевой настройкой является то, что хост предоставляет DHCP и NAT для всех гостей, но я бы хотел опустить NAT и разрешить гостям использовать тот же сервер DHCP, что и хост. Похоже, что это должно быть довольно разумным делом, но я не могу заставить его работать. Независимо от того, что я делаю, гость никогда не получает адрес, назначенный внешним DHCP-сервером.

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

Итак, вопрос в том, как настроить мост в LXD 2.3+ без NAT и использовать внешний DHCP?

Вот несколько дополнительных деталей:

Ubuntu 18.04 с LXD 3.0. 0 Хост использует интерфейс enp10s0f0 Хотелось бы навести гостей на интерфейс enp10s0f1 (который не используется другим хостом) Дополнительный интерфейс enp1s2 unused dominickpastore@ubuntu:~$ lxc network list +-----------+----------+---------+-------------+---------+ | NAME | TYPE | MANAGED | DESCRIPTION | USED BY | +-----------+----------+---------+-------------+---------+ | enp10s0f0 | physical | NO | | 0 | +-----------+----------+---------+-------------+---------+ | enp10s0f1 | physical | NO | | 0 | +-----------+----------+---------+-------------+---------+ | enp1s2 | physical | NO | | 0 | +-----------+----------+---------+-------------+---------+ | lxdbr0 | bridge | YES | | 1 | +-----------+----------+---------+-------------+---------+ Обратите внимание, что это только моя текущая попытка настройки для lxdbr0; Я пробовал много: dominickpastore@ubuntu:~$ lxc network show lxdbr0 config: bridge.external_interfaces: enp10s0f1 ipv4.address: none ipv4.dhcp: "false" ipv6.address: none ipv6.dhcp: "false" description: "" name: lxdbr0 type: bridge used_by: - /1.0/containers/first managed: true status: Created locations: - none

Вот некоторые дополнительные подробности:

Я играл с этим больше, и это оставляет меня еще более запутанным , Я получаю, казалось бы, очень неустойчивое поведение. Является ли это еще что-то новым и сломанным, или я просто делаю что-то неправильно? Во-первых, lxc network unset, похоже, не работает:

dominickpastore@ubuntu:~$ lxc network show lxdbr0 config: ipv4.address: 10.4.4.1/24 ipv4.dhcp: "true" ipv4.dhcp.ranges: 192.168.4.230-192.168.4.249 ipv4.nat: "true" ipv4.routing: "true" ipv6.address: none ipv6.dhcp: "false" description: "" name: lxdbr0 type: bridge used_by: - /1.0/containers/first managed: true status: Created locations: - none dominickpastore@ubuntu:~$ lxc network unset lxdbr0 ipv4.dhcp.ranges dominickpastore@ubuntu:~$ lxc network show lxdbr0 config: ipv4.address: 10.4.4.1/24 ipv4.dhcp: "true" ipv4.dhcp.ranges: 192.168.4.230-192.168.4.249 ipv4.nat: "true" ipv4.routing: "true" ipv6.address: none ipv6.dhcp: "false" description: "" name: lxdbr0 type: bridge used_by: - /1.0/containers/first managed: true status: Created locations: - none

Я также создал второй мост для одновременного тестирования двух конфигураций, и я могу установить их очень похоже на NAT + Конфигурация DHCP (не совсем то же самое, поскольку unset не работает), но только исходному интерфейсу присваивается адрес. Я не могу понять, почему новый интерфейс не может получить адрес вообще. Обратите внимание на аналогичную конфигурацию IPv4:

dominickpastore@ubuntu:~$ lxc network show lxdbr0 config: ipv4.address: 10.4.4.1/24 ipv4.dhcp: "true" ipv4.dhcp.ranges: 192.168.4.230-192.168.4.249 ipv4.nat: "true" ipv4.routing: "true" ipv6.address: none ipv6.dhcp: "false" description: "" name: lxdbr0 type: bridge used_by: - /1.0/containers/first managed: true status: Created locations: - none dominickpastore@ubuntu:~$ lxc network show lxdbr1 config: ipv4.address: 10.251.34.1/24 ipv4.dhcp: "true" ipv4.nat: "true" ipv4.routing: "true" ipv6.address: none ipv6.nat: "false" description: "" name: lxdbr1 type: bridge used_by: - /1.0/containers/first managed: true status: Created locations: - none

Тем не менее, в контейнере eth0 работает (подключен к lxdbr0), а eth1 никогда не получает адрес (подключенный к lxdbr1):

root@first:~# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 41: eth0@if42: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 00:16:3e:64:0e:ea brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 10.4.4.245/24 brd 10.4.4.255 scope global dynamic eth0 valid_lft 3101sec preferred_lft 3101sec inet6 fe80::216:3eff:fe64:eea/64 scope link valid_lft forever preferred_lft forever 43: eth1@if44: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 00:16:3e:fe:6d:01 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet6 fe80::216:3eff:fefe:6d01/64 scope link valid_lft forever preferred_lft forever
0
задан 12 May 2018 в 07:45

2 ответа

Сетевая настройка по умолчанию для LXD заключается в использовании частного моста lxdbr0.

Чтобы некоторые из ваших контейнеров получили IP-адрес из вашей локальной сети, вы можете использовать

. мостовой сети, соединяющей интерфейс Ethernet хоста. См. Например, https://blog.simos.info/how-to-make-your-lxd-containers-get-ip-addresses-from-your-lan-using-a-bridge/ Использовать macvlan. См. Например, https://blog.simos.info/how-to-make-your-lxd-container-get-ip-addresses-from-your-lan/

Между ними, private очень прост в настройке. У вас может быть несколько контейнеров на lxdbr0 , а другие - на частные сети. Вы можете использовать профили в LXD, чтобы указать, что именно. Вы можете даже переключиться с одного на другой, применив / связав другой профиль.

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

Проблема с обоими mavclan и мостовыми сетями (на интерфейсе Ethernet хоста) заключается в том, что ни одна из них не работает в WiFi. Поскольку настройки по умолчанию для WiFi - это точка доступа, чтобы принимать только один MAC-адрес от связанного сетевого клиента. Вы можете обойти это ограничение, если вы не устанавливаете какие-либо функции безопасности в точке доступа.

2
ответ дан 17 July 2018 в 14:34

Сетевая настройка по умолчанию для LXD заключается в использовании частного моста lxdbr0.

Чтобы некоторые из ваших контейнеров получили IP-адрес из вашей локальной сети, вы можете использовать

. мостовой сети, соединяющей Ethernet-интерфейс хоста. См. Например, https://blog.simos.info/how-to-make-your-lxd-containers-get-ip-addresses-from-your-lan-using-a-bridge/ Использовать macvlan. См. Например, https://blog.simos.info/how-to-make-your-lxd-container-get-ip-addresses-from-your-lan/

Между ними, private очень прост в настройке. У вас может быть несколько контейнеров на lxdbr0 , а другие - на частные сети. Вы можете использовать профили в LXD, чтобы указать, что именно. Вы можете даже переключиться с одного на другой, применив / связав другой профиль.

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

Проблема с обоими mavclan и мостовыми сетями (на интерфейсе Ethernet хоста) заключается в том, что ни одна из них не работает в WiFi. Поскольку настройки по умолчанию для WiFi - это точка доступа, чтобы принимать только один MAC-адрес от связанного сетевого клиента. Вы можете обойти это ограничение, если вы не устанавливаете какие-либо функции безопасности в точке доступа.

2
ответ дан 20 July 2018 в 14:38
  • 1
    # 1 похоже на то, что я пытался выполнить, за исключением того, что вам нужно настроить мост вручную. Я надеялся использовать новые (ish) lxc network команды для этого. Предполагается, что они могут создавать и управлять мостом для вас, и кажется , как будто он должен позволить вам отключить NAT и DHCP LXD, если вы хотите (на основе того, что я вижу в Docs ). Знаете ли вы, возможно ли это? – Dominick 12 May 2018 в 21:18
  • 2
    Насколько мне известно, LXD не может создать (общедоступный) мост на вашем хосте. Для этого потребуется LXD для перенастройки сетевых настроек хоста, и это очень сложно реализовать. Хост может использовать NetworkManager или может использовать что-то менее примитивное. – Simos 13 May 2018 в 22:30
  • 3
    Я согласен, что LXD будет сложно перенастроить сетевые настройки, но похоже, что новый API (ну, так как 2.3, согласно сообщению в блоге). По крайней мере, он может создать какой-то интерфейс моста и назначить ему IP-адрес. Вы можете видеть это как день с ip link list и ip addr до и после использования команд lxc network .... Или, по крайней мере, это то, что я видел на своей новой серверной установке Ubuntu 18.04 (т. Е. Нет NetworkManager). Теперь, может ли LXD настроить этот мост так, как я хочу, это другое дело, но похоже, что он предназначен для гибкости. – Dominick 14 May 2018 в 05:30
  • 4
    @ Dominick Я бы хотел разобраться в этом. Если вы можете дать мне список команд для воспроизведения, было бы здорово. Я был бы рад обновить blog.simos.info/… , если вы найдете способ получить lxc network для создания моста в учебнике. – Simos 15 May 2018 в 13:20
  • 5
    Проблема в том, что я не очень много успеваю с командами. Они создают мост и даже настраивают его, если я говорю LXD, чтобы сделать это, но большую часть времени гость по-прежнему не будет подключаться к сети. Я не уверен, что не может работать . Я начинаю думать, что есть что-то еще неправильное, потому что я также следовал вашим инструкциям в macvlan (кстати, они очень приятные) и до сих пор не смог получить соединение. Мне придется копать глубже. Тем временем я опубликую некоторые команды, которые сегодня воспроизводят какое-то мостовое создание. – Dominick 15 May 2018 в 16:57

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

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