--- title: "Cómo instalar pfSense en un host Linux con KVM" description: "Instala el firewall pfSense CE como máquina virtual KVM en un servidor Ubuntu 24.04, con red WAN y LAN separadas, asignación de interfaces y primeras reglas." category: "Seguridad de Red Avanzada" language: es source: https://cubepath.com/es/docs/seguridad-de-red-avanzada/instalacion-del-firewall-pfsense-en-linux updated: 2026-09-25 --- # Cómo instalar pfSense en un host Linux con KVM pfSense es un firewall y router de código abierto basado en FreeBSD. No se instala como paquete sobre Linux: es un sistema operativo completo que se ejecuta en hardware dedicado o en una máquina virtual. En este tutorial usarás un servidor con Ubuntu 24.04 como hipervisor KVM, crearás una máquina virtual pfSense con una red WAN y una red LAN aislada, asignarás las interfaces y dejarás el firewall listo para administrarlo desde su interfaz web. ## Requisitos previos - Un servidor con Ubuntu 24.04 LTS y virtualización por hardware (Intel VT-x o AMD-V). Un servidor dedicado es lo más adecuado; muchas máquinas virtuales no permiten virtualización anidada. - Al menos 2 GB de RAM y 16 GB de disco libres para la VM de pfSense, además de lo que use el host. - Un usuario no root con privilegios `sudo`. - Un equipo con cliente SSH desde el que abrir un túnel hacia la interfaz web. Comprueba que el procesador expone la virtualización: ```bash sudo apt update sudo apt install cpu-checker kvm-ok ``` ```output INFO: /dev/kvm exists KVM acceleration can be used ``` Si `kvm-ok` indica que KVM no está disponible, activa la virtualización en la BIOS o elige un servidor que la soporte. Sin ella, pfSense funcionará demasiado lento para usarse. > Nota: Si tu servidor dedicado va a ejecutar solo pfSense, puedes instalarlo directamente sobre el hardware arrancando la imagen de instalación desde la consola remota (IPMI/KVM sobre IP). Los pasos 5 a 7 de esta guía son los mismos en ese caso. ## Paso 1: Instalar KVM y libvirt Instala el hipervisor, el demonio de libvirt y la herramienta `virt-install`: ```bash sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients virtinst ``` Añade tu usuario al grupo `libvirt` para gestionar máquinas sin `sudo` y vuelve a iniciar sesión: ```bash sudo usermod -aG libvirt $USER ``` Tras volver a conectarte, comprueba que libvirt responde y que existe la red `default`: ```bash virsh -c qemu:///system net-list --all ``` ```output Name State Autostart Persistent -------------------------------------------- default active yes yes ``` La red `default` es una red NAT (`192.168.122.0/24`) que da salida a Internet a través del host. En esta guía será la WAN de pfSense. ## Paso 2: Crear la red LAN aislada La LAN de pfSense necesita una red separada en la que pfSense sea el único router. Crea una definición de red aislada (sin ``, por lo que libvirt no la enruta) en la que el host tenga la IP `192.168.1.2`, útil para llegar después a la interfaz web: ```bash nano ~/pfsense-lan.xml ``` ```xml pfsense-lan ``` No se define DHCP en libvirt porque de eso se encargará pfSense. Crea la red y márcala para que arranque sola: ```bash virsh -c qemu:///system net-define ~/pfsense-lan.xml virsh -c qemu:///system net-start pfsense-lan virsh -c qemu:///system net-autostart pfsense-lan ``` Comprueba que el host tiene la IP en el nuevo bridge: ```bash ip -br addr show virbr10 ``` ```output virbr10 UP 192.168.1.2/24 ``` ## Paso 3: Descargar la imagen de instalación Descarga la imagen de instalación de pfSense CE para `amd64` desde la página oficial, `https://www.pfsense.org/download/`. Netgate distribuye actualmente pfSense CE mediante un instalador en línea, que descarga el sistema durante la instalación, así que la VM necesitará salida a Internet por la WAN (la red `default` ya la ofrece). Sube o descarga la ISO al host, descomprímela si viene en `.gz` y muévela al directorio de imágenes de libvirt: ```bash gunzip netgate-installer-amd64.iso.gz sudo mv netgate-installer-amd64.iso /var/lib/libvirt/images/pfsense-installer.iso ``` El nombre exacto del archivo puede variar según la versión; ajusta los comandos al que hayas descargado. Verifica la suma SHA-256 con la que publica la página de descarga: ```bash sha256sum /var/lib/libvirt/images/pfsense-installer.iso ``` ## Paso 4: Crear la máquina virtual Consulta qué identificadores de FreeBSD conoce tu versión de `virt-install`, ya que pfSense se basa en FreeBSD: ```bash osinfo-query os | grep -i freebsd ``` Crea la VM con dos interfaces virtio: la primera en la red `default` (WAN) y la segunda en `pfsense-lan` (LAN). Sustituye `freebsd14.0` por el identificador más reciente que te haya mostrado el comando anterior: ```bash sudo virt-install \ --name pfsense \ --memory 2048 \ --vcpus 2 \ --disk path=/var/lib/libvirt/images/pfsense.qcow2,size=16,bus=virtio \ --cdrom /var/lib/libvirt/images/pfsense-installer.iso \ --os-variant freebsd14.0 \ --network network=default,model=virtio \ --network network=pfsense-lan,model=virtio \ --graphics vnc,listen=127.0.0.1 \ --noautoconsole ``` La consola gráfica solo escucha en `127.0.0.1` para no exponer VNC a Internet. Averigua su puerto: ```bash sudo virsh vncdisplay pfsense ``` ```output 127.0.0.1:0 ``` `:0` corresponde al puerto 5900. Desde tu equipo, abre un túnel SSH y conecta un cliente VNC a `localhost:5900`: ```bash ssh -L 5900:127.0.0.1:5900 your_user@your_server_ip ``` ## Paso 5: Instalar pfSense En la consola VNC verás el instalador. Sigue el asistente: 1. Acepta la licencia y elige instalar pfSense CE. 2. Cuando pregunte por las interfaces, selecciona `vtnet0` como WAN (con DHCP) y `vtnet1` como LAN. 3. Elige el sistema de archivos ZFS en el disco virtual `vtbd0` con la opción por defecto. 4. Espera a que el instalador descargue e instale los paquetes y reinicia al terminar. Cuando la VM se reinicie, quita la ISO para que no vuelva a arrancar el instalador: ```bash sudo virsh change-media pfsense sda --eject ``` Si el comando indica que no existe `sda`, consulta el nombre del lector con `sudo virsh domblklist pfsense`. Configura también la VM para que arranque con el host: ```bash sudo virsh autostart pfsense ``` ## Paso 6: Revisar la asignación de interfaces en la consola Tras el reinicio, la consola de pfSense muestra un menú y el estado de las interfaces: ```output WAN (wan) -> vtnet0 -> v4/DHCP4: 192.168.122.57/24 LAN (lan) -> vtnet1 -> v4: 192.168.1.1/24 0) Logout (SSH only) 9) pfTop 1) Assign Interfaces 10) Filter Logs 2) Set interface(s) IP address 11) Restart webConfigurator ... ``` Comprueba que la WAN ha recibido una IP de la red `default` y que la LAN tiene `192.168.1.1`. Si las interfaces están invertidas, usa la opción `1` para reasignarlas; si quieres otra red para la LAN, usa la opción `2`. Desde el host, verifica que llegas a la LAN de pfSense: ```bash ping -c 3 192.168.1.1 ``` ## Paso 7: Completar el asistente web La interfaz web solo es accesible desde la LAN. Como el host tiene la IP `192.168.1.2` en esa red, puedes llegar a ella con un túnel SSH desde tu equipo: ```bash ssh -L 8443:192.168.1.1:443 your_user@your_server_ip ``` Abre `https://localhost:8443` en el navegador y acepta el certificado autofirmado. Las credenciales iniciales son `admin` / `pfsense`. El asistente de configuración te pedirá: - **Hostname y dominio** del firewall, y servidores DNS. - **Zona horaria** y servidor NTP. - **Configuración de la WAN**: deja DHCP. Como en este laboratorio la WAN es una red privada de libvirt, desmarca la opción **Block RFC1918 Private Networks** en esa pantalla; en una WAN con IP pública debe quedarse marcada. - **IP de la LAN**: deja `192.168.1.1/24` o cambia a tu rango. - **Nueva contraseña de administrador**: pon una contraseña fuerte. La contraseña por defecto es pública y debe cambiarse siempre. Al terminar, pfSense recarga la configuración y muestra el panel principal. ## Paso 8: Probar el firewall con un cliente en la LAN Por defecto, pfSense ofrece DHCP en la LAN, permite que la LAN salga a Internet con NAT y bloquea todo lo que entra por la WAN. Para comprobarlo, crea una VM de prueba conectada solo a `pfsense-lan`, por ejemplo con otra ISO de Ubuntu: ```bash sudo virt-install \ --name cliente-lan \ --memory 2048 \ --vcpus 1 \ --disk size=10 \ --cdrom /var/lib/libvirt/images/ubuntu-24.04-live-server-amd64.iso \ --os-variant ubuntu24.04 \ --network network=pfsense-lan,model=virtio \ --graphics vnc,listen=127.0.0.1 \ --noautoconsole ``` Dentro del cliente, comprueba que ha recibido una IP del rango de pfSense, que su puerta de enlace es `192.168.1.1` y que tiene salida: ```bash ip route ping -c 3 1.1.1.1 ``` ```output default via 192.168.1.1 dev enp1s0 proto dhcp src 192.168.1.100 metric 100 ``` En la interfaz web, **Status > DHCP Leases** muestra la concesión y **Status > System Logs > Firewall** los paquetes bloqueados en la WAN. ## Paso 9: Crear una regla de firewall Las reglas se crean en **Firewall > Rules**, por interfaz, y se evalúan de arriba abajo: la primera que coincide se aplica. Como ejemplo, restringe la LAN para que solo pueda navegar por web y resolver DNS: 1. En **Firewall > Rules > LAN**, edita la regla **Default allow LAN to any rule** y desactívala. 2. Añade una regla **Pass**, protocolo **TCP**, origen **LAN subnets**, destino **any**, puerto de destino **HTTPS (443)**. 3. Añade otra igual para **HTTP (80)**. 4. Añade una regla **Pass**, protocolo **TCP/UDP**, origen **LAN subnets**, destino **This Firewall**, puerto **DNS (53)**. 5. Pulsa **Apply Changes**. Desde el cliente, `curl -I https://www.pfsense.org` debe funcionar, mientras que un `ping 1.1.1.1` deja de responder porque ICMP ya no está permitido. ## Solución de problemas **La WAN no obtiene IP.** Comprueba que la red `default` está activa (`virsh net-list`) y que la primera interfaz de la VM está en ella con `sudo virsh domiflist pfsense`. **No se llega a `192.168.1.1` desde el host.** Revisa que `virbr10` tiene la IP `192.168.1.2` y que en pfSense la LAN es `vtnet1`. Recuerda que las reglas de la LAN deben permitir el acceso a la interfaz web; pfSense incluye una regla anti bloqueo para ello. **La instalación falla al descargar paquetes.** El instalador en línea necesita salida a Internet por la WAN. Verifica desde el host que la red `default` hace NAT (`sudo iptables -t nat -L -n` o `sudo nft list ruleset`). ## Conclusión Tienes pfSense funcionando como máquina virtual KVM en un host Ubuntu 24.04, con una WAN y una LAN separadas, la configuración inicial completada y una primera regla de firewall probada. Como siguientes pasos, puedes conectar la WAN a una IP pública mediante un bridge del host, configurar una VPN WireGuard u OpenVPN desde el gestor de paquetes (**System > Package Manager**) y programar copias de seguridad de la configuración en **Diagnostics > Backup & Restore**.