Diferencia entre revisiones de «Escenario 3C. LXC: Máis sobre contedores Incus»

De MediaWiki
Ir a la navegación Ir a la búsqueda
Línea 62: Línea 62:
  
 
== Contedores en modo Macvlan ==
 
== Contedores en modo Macvlan ==
 +
 +
Deste modo de rede hai que descatar os seguintes puntos:
 +
* É o modo máis sinxelo de conectar os contedores directamente á rede física e non require tocar a configuración de rede do host anfitrión.
 +
* Normalmente ofrece un mellor rendemento que o bridge que veremos máis adiante.
 +
* Permite a comunicación entre os contedores.
 +
* NON permite a comunicación entre os contedores e o host anfitrión. Polo tanto, se precisamos que haxa comunicacións entre contedores e o anfitrión, este modo non nos vale.
 +
* NON funciona en Virtualbox por defecto.
 +
* NON funciona en sistemas anfitrión reais usando wifi
 +
 +
Na seguinte imaxe pode verse unha interpretación das conexións neste modo de rede:
 +
 +
Esquema conexións modo MACVLAN
 +
 +
Fig. Esquema de conexión no modo MACVLAN
 +
 +
=== MACVLAN (o anfitrión dos contedores é un equipo real) ===
 +
 +
En primeiro lugar, comezaremos creando un perfil a partir do perfil por defecto e modificamos:
 +
 +
O nictype a macvlan:
 +
O parent de incusbr0 a enp0s3 (o nome da interface real do equipo anfitrión a usar).
 +
<pre>
 +
~$ incus profile copy default macvlan
 +
~$ incus profile edit macvlan
 +
 +
### This is a yaml representation of the profile.
 +
### Any line starting with a '# will be ignored.
 +
###
 +
### A profile consists of a set of configuration items followed by a set of
 +
### devices.
 +
###
 +
### An example would look like:
 +
### name: onenic
 +
### config:
 +
###  raw.lxc: lxc.aa_profile=unconfined
 +
### devices:
 +
###  eth0:
 +
###    nictype: bridged
 +
###    parent: lxdbr0
 +
###    type: nic
 +
###
 +
### Note that the name is shown but cannot be changed
 +
 +
config: {}
 +
description: Default LXD profile
 +
devices:
 +
  eth0:
 +
    name: eth0
 +
    nictype: macvlan
 +
    parent: enp0s3 
 +
    type: nic
 +
  root:
 +
    path: /
 +
    pool: default
 +
    type: disk
 +
name: macvlan
 +
used_by: []
 +
project: default
 +
</pre>
 +
 +
A continuación creamos dous novos contedores aplicándolles o novo perfil macvlan.
 +
 +
<pre>
 +
~$ incus launch images:ubuntu/jammy platega02 --profile macvlan
 +
Launching platega02
 +
asir@incus:~$ incus launch images:ubuntu/jammy platega03 --profile macvlan
 +
Launching platega03
 +
</pre>
 +
 +
Podemos comprobar que reciben a configuración de rede dende o servidor dhcp da rede local 192.168.1.0/24 (e non do dhcp asociado a lxdbr0):
 +
<pre>
 +
$ incus ls -c n,s,4,6,P,S
 +
+-----------+---------+-----------------------+---------------------------------------------+----------+-----------+
 +
|  NOMBRE  | ESTADO  |        IPV4          |                    IPV6                    | PERFILES | SNAPSHOTS |
 +
+-----------+---------+-----------------------+---------------------------------------------+----------+-----------+
 +
| platega00 | RUNNING | 10.119.191.239 (eth0) | fd42:47c9:add7:7c:216:3eff:fe59:7ec5 (eth0) | default  | 1        |
 +
+-----------+---------+-----------------------+---------------------------------------------+----------+-----------+
 +
| platega01 | RUNNING | 10.119.191.183 (eth0) | fd42:47c9:add7:7c:216:3eff:fe3e:d63e (eth0) | default  | 0        |
 +
+-----------+---------+-----------------------+---------------------------------------------+----------+-----------+
 +
