Estou experimentando o LXD. Parece que a maneira padrão de configurar a rede é fazer o host fornecer DHCP e NAT para todos os convidados, mas eu gostaria de omitir o NAT e permitir que os convidados usem o mesmo servidor DHCP que o host. Isso parece ser uma coisa bastante razoável, mas não consigo trabalhar. Não importa o que eu faça, o convidado nunca recebe um endereço atribuído pelo servidor DHCP externo.
Para dificultar as coisas, parece que a configuração de rede da LXD mudou bastante majorly com o LXD 2.3 , e a grande maioria das informações que eu descubro é de versões anteriores. Eu encontrei este problema do GitHub onde alguém estava tentando fazer a mesma coisa e postou uma nova configuração de estilo que trabalhei para eles, mas não pareceu fazer diferença quando tentei.
Então, a questão é, Como faço para configurar uma ponte no LXD 2.3+ sem NAT e usando DHCP externo?
Veja alguns detalhes adicionais:
- Ubuntu 18.04 com o LXD 3.0.0
- O host usa a interface enp10s0f0
- Deseja ligar os convidados à interface enp10s0f1 (que não é usada de outra forma pelo host)
- Interface adicional enp1s2 não utilizada
-
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 |
+-----------+----------+---------+-------------+---------+
-
Observe que esta é apenas a minha tentativa de configuração atual para lxdbr0
; Eu tentei muitos:
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
Atualização:
Eu tenho jogado com isso mais e isso me deixa ainda mais confuso. Estou recebendo um comportamento aparentemente muito errático. Isso ainda é meio novo e esquisito, ou estou apenas fazendo coisas erradas? Por um lado, lxc network unset
parece não funcionar:
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
Eu também criei uma segunda ponte para testar duas configurações de uma só vez, e posso defini-las de forma muito semelhante a uma configuração NAT + DHCP (não exatamente a mesma porque não está funcionando), mas apenas a interface original é atribuída um endereço. Não consigo descobrir por que a nova interface não consegue obter um endereço. Observe a configuração similar do 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
No entanto, no contêiner, eth0 funciona (conectado a lxdbr0) e eth1 nunca recebe um endereço (conectado a 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