Este artículo recoge la configuración que suelo utilizar a la hora de crear máquinas virtuales de Ubuntu Server 26.04 en VMware Workstation Pro 26H1.
Se instalará y configurará Ubuntu Server explicando cada ajuste técnico y los motivos por los que es aconsejable aplicarlo. El objetivo es obtener un entorno estable, rápido y adecuado para desarrollo, pruebas y laboratorio personal.
1. Configuración de CPU
1.1 Procesador y núcleos
Se recomienda configurar 1 procesador con 2 núcleos.
Linux gestiona mejor un único socket con varios núcleos que múltiples sockets con un solo núcleo cada uno. Esto reduce la latencia, evita la sobrecarga NUMA y mejora el rendimiento general del sistema.
1.2 Virtualize Intel VT‑x/EPT
Normalmente es muy recomendable activar esta opción, ya que permite:
- aceleración por hardware
- mejor rendimiento en Docker, LXC, KVM y QEMU
- menor latencia en operaciones de virtualización
- mayor velocidad en compilaciones y criptografía
Sin embargo, en este equipo no se activará porque Windows 11 ejecuta un hipervisor interno debido a características del sistema como WSL2 y la seguridad basada en virtualización (VBS).
Cuando el hipervisor de Windows está activo, VMware Workstation Pro no puede acceder a VT‑x/EPT, por lo que esta opción queda inutilizable. La máquina virtual funcionará correctamente, pero sin aceleración por hardware.
1.3 Virtualize IOMMU
Es recomendable activarlo.
IOMMU mejora la gestión de memoria, el rendimiento de contenedores y la seguridad frente a accesos DMA. También aporta beneficios en entornos con Kubernetes o cargas de trabajo con aislamiento avanzado.
1.4 Virtualize CPU performance counters
Debe dejarse desactivado.
Estos contadores solo son útiles para análisis de rendimiento avanzados (profiling) y añaden sobrecarga innecesaria en un servidor.
2. Memoria RAM
Asignar 4 GB (4096MB) es suficiente para la mayoría de servicios. Si se van a ejecutar contenedores, bases de datos o servicios más pesados, se puede aumentar a 8 GB sin problema.
3. Almacenamiento
3.1 Tipo de disco: NVMe
VMware Workstation Pro permite utilizar discos NVMe, que ofrecen:
- menor latencia
- mayor número de IOPS
- mejor rendimiento en bases de datos y contenedores
- detección nativa en Ubuntu (
/dev/nvme0n1)
3.2 Controladora: Paravirtualized SCSI (PVSCSI)
Es la controladora más eficiente para entornos virtualizados:
- menor consumo de CPU
- mayor rendimiento en operaciones de E/S
- optimizada para cargas de trabajo intensivas
- totalmente compatible con Ubuntu Server
3.3 Tamaño del disco
Se recomienda asignar 50 GB, suficiente para un servidor base con Docker y servicios adicionales.
3.4 Formato del disco
- Thin provisioned
- Single file
4. Firmware
4.1 UEFI
Ubuntu Server funciona mejor con UEFI que con BIOS:
- arranque más rápido
- compatibilidad moderna
- mejor integración con NVMe
5. Red
5.1 NAT
Es la opción más estable en VMware Workstation Pro:
- salida a Internet sin configuración adicional
- IP consistente
- menos problemas con firewalls o routers
- ideal para entornos de desarrollo
6. Guest Isolation
6.1 Copy & Paste
Debe dejarse activado.
6.2 Drag & Drop
Debe dejarse desactivado.
7. Dispositivos virtuales
7.1 USB Controller
Puede dejarse activado.
7.2 Tarjeta de sonido
Debe eliminarse.
7.3 Cámara e impresora
No deben añadirse.
8. Mitigaciones de side‑channel
Estas mitigaciones reducen el rendimiento y no aportan beneficios reales en un entorno personal o de laboratorio. Es recomendable desactivarlas.
9. Instalación del sistema operativo
9.1 Instalación de Ubuntu Server
Una vez configurada la máquina virtual:
- Arrancar la VM.
- Instalar Ubuntu Server normalmente (instalar el servidor SSH)
- Actualizar el sistema:
sudo apt update
sudo apt full-upgrade -y
sudo apt autoremove -y
sudo apt clean
sudo timedatectl set-ntp true
sudo reboot
9.2 Instalación de PowerShell
La instalación de PowerShell 7 desde el repositorio de paquetes de Microsoft aún no es posible porque no está publicada la versión para Ubuntu 26.04:
#!/bin/bash
###################################
# Prerequisites
# Update the list of packages
sudo apt update
# Install pre-requisite packages.
sudo apt install -y wget apt-transport-https software-properties-common
# Get the version of Ubuntu
source /etc/os-release
# Download the Microsoft repository keys
wget -q https://packages.microsoft.com/config/ubuntu/$VERSION_ID/packages-microsoft-prod.deb
# Register the Microsoft repository keys
sudo dpkg -i packages-microsoft-prod.deb
# Delete the Microsoft repository keys file
rm packages-microsoft-prod.deb
# Update the list of packages after we added packages.microsoft.com
sudo apt update
###################################
# Install PowerShell
sudo apt install -y powershell
Por tanto, hay que realizar la instalación manual de la versión deseada (en este caso la 7.6.5):
#!/bin/bash
###################################
# Prerequisites
# Update the list of packages
sudo apt update
# Install pre-requisite packages.
sudo apt install -y wget
# Download the PowerShell package file
wget https://github.com/PowerShell/PowerShell/releases/download/v7.6.5/powershell_7.6.5-1.deb_amd64.deb
###################################
# Install the PowerShell package
sudo dpkg -i powershell_7.6.5-1.deb_amd64.deb
# Resolve missing dependencies and finish the install (if necessary)
sudo apt install -f
# Delete the downloaded package file
rm powershell_7.6.5-1.deb_amd64.deb
9.3 Ejecutar PowerShell
Para comprobar que PowerShell está instalado:
pwsh
Para obtener la versión:
pwsh -v
Para actualizar:
sudo apt update
sudo apt install --only-upgrade powershell
10. Instalación de VMware Tools
Nota: En principio, deberían haberse instalado durante el proceso de instalación del SO.
sudo apt install open-vm-tools -y
11. Instalación de Docker antes del snapshot
Es aconsejable instalar Docker antes de crear el snapshot base, ya que permite reutilizar la máquina virtual como plantilla para futuros entornos de desarrollo y laboratorio.
Instalación oficial de Docker (formato moderno con docker.sources)
1️⃣ Preparar el sistema
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
2️⃣ Añadir el repositorio oficial
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
3️⃣ Actualizar repositorios
sudo apt update
4️⃣ Instalar Docker Engine + CLI + containerd
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
5️⃣ Añadir el usuario al grupo docker
sudo usermod -aG docker $USER
6️⃣ Reiniciar sesión
7️⃣ Verificar Docker
docker --version
docker info
docker run hello-world
12. Mostrar la IP asignada en la consola de Ubuntu Server
Para mostrar la dirección IP directamente en la consola de VMware (antes del login), es necesario modificar el archivo /etc/issue, que controla el mensaje mostrado por el servicio getty.
Editar el archivo:
sudo nano /etc/issue
Añadir al final (ajustando la interfaz de red según el sistema):
IP principal: \4{ens33}
Reiniciar el servicio getty:
sudo systemctl restart getty@tty1.service
A partir de este momento, la consola mostrará la IP asignada por DHCP justo antes del prompt de login.
13. Snapshot final
Apagar la máquina:
sudo poweroff
Crear snapshot limpio:
Base Updated + PowerShell + Docker
14. Configuración de la VM clones y laboratorios
Cuando se clona una máquina virtual a partir del snapshot base, es recomendable ajustar algunos parámetros fundamentales:
- el nombre del host, para identificar cada instancia (ubuntu1, ubuntu2, wazuh-manager, wazuh-agent1, etc.)
- la dirección IP, para evitar conflictos y permitir la creación de laboratorios (Wazuh, Elastic, Docker Swarm, etc.)
- las claves SSH, para evitar duplicados de los hosts conocidos y las advertencias del cliente SSH
14.1 Cambio del nombre del host
Ubuntu Server utiliza dos mecanismos:
/etc/hostname→ nombre persistente/etc/hosts→ resolución localcloud-init→ puede sobrescribir el hostname si no se desactiva
1️⃣ Cambiar el hostname
sudo hostnamectl set-hostname ubuntu1
2️⃣ Actualizar /etc/hosts
Editar:
sudo nano /etc/hosts
Modificar la línea:
127.0.1.1 ubuntu1
3️⃣ Desactivar cloud-init para que no sobrescriba el hostname
Crear archivo:
sudo nano /etc/cloud/cloud.cfg.d/99-disable-hostname.cfg
Contenido:
preserve_hostname: true
4️⃣ Reiniciar
sudo reboot
Tras el reinicio, el sistema mostrará el nuevo nombre del host en la consola y por SSH.
14.2 Configuración de IP estática (Netplan)
Ubuntu Server 26.04 utiliza Netplan para gestionar la red.
Para asignar una IP estática en VMware Workstation (NAT o Bridged), se debe editar el archivo de configuración correspondiente.
1️⃣ Identificar la interfaz de red
Normalmente en VMware es:
ens33eth0
Comprobar:
ip -4 a
2️⃣ Editar la configuración de Netplan
sudo nano /etc/netplan/01-netcfg.yaml
3️⃣ Configuración de ejemplo (NAT en VMware)
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: false
addresses:
- 192.168.20.11/24
routes:
- to: default
via: 192.168.20.2
nameservers:
addresses:
- 1.1.1.1
- 8.8.8.8
sudo chmod 600 /etc/netplan/01-netcfg.yaml
sudo mv /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.bak
4️⃣ Aplicar la configuración
Nota: A la hora de aplicar la configuración, es mejor hacerlo desde la consola para evitar problemas con la conexión SSH.
sudo netplan apply
5️⃣ Verificar
ip a
ping -c 3 192.168.20.2
ping -c 3 google.com
14.3 Regenerar las claves SSH
Se ejecutarán los dos scripts existentes al final del artículo Autenticación SSH usando una clave privada para generar nuevas claves SSH y configurar el servidor SSH para usarlas.
La ejecución del primer script sudo ./ssh1.sh elimina antiguas claves DSA y EDCSA y genera claves ED25519 y RSA (3072 bits):
#!/bin/bash
set -e
echo "🔐 Eliminando claves antiguas DSA y ECDSA si existen..."
rm -f /etc/ssh/ssh_host_dsa_key*
rm -f /etc/ssh/ssh_host_ecdsa_key*
echo "🔑 Regenerando clave ED25519..."
yes | ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ""
echo "🔑 Regenerando clave RSA (3072 bits)..."
yes | ssh-keygen -t rsa -b 3072 -f /etc/ssh/ssh_host_rsa_key -N ""
echo "✅ Claves SSH regeneradas correctamente."
La ejecución del segundo script sudo ./ssh2.sh configura el servidor de SSH para utilizar únicamente las nuevas claves generadas anteriormente:
#!/bin/bash
CONFIG="/etc/ssh/sshd_config"
BACKUP="/etc/ssh/sshd_config.bak"
# Crear copia de seguridad
cp "$CONFIG" "$BACKUP"
# Procesar el archivo
awk '
BEGIN { found_pubkey = 0 }
{
if ($0 ~ /^[# ]*HostKey[ \t]+\/etc\/ssh\/ssh_host_rsa_key/) {
print "HostKey /etc/ssh/ssh_host_rsa_key"
} else if ($0 ~ /^[# ]*HostKey[ \t]+\/etc\/ssh\/ssh_host_ed25519_key/) {
print "HostKey /etc/ssh/ssh_host_ed25519_key"
} else if ($0 ~ /^[^#]*HostKey[ \t]+\/etc\/ssh\/ssh_host_dsa_key/) {
print "#" $0
} else if ($0 ~ /^[^#]*HostKey[ \t]+\/etc\/ssh\/ssh_host_ecdsa_key/) {
print "#" $0
} else if ($0 ~ /^PubkeyAcceptedKeyTypes/) {
print "PubkeyAcceptedKeyTypes ssh-ed25519,ssh-rsa"
found_pubkey = 1
} else {
print $0
}
}
END {
if (found_pubkey == 0) {
print ""
print "PubkeyAcceptedKeyTypes ssh-ed25519,ssh-rsa"
}
}
' "$BACKUP" > "$CONFIG"
echo "✅ Archivo actualizado: $CONFIG"
Una vez configurado el servidor SSH, lo mejor es reiniciar el servicio o el servidor para aplicar los cambios.
Historial de cambios
- 2026-08-19: Documento inicial
- 2026-08-28: Revisión y mejoras