| platega02 | RUNNING | 192.168.1.45 (eth0)  |                                            | macvlan  | 0        |
 +
+-----------+---------+-----------------------+---------------------------------------------+----------+-----------+
 +
| platega03 | RUNNING | 192.168.1.46 (eth0)  |                                            | macvlan  | 0        |
 +
+-----------+---------+-----------------------+---------------------------------------------+----------+-----------+
 +
</pre>
 +
 +
Facendo algunhas probas de conectividade podemos verificar o indicado sobre o modo MACVLAN en relación ás comunicacións co exterior e entre os contedores: sí se permiten.
 +
 +
<pre>
 +
~$ incus exec platega02 -- host www.xunta.es 8.8.8.8
 +
Using domain server:
 +
Name: 8.8.8.8
 +
Address: 8.8.8.8#53
 +
Aliases:
 +
 +
www.xunta.es has address 85.91.64.254
 +
asir@incus:~$ incus exec platega02 -- ping -c 2 192.168.1.1
 +
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
 +
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.431 ms
 +
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.404 ms
 +
 +
--- 192.168.1.1 ping statistics ---
 +
2 packets transmitted, 2 received, 0% packet loss, time 1020ms
 +
rtt min/avg/max/mdev = 0.404/0.417/0.431/0.024 ms
 +
asir@incus:~$ incus exec platega02 -- ping -c 2 192.168.1.46
 +
PING 192.168.1.46 (192.168.1.46) 56(84) bytes of data.
 +
64 bytes from 192.168.1.46: icmp_seq=1 ttl=64 time=0.168 ms
 +
64 bytes from 192.168.1.46: icmp_seq=2 ttl=64 time=0.126 ms
 +
 +
--- 192.168.1.46 ping statistics ---
 +
2 packets transmitted, 2 received, 0% packet loss, time 1021ms
 +
rtt min/avg/max/mdev = 0.126/0.147/0.168/0.021 ms
 +
As comunicacións co equipo anfitrión non se permiten:
 +
 +
asir@incus:~$ incus exec platega02 -- ping -c 2 192.168.1.150
 +
PING 192.168.1.150 (192.168.1.150) 56(84) bytes of data.
 +
From 192.168.1.45 icmp_seq=1 Destination Host Unreachable
 +
 +
--- 192.168.1.150 ping statistics ---
 +
2 packets transmitted, 0 received, +1 errors, 100% packet loss, time 1018ms
 +
pipe 2
 +
asir@incus:~$ ping -c 2 192.168.1.45
 +
PING 192.168.1.45 (192.168.1.45) 56(84) bytes of data.
 +
From 192.168.1.150 icmp_seq=1 Destination Host Unreachable
 +
 +
--- 192.168.1.45 ping statistics ---
 +
2 packets transmitted, 0 received, +1 errors, 100% packet loss, time 1017ms
 +
pipe 2
 +
</pre>
 +
 +
A partir de agora, o contedor debe ter unha configuración válida para a rede da organización. Neste momento se arrincamos o contenedor, éste trataría de obter unha configuración de rede por dhcp en base ó seu arquivo /etc/netplan/10-lxc.yaml. Se queremos asignarlle unha configuración estática, simplemente habería que indicar no /etc/netplan/10-lxc.yaml do contedor a nova configuración.
 +
 +
=== MACVLAN (o anfitrión dos contedores é unha máquina virtual Virtualbox) ===
 +
 +
É posible traballar con este modo sendo o anfitrión dos contedores unha máquina virtual de Virtualbox pero hai que facer unhas actuacións previas:
 +
 +
A máquina virtual que funciona como anfitriona dos contedores debe:
 +
Ter a interface de rede en modo bridge.
 +
Ter activado o modo promiscuo na interface de rede (Virtualbox ten que permitir o envío/recepción de paquetes de rede onde interveñen as diferentes direccións MAC dos contedores en modo macvlan)
 +
Hai que crear unha interface de tipo bridge no sistema operativo da máquina virtual que funciona como anfitrioa dos contedores.
 +
