VPNSmith
self-host-vpnINFO

WireGuard en macOS: las dos instalaciones y el nombre de interfaz que rompe los tutoriales de Linux

La app de la Mac App Store y brew install wireguard-tools no son el mismo producto. Cuál elegir, cómo importar un .conf y por qué wg0 falla en macOS mientras que utun funciona.

Por Eric Gerard · Fundador · VPNSmith - Especialista en VPN self-host y VPS GDPR4 min de lecturaFoto vía Pixabay

Instalar WireGuard en un Mac parece trivial hasta que el tutorial que sigues estaba escrito para Linux. Dos cosas hacen tropezar: existen dos productos WireGuard distintos para macOS, y el nombre de interfaz que todo el mundo usa en los ejemplos, wg0, no puede existir en un Mac.

Las dos instalaciones, según la página oficial

La página de instalación de WireGuard lista ambas, y son software realmente distinto:

La app de la Mac App Store. Un cliente gráfico con elemento en la barra de menús, importación de túneles y activación bajo demanda. Es lo que quiere la mayoría.

Las herramientas de línea de comandos.

brew install wireguard-tools
# o, con MacPorts
port install wireguard-tools

Obtienes wg y wg-quick, los mismos comandos que usas en un servidor. Por debajo corre la implementación Go en espacio de usuario en lugar de un módulo del kernel, porque macOS no lleva WireGuard en el kernel.

No comparten la lista de túneles. Un túnel importado en la app no aparecerá en wg show, y viceversa. Elige uno por máquina salvo que tengas un motivo para tener los dos.

Primer plano de una pantalla de terminal mostrando un listado de directorios Unix en verde y azul
Primer plano de una pantalla de terminal mostrando un listado de directorios Unix en verde y azul

Lo que rompe los tutoriales de Linux: aquí wg0 no existe

Es el fallo más frecuente, y el mensaje de error casi nunca lo explica.

En Linux creas wg0 y sigues adelante. En macOS los túneles van sobre el controlador utun, y la documentación multiplataforma de WireGuard enuncia la restricción con claridad: el controlador utun no puede tener nombres de interfaz arbitrarios. Hay que usar utun seguido de un número, por ejemplo utun0, o simplemente utun para que el kernel elija.

# falla en macOS
sudo wg-quick up wg0

# funciona
sudo wg-quick up utun

Si copiaste una guía que dice wg0, renombra el fichero de configuración y cualquier comando que lo mencione. Las claves, AllowedIPs, Endpoint y DNS no se ven afectados: solo el nombre de interfaz depende de la plataforma.

Saber qué utun te tocó. Si dejas que elija el kernel, necesitas una forma de conocer el resultado. Define WG_TUN_NAME_FILE antes de levantar el túnel y el nombre elegido se escribe ahí:

export WG_TUN_NAME_FILE=/tmp/wg-name
sudo -E wg-quick up utun
cat /tmp/wg-name    # por ejemplo utun4

Sin eso, lees la salida de ifconfig adivinando cuál utun es el tuyo: aceptable una vez, tedioso en un script.

Importar una configuración que ya tienes

Si generaste una configuración de cliente en tu servidor, se transfiere tal cual. En la app, usa la opción de importar y selecciona el fichero .conf: el túnel aparece en la lista, listo para activar. Con la línea de comandos, colócalo en /opt/homebrew/etc/wireguard/utun.conf (Apple Silicon) o /usr/local/etc/wireguard/utun.conf (Intel), nombrando el fichero según la interfaz, y ejecuta wg-quick up utun.

Una configuración generada para un teléfono también sirve en un Mac. Es una definición de par, no un artefacto propio del dispositivo, siempre que cada equipo tenga su propio par de claves y no uno compartido.

Comprobar que de verdad funciona

Levanta el túnel y confirma dos cosas en lugar de suponerlas.

sudo wg show

Un par sano muestra un latest handshake de hace menos de dos minutos y contadores transfer distintos de cero en ambos sentidos. Enviado pero nada recibido es la firma de un camino de vuelta bloqueado. Si el handshake nunca se completa, nuestra guía de solución de problemas del handshake recorre las causas por orden de probabilidad.

Después confirma que el tráfico pasa realmente por el túnel, y no solo que la interfaz existe: comprueba tu IP pública desde el navegador y, si enrutas el DNS por el túnel, verifica que no haya fuga. Nuestra nota sobre prevención de fugas DNS en WireGuard cubre los ajustes que importan.

En resumen

Dos productos: la app de la App Store para un cliente gráfico, wireguard-tools vía Homebrew o MacPorts para la misma línea de comandos que tu servidor. No comparten túneles. Y en macOS la interfaz debe llamarse utun o utunN, nunca wg0, porque el controlador utun no acepta nombres arbitrarios. Esa sola línea explica la mayoría de instalaciones fallidas en Mac copiadas de guías de Linux.

★ Datacenter Núremberg GDPR · ✓ IPv4 dedicada incluida · 200+ Mbps garantizados

Tu Mac es el cliente. El túnel necesita un servidor → VPS ContaboUn VPS Linux ejecuta el lado WireGuard al que se conecta tu Mac, con implementación en el kernel en vez de espacio de usuario. Acceso root, precio predecible, centros de datos europeos.

★ Datacenter Núremberg GDPR · ✓ IPv4 dedicada incluida · 200+ Mbps garantizados

Aloja tu VPN en tu propio VPS → ContaboAcceso root completo · IPv4 pública · elige tu región

Preguntas frecuentes

¿Cómo se instala WireGuard en macOS?
La página oficial de instalación lista dos vías. La aplicación gráfica viene de la Mac App Store. Las herramientas de línea de comandos vienen de un gestor de paquetes: `brew install wireguard-tools` con Homebrew, o `port install wireguard-tools` con MacPorts. No son el mismo producto y no comparten la lista de túneles, así que elige uno y quédate con él salvo que quieras expresamente ambos.
¿Por qué wg0 no funciona en macOS?
Porque macOS no tiene módulo WireGuard en el kernel: los túneles pasan por la implementación en espacio de usuario, sobre el controlador utun, y ese controlador no acepta nombres de interfaz arbitrarios. La documentación multiplataforma de WireGuard es explícita: hay que usar utun seguido de un número, o simplemente utun para que el kernel elija uno. Un tutorial de Linux que te diga crear wg0 fallará por tanto en un Mac, y el mensaje de error rara vez explica por qué.
¿Cómo sé qué interfaz utun eligió el kernel?
Define la variable de entorno WG_TUN_NAME_FILE antes de levantar el túnel. Cuando el nombre de interfaz se deja como utun, el nombre realmente elegido por el kernel se escribe en el fichero que indicaste. Sin eso te toca leer la salida de `ifconfig` y adivinar qué utun es el tuyo.
¿App de la App Store o herramientas de Homebrew?
La aplicación si quieres una experiencia macOS normal: conmutador en la barra de menús, importación de túneles arrastrando y activación bajo demanda. Las wireguard-tools si automatizas, administras la máquina por SSH o quieres los mismos comandos wg y wg-quick que en tu servidor. La app está en sandbox y se actualiza por la App Store; la línea de comandos se actualiza por tu gestor de paquetes.
¿Puedo reutilizar el .conf de mi servidor Linux?
Sí, en el lado cliente. Una configuración de par es texto plano y por tanto portable: los bloques [Interface] y [Peer] generados para un portátil funcionan tal cual. Lo único que no se transfiere es el nombre de interfaz: renómbralo a utun o utunN si el fichero o tus comandos mencionan wg0. Claves, AllowedIPs, Endpoint y DNS se trasladan sin cambios.