Actualizar wireguard/readme.md
This commit is contained in:
@@ -23,7 +23,8 @@ Este despliegue usa `wg-easy`, una interfaz web y API para administrar fácilmen
|
|||||||
├── pvc
|
├── pvc
|
||||||
│ └── pvc.yaml # Configuración persistente
|
│ └── pvc.yaml # Configuración persistente
|
||||||
├── services
|
├── services
|
||||||
│ └── service.yaml # Service tipo NodePort
|
│ └── service-tcp.yaml # Service tipo clusterIP
|
||||||
|
│ └── service-udp.yaml # Service tipo LoadBalancer
|
||||||
├── secret.yaml # HASH de contraseña para interfaz web
|
├── secret.yaml # HASH de contraseña para interfaz web
|
||||||
├── namespace.yaml
|
├── namespace.yaml
|
||||||
└── kustomization.yaml
|
└── kustomization.yaml
|
||||||
@@ -56,39 +57,42 @@ La configuración de WireGuard se guarda en `/etc/wireguard` dentro del contened
|
|||||||
|
|
||||||
## 🛂 Puertos y exposición
|
## 🛂 Puertos y exposición
|
||||||
|
|
||||||
El `Service` es tipo `NodePort`, lo que significa:
|
En el despliegue actual se utilizan **dos `Service` separados** para exponer WireGuard:
|
||||||
|
|
||||||
* Puerto del contenedor WireGuard: `51820/UDP`
|
1. **Service para la interfaz web (TCP)**
|
||||||
* Puerto de la interfaz web: `51821/TCP`
|
|
||||||
* Puerto `NodePort` expuesto:
|
|
||||||
|
|
||||||
* UDP: `31820` (WireGuard)
|
* Tipo: `ClusterIP`
|
||||||
* TCP: `31821` (Interfaz Web)
|
* Protocolo: `TCP`
|
||||||
|
* Puerto del contenedor: `51821`
|
||||||
|
* Exposición externa: mediante `Ingress` (nginx) con dominio HTTPS → `https://wireguard.c2et.net/`
|
||||||
|
|
||||||
Los `NodePort` deben estar en el rango 30000–32767 (por defecto en Kubernetes).
|
2. **Service para WireGuard (UDP)**
|
||||||
|
|
||||||
El router debe redirigir estos puertos al nodo donde corre `wg-easy`.
|
* Tipo: `LoadBalancer` (MetalLB)
|
||||||
|
* Protocolo: `UDP`
|
||||||
|
* Puerto del contenedor: `51819`
|
||||||
|
* Puerto externo: asignado por MetalLB en la IP del balanceador.
|
||||||
|
|
||||||
Ejemplo de reenvío:
|
### Esquema de acceso
|
||||||
|
|
||||||
* `31820/UDP` → nodo `tartaro`, puerto `31820`
|
* **Tráfico TCP** (Panel Web): entra por el `Ingress` Controller (nginx), con TLS gestionado por `cert-manager`.
|
||||||
* `31821/TCP` → nodo `tartaro`, puerto `31821`
|
* **Tráfico UDP** (VPN WireGuard): entra directamente a través de la IP asignada por MetalLB, sin pasar por `Ingress`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🚀 Reenvío de tráfico y NAT
|
## 🚀 Reenvío de tráfico y NAT
|
||||||
|
|
||||||
WireGuard entrega a los clientes direcciones como `192.168.200.x`, pero por defecto no tendrían acceso a otras redes como:
|
WireGuard entrega a los clientes direcciones como `192.168.254.x`, pero por defecto no tendrían acceso a otras redes como:
|
||||||
|
|
||||||
* Red de administración: `192.168.1.0/24`
|
* Red de administración: `192.168.0.0/24`
|
||||||
* Red de pods (Flannel): `10.42.0.0/16`
|
* Red de pods (Flannel): `10.42.0.0/16`
|
||||||
* Red Multus (ejemplo): `192.168.201.0/24`
|
* Red Multus (ejemplo): `192.168.201.0/24`
|
||||||
|
|
||||||
Para ello, se despliega un `DaemonSet` que aplica reglas `iptables` directamente en el host físico:
|
Para ello, se despliega un `DaemonSet` que aplica reglas `iptables` directamente en el host físico:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -d 192.168.1.0/24 -j MASQUERADE
|
iptables -t nat -A POSTROUTING -s 192.168.254.0/24 -d 192.168.0.0/24 -j MASQUERADE
|
||||||
iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -d 10.42.0.0/16 -j MASQUERADE
|
iptables -t nat -A POSTROUTING -s 192.168.254.0/24 -d 10.42.0.0/16 -j MASQUERADE
|
||||||
```
|
```
|
||||||
|
|
||||||
Con esto, los paquetes generados por los clientes WireGuard se traducen a la IP del host, y así acceden a otras redes internas.
|
Con esto, los paquetes generados por los clientes WireGuard se traducen a la IP del host, y así acceden a otras redes internas.
|
||||||
@@ -122,7 +126,7 @@ spec:
|
|||||||
Entonces basta con añadir una regla más en el `DaemonSet`:
|
Entonces basta con añadir una regla más en el `DaemonSet`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -d 192.168.201.0/24 -j MASQUERADE
|
iptables -t nat -A POSTROUTING -s 192.168.254.0/24 -d 192.168.201.0/24 -j MASQUERADE
|
||||||
```
|
```
|
||||||
|
|
||||||
No es necesario conectar el contenedor de wg-easy directamente a esta red: el tráfico se enruta y NATea desde el host físico.
|
No es necesario conectar el contenedor de wg-easy directamente a esta red: el tráfico se enruta y NATea desde el host físico.
|
||||||
@@ -144,7 +148,7 @@ kubectl apply -k .
|
|||||||
Una vez desplegado y con el reenvío del router correctamente configurado, puedes acceder a la interfaz web en:
|
Una vez desplegado y con el reenvío del router correctamente configurado, puedes acceder a la interfaz web en:
|
||||||
|
|
||||||
```
|
```
|
||||||
https://manabo.org:31821
|
https://wireguard.c2et.net
|
||||||
```
|
```
|
||||||
|
|
||||||
Y configurar tus clientes WireGuard escaneando el QR generado, o descargando el archivo de configuración.
|
Y configurar tus clientes WireGuard escaneando el QR generado, o descargando el archivo de configuración.
|
||||||
|
|||||||
Reference in New Issue
Block a user