No profile dos contedores onde se define o modo macvlan, o parent será a interface bridge configurada no punto anterior.
 +
Ímos ver as instruccións paso a paso (válidas tanto para Xubuntu 20.04 coma Xubuntu 22.04).
 +
 +
Configuración da interface de rede da máquina virtual anfitrioa dos contedores:
 +
 +
Indico que é unha interface de tipo Adaptador puente e asócioa á interface enp6s0 da miña máquina real.
 +
Activo o Modo Promiscuo
 +
Configuración interface de rede
 +
 +
A configuración da interface de tipo bridge vaise facer usando o asistente gráfico de configuración de rede do equipo Ubuntu (no caso dun Ubuntu Server habería que facelo usando netplan e editando o arquivo de configuración de rede):
 +
 +
Editando a configuración de rede
 +
 +
Fig. Lanzando o configurador de rede
 +
 +
Editando a configuración de rede
 +
 +
Creando nova interface de tipo bridge
 +
 +
Creando nova interface de tipo bridge
 +
 +
Fig. Engadindo unha nova interface de tipo ponte (bridge)
 +
 +
Configuración interface de rede de tipo bridge
 +
 +
Fig. Engadir unha das interfaces de rede da máquina virtual ó bridge
 +
 +
Engadindo a interface da máquina virtual á ponte
 +
 +
Fig. Engadir unha das interfaces de rede da máquina virtual ó bridge
 +
 +
Engadindo a interface da máquina virtual á ponte
 +
 +
Fig. Engadir unha das interfaces de rede da máquina virtual ó bridge --> enp0s3
 +
 +
Interface de rede engadida á ponte
 +
 +
Configurando a IP da interface de tipo bridge
 +
 +
Fig. Configurando a IP da interface de tipo bridge
 +
 +
Interface ponte configurada
 +
 +
Reiniciamos o equipo e verificamos a configuración da nova interface. Fíxadevos que a interface bridge0 sí ten asignada unha IP e como enp0s3 agora forma parte da ponte, sí está activa pero non ten asignada unha configuración IP:
 +
 +
<pre>
 +
~$ 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
 +
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bridge0 state UP group default qlen 1000
 +
    link/ether 08:00:27:ff:fc:1f brd ff:ff:ff:ff:ff:ff
 +
3: bridge0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
 +
    link/ether 1e:69:e2:83:f4:ca brd ff:ff:ff:ff:ff:ff
 +
    inet 192.168.1.150/24 brd 192.168.1.255 scope global noprefixroute bridge0
 +
      valid_lft forever preferred_lft forever
 +
...
 +
</pre>
 +
 +
Agora créase un profile de tipo macvlan usando como parent a interface bridge0:
 +
<pre>
 +
asir@incus:~$ incus profile copy default macvlan
 +
asir@incus:~$ incus profile edit macvlan
 +
 +
### This is a yaml representation of the profile.
 +
### Any line starting with a '# will be ignored.
 +
###
 +
### A profile consists of a set of configuration items followed by a set of
 +
### devices.
 +
###
 +
### An example would look like:
 +
### name: onenic
 +
### config:
 +
###  raw.lxc: lxc.aa_profile=unconfined
 +
### devices:
 +
###  eth0:
 +
###    nictype: bridged
 +
###    parent: lxdbr0
 +
###    type: nic
 +
###
 +
### Note that the name is shown but cannot be changed
 +
 +
config: {}
 +
description: Default LXD profile
 +
devices:
 +
  eth0:
 +
    name: eth0
 +
    nictype: macvlan
 +
    parent: bridge0 
 +
    type: nic
 +
  root:
 +
    path: /
 +
    pool: default
 +
    type: disk
 +
name: macvlan
 +
used_by: []
 +
</pre>
 +
 +
Probamos a crear un par de contedores usando este profile:
 +
<pre>
 +
~$ incus launch images:ubuntu/jammy macvlan00 -p macvlan 
 +
~$ incus launch images:ubuntu/jammy macvlan01 -p macvlan
 +
