Configurant i gestionant màquines virtuals amb VMM a OpenBSD

Configurant i gestionant màquines virtuals amb VMM a OpenBSD

Amb OpenBSD, podem tenir màquines virtuals gràcies a VMM hypervisor, que està inclòs al paquet base, i es configura a l'estil d'OpenBSD.

En aquest article vull explicar com muntar una màquina virtual OpenBSD sobre el teu propi OpenBSD de host, per a que pugues fer proves amb un servidor virtual i que pugues clonar-lo, modificar-lo o esborrar-lo sense necessitat de carregar-te el teu sistema operatiu.

I és que les nits d'estiu són magnífiques per a experimentar amb allò que ens agrada, i des de fa una setmana estava llegint sobre la generació de màquines virtuals a OpenBSD, amb Qemu o amb VMM, i he aprofundit en aquest últim, ja que és de la casa "marca OpenBSD", que junt amb el dimoni vmd, les màquines virtuals poden ser gestionades amb la utilitat de control vmctl, que llegeix la informació del fitxer /etc/vm.conf.

VMM ofereix les següents funcionalitats:
- Accés a amb la consola sèrie a les màquines virtuals
- Interfícies de xarxa tap
- Permisos a cada màquina virtual per usuari i grup
- Separació de privilegis
- Imatges de disc raw, qcow2 i derivades de qcow2
- Pots fer dumps i restauracions de la memòria del sistema de les màquines
- Pots pausar i tornar a activar les màquines virtuals

Aleshores, si vols programar coses delicades o jugar amb un OpenBSD a nivell de criptografia o am bla xarxa TOR, pots crear-te una màquina virtual sense por a trencar el teu sistema operatiu de l'ordinador. Si vols muntar-te un servidor Samba o NFS, pots fer les proves que vullgues amb una màquina virtual. O si vols muntar un servidor web i no tens clar algunes coses de les tecnologies que necessites, pots anar creant màquines en mode desenvolupament sense límits fins decidir quines versions vols usar. Si vols experimentar amb ports i packages d'OpenBSD i no vols enmerdar l'ordinador, pots fer tantes proves com vullgues amb una màquina virtual des de VMM.

Abans d'anar més enllà, habilitarem i iniciarem el servei vmd amb:

# doas rcctl enable vmd
# doas rcctl start vmd

INSTAL·LACIÓ D'UN OPENBSD COM A MÀQUINA VIRTUAL
A l'hora de muntar una màquina virtual amb VMM, podem personalitzar la capacitat de memòria RAM que vullguem i el disc dur que necessitem molt fàcilment a l'estil d'OpenBSD.

Aquest és l'exemple que ix al manual d'OpenBSD, on crearem un disc dur de 50GB amb el format modern qcow2 i 1GB de memòria RAM. Ens descarregarem OpenBSD 6.5 del repositori oficial i arrencarem aquesta màquina virtual (que anomenarem maquineta) de la imatge install65.iso amb el següent:

# doas vmctl create disk.qcow2 -s 50G
vmctl: qcow2 imagefile created
# doas vmctl start maquineta -m 1G -L -i 1 -r install65.iso -d disk.qcow2
vmctl: started vm 1 successfully, tty /dev/ttyp8

A continuació podrem veure que ja la tenim creada i funcionant amb:

# doas vmctl show
ID PID VCPUS MAXMEM CURMEM TTY OWNER NAME
1 72118 1 1.0G 88.1M ttyp8 root maquineta

Si volem accedir a la consola de la nostra màquina virtual, hem d'obrir la seua consola sèrie:

# doas vmctl console maquineta
Connected to /dev/ttyp8 (speed 115200)

Configurant i gestionant màquines virtuals amb VMM a OpenBSD

A continuació, editarem el fitxer /etc/vm.conf i afegirem la informació de la màquina virtual:

vm "maquineta" {
memory 1G
enable
disk /home/joan/disk.qcow2
local interface
}

Ara mateix, ja tenim funcionant i activa la nostra màquina virtual. I també, si reiniciem i fem un htop, veurem
que hi ha 1GB de memòria RAM reservat per a ella. En la següent imatge pots veure la màquina virtual a l'esquerra, amb 1GB de RAM i a la dreta tens la informació de la meua màquina host corrent al portàtil Lenovo Thinkpad x205:

Configurant i gestionant màquines virtuals amb VMM a OpenBSD

CONFIGURACIÓ DE LA XARXA
Hi ha moltes maneres de configurar una xarxa, de moment ja tenim connexió entre la nostra màquina host OpenBSD i la màquina virtual, podem fer un ping des de qualsevol de les dues màquines i veurem que tenim connectivitat.
Si amb aquesta solució ja ens va bé per a algun desenvolupament, doncs ja ho tenim.

Però ara anem a configurar la xarxa NAT per a que la meua màquina virtual tinga accès a la xarxa, més enllà del host perquè necessitem instal·lar alguns programes i, per aquest motiu, necessitem arribar a internet.

Per a fer açò, necessitem activar el IP forwarding a la nostra màquina host, aleshores editarem el fitxer /etc/sysctl.conf i afegim:

net.inet.ip.forwarding=1

I a continuació configurem el fitxer /etc/pf.conf que obrirà l'accès de la màquina virtual cap a internet:

dns_server = '8.8.8.8'
match out on egress from 100.64.0.0/10 to any nat-to (egress)
pass in proto { udp tcp } from 100.64.0.0/10 to any port domain \
rdr-to $dns_server port domain

I finalment, ecarregarem aquesta nova regla del firewall, i la nostra màquina virtual hauria de tenir accès a la xarxa:

doas pfctl -f /etc/pf.conf

Ara tens el teu OpenBSD i una màquina virtual OpenBSD també que fa servir del seu disc dur virtual de 50GB i d'1GB de RAM. Per a més informació, recorda sempre seguir la documentació oficial d'OpenBSD on t'expliquen les coses de categoria.

Finalment, he instal·lat l'Apache Web Server a la maquineta virtual, i tot funciona de meravella:

Configurant i gestionant màquines virtuals amb VMM a OpenBSD

Més informació:

- Manual Virtualization OpenBSD
- Manual primers passos amb PF
- PF - Network Address Translation

Doncs bé això és tot, espere que trobes útil aquest article i que et motive a compartir els teus trucs, els teus coneixements i els teus experiments amb el Programari Lliure. Pensa-ho, va, que la Comunitat del Programari Lliure va creixent gràcies a la documentació, el disseny, la formació o la programació, sigues part de la Comunitat :-)

La cultura i la lliure circulació de les idees és l'arma més efectiva contra les dictadures del pensament i contra la ignorància.