Я пытаюсь 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 unuseddominickpastore@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
Сетевая настройка по умолчанию для 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-адрес от связанного сетевого клиента. Вы можете обойти это ограничение, если вы не устанавливаете какие-либо функции безопасности в точке доступа.
Сетевая настройка по умолчанию для 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-адрес от связанного сетевого клиента. Вы можете обойти это ограничение, если вы не устанавливаете какие-либо функции безопасности в точке доступа.