Diferencia entre revisiones de «Escenario 3C. LXC: Máis sobre contedores Incus»
| 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
Sumario
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.