~$ i incus ls -c n,s,4,6,P,S
 +
+-----------+---------+----------------------+----------------------------------------------+----------+-----------+
 +
|  NAME    |  STATE  |        IPV4        |                    IPV6                    | PROFILES | SNAPSHOTS |
 +
+-----------+---------+----------------------+----------------------------------------------+----------+-----------+
 +
| alpine00  | RUNNING | 10.79.128.80 (eth0)  | fd42:a317:cbc5:dbd:216:3eff:fe99:e07f (eth0) | default  | 0        |
 +
+-----------+---------+----------------------+----------------------------------------------+----------+-----------+
 +
| alpine01  | RUNNING | 10.79.128.123 (eth0) | fd42:a317:cbc5:dbd:216:3eff:fe94:dca7 (eth0) | default  | 0        |
 +
+-----------+---------+----------------------+----------------------------------------------+----------+-----------+
 +
| alpine02  | STOPPED |                      |                                              | default  | 0        |
 +
+-----------+---------+----------------------+----------------------------------------------+----------+-----------+
 +
| macvlan00 | RUNNING | 192.168.1.38 (eth0)  |                                              | macvlan  | 0        |
 +
+-----------+---------+----------------------+----------------------------------------------+----------+-----------+
 +
| macvlan01 | RUNNING | 192.168.1.41 (eth0)  |                                              | macvlan  | 0        |
 +
+-----------+---------+----------------------+----------------------------------------------+----------+-----------+
 +
</pre>
 +
 +
A partir de agora, o contedor debe ter unha configuración válida para a rede da organización. Neste momento se arrincamos o contenedor, éste trataría de obter unha configuración de rede por dhcp en base ó seu arquivo /etc/netplan/10-.yaml. Se queremos asignarlle unha configuración estática, simplemente habería que indicar no /etc/netplan/10-lxc.yaml do contedor a nova configuración.
  
 
== Contedores en modo ponte ==
 
== Contedores en modo ponte ==

Revisión del 18:57 19 ene 2026

Introdución

Veremos como facer alguhas cousas a maiores das vistas nos anteriores escenarios

  • Incus-UI - web interface de xestión
  • Modos de rede avanzados: macvlan e ponte.
  • Contedores e redes wifi
  • Comunicacións entre contedores no equipo real e máquinas virtuais sobre Virtualbox.
  • Contedores con contorno gráfico.

Incus-UI - web interface de xestión

Hai unha interface web de xestión que permite realizar as operacións vistas nos capítulos anteriores a través dun navegador.

Hai algún outro proxecto de interfaz gráfica pero éste é o oficial.

A continuación os pasos para a súa instalación e uso:

instalar e habilitar incus-ui

~$ sudo apt install -y incus-ui-canonical
~$ incus config show 
config: {}
~$ incus config set core.https_address 127.0.0.1:8443
~$ incus config show 
config:
  core.https_address: 127.0.0.1:8443
asir@incus:~$ sudo netstat -putan | grep 8443
tcp        0      0 127.0.0.1:8443          0.0.0.0:*               ESCUCHAR    957/incusd          

Crear certificado e otorgar confianza

Acceder co navegador á: https://127.0.0.1:8443

Entrar premendo en Login with TLS e xerar certificado:


Seguimos os pasos indicados: xerar certificado e protexer con contrasinal, otorgar confianza (ollo que a ruta e o nome do arquivo descargado non ten porque coincidir co indicado no comando incus config trust do exemplo).

~$ incus config trust list
+------+------+-------------+----------------+---------------------+
| NAME | TYPE | DESCRIPCIÓN | HUELLA DIGITAL | FECHA DE EXPIRACIÓN |
+------+------+-------------+----------------+---------------------+
~$ ls -lhF Descargas/
total 4,0K
-rw-rw-r-- 1 asir asir 1,1K ene 17 17:38 incus-ui.crt
~$ incus config trust add-certificate Descargas/incus-ui.crt
~$ incus config trust list
+--------------+--------+-------------+----------------+-----------------------+
|     NAME     |  TYPE  | DESCRIPCIÓN | HUELLA DIGITAL |  FECHA DE EXPIRACIÓN  |
+--------------+--------+-------------+----------------+-----------------------+
| incus-ui.crt | client |             | 721108b3c8ba   | 2028/10/13 18:38 CEST |
+--------------+--------+-------------+----------------+-----------------------+

