> For the complete documentation index, see [llms.txt](https://docs.plenit.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.plenit.com/productos/servers/how-to/how-to-configure-wireguard-for-multiple-vpn-connections.md).

# Cómo Configurar WireGuard para varias Conexiones VPN desde una red Privada

Cuando varios usuarios se conectan desde la misma red privada detrás de NAT, **L2TP solo admite una sesión concurrente**.

En esta guía instalas **WireGuard**, una VPN de túnel cifrado, para aceptar varios clientes a la vez sin exponerlos a Internet.

> #### 👍 Qué consigues
>
> Un servidor WireGuard en tu suscripción aceptando varias conexiones simultáneas desde una red privada, con el puerto abierto en el firewall de Plenit.

### Por qué WireGuard

L2TP detrás de NAT colapsa todas las conexiones de una misma red pública en una sola sesión. WireGuard trabaja sobre UDP y trata a **cada cliente como un peer independiente** con su propio par de claves, así que varios usuarios de la misma red se conectan sin pisarse.&#x20;

El modelo de claves es como el de SSH: cada extremo tiene una clave privada (que guarda) y una pública (que comparte con el otro lado).

### Antes de empezar

* Iniciar sesión en la plataforma de Plenit con una organización activa.
* Tener una suscripción de **Servidores** o **Escritorio Remoto** con un servidor Linux.
* Tener preparado el equipo cliente donde instalarás WireGuard.

### Paso 1. Instala WireGuard en el servidor Linux

La instalación cambia según la distribución. En CentOS, con usuario root:

```bash
yum install yum-utils epel-release
yum-config-manager --setopt=centosplus.includepkgs=kernel-plus --enablerepo=centosplus --save
sed -e 's/^DEFAULTKERNEL=kernel$/DEFAULTKERNEL=kernel-plus/' -i /etc/sysconfig/kernel
yum install kernel-plus wireguard-tools
reboot
```

En Ubuntu, el comando base es:

```bash
sudo apt install wireguard
```

Genera el par de claves del servidor: la privada se queda en el servidor y la pública la usarán los clientes.

```bash
wg genkey | tee server_private.key | wg pubkey > server_public.key
```

### Paso 2. Instala el cliente

En este ejemplo el cliente es Windows. Descarga el instalador desde la web de WireGuard y ejecútalo como administrador. Si el instalador principal falla, usa el paquete MSI del cliente de Windows.

{/\* 📸 CAPTURA 1 · ventana de WireGuard tras la instalación en el cliente \*/}

![Instalación de WireGuard finalizada en el equipo cliente](https://REEMPLAZA-URL/servidores-howto-wireguard-01.png)

### Paso 3. Crea el túnel en el cliente

Con WireGuard abierto, pulsa **Add Tunnel → Add empty tunnel…**. El cliente genera su par de claves y muestra una configuración inicial que completas con esta estructura:

```bash
[Interface]
PrivateKey = <CLAVE_PRIVADA_CLIENTE>
Address = 10.0.0.2/32
DNS = 192.168.1.1

[Peer]
PublicKey = <CLAVE_PUBLICA_SERVIDOR>
AllowedIPs = 0.0.0.0/0
Endpoint = <IP_PUBLICA_SERVIDOR>:51820
```

| Campo        | Qué indica                                                                                     |
| ------------ | ---------------------------------------------------------------------------------------------- |
| `PrivateKey` | Clave privada del cliente                                                                      |
| `Address`    | IP interna del cliente dentro del túnel (un rango privado, p. ej. `10.0.0.2/32`)               |
| `DNS`        | Servidor DNS de la red                                                                         |
| `PublicKey`  | Clave pública del servidor WireGuard                                                           |
| `AllowedIPs` | Qué tráfico se enruta por la VPN. Con `0.0.0.0/0` pasa todo; con una subred concreta, solo esa |
| `Endpoint`   | IP pública y puerto del servidor (UDP 51820)                                                   |

{/\* 📸 CAPTURA 2 · configuración del túnel completada en el cliente \*/}

![Configuración final del túnel en el cliente](https://REEMPLAZA-URL/servidores-howto-wireguard-02.png)

### Paso 4. Registra el cliente en el servidor

El servidor solo deja pasar a los clientes que conoce. Añade el cliente a la sección `[Peer]` de la configuración del servidor, o en caliente con:

```bash
wg set wg0 peer <CLAVE_PUBLICA_CLIENTE> allowed-ips <IP_INTERNA_CLIENTE>
```

Donde `<CLAVE_PUBLICA_CLIENTE>` es la clave que generó el cliente y `<IP_INTERNA_CLIENTE>` la IP interna que usará en el túnel (la misma `Address` del Paso 3).

### Paso 5. Abre el puerto en el firewall de Plenit

WireGuard escucha en **UDP 51820**. Sin ese puerto abierto, el cliente no conecta aunque el túnel esté bien configurado. En la suscripción de Servidores, pulsa **Nueva regla** y configúrala:

1. Selecciona la red por la que conecta el servicio.
2. Define el origen de las conexiones. Si puedes, filtra las IP permitidas en lugar de abrirlas a todas.
3. Protocolo **UDP**.
4. IP pública por la que conecta WireGuard.
5. Puerto público **51820**.
6. IP y puerto privados correspondientes.

{/\* 📸 CAPTURA 3 · regla de firewall con protocolo UDP y puerto 51820 \*/}

![Regla de firewall para el puerto UDP 51820 de WireGuard](https://REEMPLAZA-URL/servidores-howto-wireguard-03.png)

> #### 👍 Filtra el origen siempre que puedas
>
> Restringir las IP de origen en la regla reduce la exposición frente a dejar el puerto abierto a todo Internet.

### Paso 6. Valida la conexión

Activa el túnel en el cliente. En el servidor, confirma que hay handshake con cada peer:

```shell
wg show
```

Un `latest handshake` reciente y contadores de `transfer` que suben indican que el túnel está activo. Desde el cliente, comprueba además que sales con la IP pública del servidor.

Si no levanta, revisa:

* Las claves pública del servidor y del cliente están bien intercambiadas.
* El cliente está dado de alta en el servidor (sección `[Peer]` o `wg set`).
* El firewall de Plenit permite **UDP 51820**.
* El `Endpoint` apunta a la IP pública correcta del servidor.

### Limitaciones y seguridad

* Esta guía resuelve el límite de sesiones de L2TP cuando varios usuarios comparten una red privada detrás de NAT.
* WireGuard no basta con instalarlo: hay que registrar cada cliente en el servidor y abrir el puerto UDP 51820.
* Con `AllowedIPs = 0.0.0.0/0`, todo el tráfico del cliente pasa por la VPN.
* Filtrar el origen en el firewall reduce la superficie de exposición.

### Conclusión

Con WireGuard montado, una red privada detrás de NAT deja de estar limitada a una única sesión: cada usuario entra como un peer propio.

La clave del despliegue son tres piezas que deben encajar: las claves bien cruzadas entre cliente y servidor, el alta del peer en el servidor y el puerto UDP 51820 abierto. Para sumar más clientes, repite el alta del túnel en el cliente (Paso 3) y su registro en el servidor (Paso 4).

<br>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.plenit.com/productos/servers/how-to/how-to-configure-wireguard-for-multiple-vpn-connections.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