Descargar e importar .pfx

Acceso

Unha vez instalado o certificado no navegador hai que proceder a pechalo e volver a abrilo e acceder á web de INCUS-UI. Aparecerá unha mensace relativa á aceptación do certificado e unha vez aceptado xa poderemos xestionar gráficamente os contedores.

Nas seguintes imaxes poden verse algunhas capturas de pantalla da interface de xestión:

Contedores en modo Macvlan

Deste modo de rede hai que descatar os seguintes puntos:

  • É o modo máis sinxelo de conectar os contedores directamente á rede física e non require tocar a configuración de rede do host anfitrión.
  • Normalmente ofrece un mellor rendemento que o bridge que veremos máis adiante.
  • Permite a comunicación entre os contedores.
  • NON permite a comunicación entre os contedores e o host anfitrión. Polo tanto, se precisamos que haxa comunicacións entre contedores e o anfitrión, este modo non nos vale.
  • NON funciona en Virtualbox por defecto.
  • NON funciona en sistemas anfitrión reais usando wifi

Na seguinte imaxe pode verse unha interpretación das conexións neste modo de rede:

Esquema conexións modo MACVLAN

Fig. Esquema de conexión no modo MACVLAN

MACVLAN (o anfitrión dos contedores é un equipo real)

En primeiro lugar, comezaremos creando un perfil a partir do perfil por defecto e modificamos:

O nictype a macvlan: O parent de incusbr0 a enp0s3 (o nome da interface real do equipo anfitrión a usar).

~$ incus profile copy default macvlan
~$ incus profile edit macvlan 

### This is a yaml representation of the profile.
### Any line starting with a '# will be ignored.
###
### A profile consists of a set of configuration items followed by a set of
### devices.
###
### An example would look like:
### name: onenic
### config:
###   raw.lxc: lxc.aa_profile=unconfined
### devices:
###   eth0:
###     nictype: bridged
###     parent: lxdbr0
###     type: nic
###
### Note that the name is shown but cannot be changed

config: {}
description: Default LXD profile
devices:
  eth0:
    name: eth0
    nictype: macvlan
    parent: enp0s3  
    type: nic
  root:
    path: /
    pool: default
    type: disk
name: macvlan
used_by: []
project: default

A continuación creamos dous novos contedores aplicándolles o novo perfil macvlan.

~$ incus launch images:ubuntu/jammy platega02 --profile macvlan
Launching platega02
asir@incus:~$ incus launch images:ubuntu/jammy platega03 --profile macvlan
Launching platega03

Podemos comprobar que reciben a configuración de rede dende o servidor dhcp da rede local 192.168.1.0/24 (e non do dhcp asociado a lxdbr0):

$ incus ls -c n,s,4,6,P,S
+-----------+---------+-----------------------+---------------------------------------------+----------+-----------+
|  NOMBRE   | ESTADO  |         IPV4          |                    IPV6                     | PERFILES | SNAPSHOTS |
+-----------+---------+-----------------------+---------------------------------------------+----------+-----------+
| platega00 | RUNNING | 10.119.191.239 (eth0) | fd42:47c9:add7:7c:216:3eff:fe59:7ec5 (eth0) | default  | 1         |
+-----------+---------+-----------------------+---------------------------------------------+----------+-----------+
| platega01 | RUNNING | 10.119.191.183 (eth0) | fd42:47c9:add7:7c:216:3eff:fe3e:d63e (eth0) | default  | 0         |
+-----------+---------+-----------------------+---------------------------------------------+----------+-----------+
| platega02 | RUNNING | 192.168.1.45 (eth0)   |                                             | macvlan  | 0         |
+-----------+---------+-----------------------+---------------------------------------------+----------+-----------+
| platega03 | RUNNING | 192.168.1.46 (eth0)   |                                             | macvlan  | 0         |
+-----------+---------+-----------------------+---------------------------------------------+----------+-----------+

Facendo algunhas probas de conectividade podemos verificar o indicado sobre o modo MACVLAN en relación ás comunicacións co exterior e entre os contedores: sí se permiten.

~$ incus exec platega02 -- host www.xunta.es 8.8.8.8
Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
Aliases: 

www.xunta.es has address 85.91.64.254
asir@incus:~$ incus exec platega02 -- ping -c 2 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.431 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.404 ms

--- 192.168.1.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1020ms
rtt min/avg/max/mdev = 0.404/0.417/0.431/0.024 ms
asir@incus:~$ incus exec platega02 -- ping -c 2 192.168.1.46
PING 192.168.1.46 (192.168.1.46) 56(84) bytes of data.
64 bytes from 192.168.1.46: icmp_seq=1 ttl=64 time=0.168 ms
64 bytes from 192.168.1.46: icmp_seq=2 ttl=64 time=0.126 ms

--- 192.168.1.46 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1021ms
rtt min/avg/max/mdev = 0.126/0.147/0.168/0.021 ms
As comunicacións co equipo anfitrión non se permiten:

asir@incus:~$ incus exec platega02 -- ping -c 2 192.168.1.150
PING 192.168.1.150 (192.168.1.150) 56(84) bytes of data.
From 192.168.1.45 icmp_seq=1 Destination Host Unreachable

--- 192.168.1.150 ping statistics ---
2 packets transmitted, 0 received, +1 errors, 100% packet loss, time 1018ms
pipe 2
asir@incus:~$ ping -c 2 192.168.1.45
PING 192.168.1.45 (192.168.1.45) 56(84) bytes of data.
From 192.168.1.150 icmp_seq=1 Destination Host Unreachable

--- 192.168.1.45 ping statistics ---
2 packets transmitted, 0 received, +1 errors, 100% packet loss, time 1017ms
pipe 2

A partir de agora, o contedor debe ter unha configuración válida para a rede da organización. Neste momento se arrincamos o contenedor, éste trataría de obter unha configuración de rede por dhcp en base ó seu arquivo /etc/netplan/10-lxc.yaml. Se queremos asignarlle unha configuración estática, simplemente habería que indicar no /etc/netplan/10-lxc.yaml do contedor a nova configuración.

MACVLAN (o anfitrión dos contedores é unha máquina virtual Virtualbox)

É posible traballar con este modo sendo o anfitrión dos contedores unha máquina virtual de Virtualbox pero hai que facer unhas actuacións previas:

A máquina virtual que funciona como anfitriona dos contedores debe: Ter a interface de rede en modo bridge. Ter activado o modo promiscuo na interface de rede (Virtualbox ten que permitir o envío/recepción de paquetes de rede onde interveñen as diferentes direccións MAC dos contedores en modo macvlan) Hai que crear unha interface de tipo bridge no sistema operativo da máquina virtual que funciona como anfitrioa dos contedores. No profile dos contedores onde se define o modo macvlan, o parent será a interface bridge configurada no punto anterior. Ímos ver as instruccións paso a paso (válidas tanto para Xubuntu 20.04 coma Xubuntu 22.04).

Configuración da interface de rede da máquina virtual anfitrioa dos contedores:

Indico que é unha interface de tipo Adaptador puente e asócioa á interface enp6s0 da miña máquina real. Activo o Modo Promiscuo Configuración interface de rede

A configuración da interface de tipo bridge vaise facer usando o asistente gráfico de configuración de rede do equipo Ubuntu (no caso dun Ubuntu Server habería que facelo usando netplan e editando o arquivo de configuración de rede):

Editando a configuración de rede

Fig. Lanzando o configurador de rede

Editando a configuración de rede

Creando nova interface de tipo bridge

Creando nova interface de tipo bridge

Fig. Engadindo unha nova interface de tipo ponte (bridge)

Configuración interface de rede de tipo bridge

Fig. Engadir unha das interfaces de rede da máquina virtual ó bridge

Engadindo a interface da máquina virtual á ponte

Fig. Engadir unha das interfaces de rede da máquina virtual ó bridge

Engadindo a interface da máquina virtual á ponte

Fig. Engadir unha das interfaces de rede da máquina virtual ó bridge --> enp0s3

Interface de rede engadida á ponte

Configurando a IP da interface de tipo bridge

Fig. Configurando a IP da interface de tipo bridge

Interface ponte configurada

Reiniciamos o equipo e verificamos a configuración da nova interface. Fíxadevos que a interface bridge0 sí ten asignada unha IP e como enp0s3 agora forma parte da ponte, sí está activa pero non ten asignada unha configuración IP:

~$ 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
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bridge0 state UP group default qlen 1000
    link/ether 08:00:27:ff:fc:1f brd ff:ff:ff:ff:ff:ff
3: bridge0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 1e:69:e2:83:f4:ca brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.150/24 brd 192.168.1.255 scope global noprefixroute bridge0
       valid_lft forever preferred_lft forever
...

Agora créase un profile de tipo macvlan usando como parent a interface bridge0:

asir@incus:~$ incus profile copy default macvlan
asir@incus:~$ incus profile edit macvlan

### This is a yaml representation of the profile.
### Any line starting with a '# will be ignored.
###
### A profile consists of a set of configuration items followed by a set of
### devices.
###
### An example would look like:
### name: onenic
### config:
###   raw.lxc: lxc.aa_profile=unconfined
### devices:
###   eth0:
###     nictype: bridged
###     parent: lxdbr0
###     type: nic
###
### Note that the name is shown but cannot be changed

config: {}
description: Default LXD profile
devices:
  eth0:
    name: eth0
    nictype: macvlan
    parent: bridge0  
    type: nic
  root:
    path: /
    pool: default
    type: disk
name: macvlan
used_by: []

Probamos a crear un par de contedores usando este profile:

~$ incus launch images:ubuntu/jammy macvlan00 -p macvlan  
~$ incus launch images:ubuntu/jammy macvlan01 -p macvlan
~$ i incus ls -c n,s,4,6,P,S
+-----------+---------+----------------------+----------------------------------------------+----------+-----------+
|   NAME    |  STATE  |         IPV4         |                     IPV6                     | PROFILES | SNAPSHOTS |
+-----------+---------+----------------------+----------------------------------------------+----------+-----------+
| alpine00  | RUNNING | 10.79.128.80 (eth0)  | fd42:a317:cbc5:dbd:216:3eff:fe99:e07f (eth0) | default  | 0         |
+-----------+---------+----------------------+----------------------------------------------+----------+-----------+
| alpine01  | RUNNING | 10.79.128.123 (eth0) | fd42:a317:cbc5:dbd:216:3eff:fe94:dca7 (eth0) | default  | 0         |
+-----------+---------+----------------------+----------------------------------------------+----------+-----------+
| alpine02  | STOPPED |                      |                                              | default  | 0         |
+-----------+---------+----------------------+----------------------------------------------+----------+-----------+
| macvlan00 | RUNNING | 192.168.1.38 (eth0)   |                                              | macvlan  | 0         |
+-----------+---------+----------------------+----------------------------------------------+----------+-----------+
| macvlan01 | RUNNING | 192.168.1.41 (eth0)   |                                              | macvlan  | 0         |
+-----------+---------+----------------------+----------------------------------------------+----------+-----------+

A partir de agora, o contedor debe ter unha configuración válida para a rede da organización. Neste momento se arrincamos o contenedor, éste trataría de obter unha configuración de rede por dhcp en base ó seu arquivo /etc/netplan/10-.yaml. Se queremos asignarlle unha configuración estática, simplemente habería que indicar no /etc/netplan/10-lxc.yaml do contedor a nova configuración.

Contedores en modo ponte

Contedores e redes wifi

Comunicacións entre contedores no equipo real e máquinas virtuais sobre Virtualbox

Contedores con contorno gráfico

Referencias