Empezar con wzctl
Conecta a un recurso privado en 5 pasos. Sin VPN, sin portal, sin tarjeta de crédito.
Inicio rápido
1. Descargar
# Linux
curl -fsSL https://wireztna.com/dl/wzctl-linux-amd64 -o wzctl && chmod +x wzctl
# macOS (requiere firma — ver nota)
curl -fsSL https://wireztna.com/dl/wzctl-darwin-arm64 -o wzctl && chmod +x wzctl
xattr -cr wzctl && codesign --force -s - wzctl
¿Por qué el paso extra en macOS?
macOS Sequoia bloquea binarios sin firmar descargados de internet. xattr -cr elimina la marca de procedencia y codesign --force -s - lo firma localmente. Sin esto, macOS mata el proceso al lanzarlo.
2. Registro
./wzctl register --broker https://freetier.wireztna.com --email tu@ejemplo.com --save
Se hace una vez. Las credenciales se guardan en ~/.wireztna/token.
3. Crear un token de publisher
Indica qué subred exponer. Usa el CIDR de la red donde vive el recurso que quieres alcanzar:
./wzctl token --broker https://freetier.wireztna.com \
--cidrs "192.168.1.0/24" --name mi-servidor
El output muestra los comandos para instalar el publisher. Cópialos.
4. Instalar el publisher
Entra por SSH al servidor que alcanza tu recurso privado y ejecuta los comandos del paso 3:
curl -fsSL https://wireztna.com/dl/wireztna-publisher-linux-amd64 -o wireztna-publisher
chmod +x wireztna-publisher
sudo ./wireztna-publisher install --token "<url_del_paso_3>"
sudo systemctl start wireztna-publisher
El publisher se conecta saliente al broker. No necesitas abrir puertos en el firewall.
5. Conectar
Obtén el ID de tu publisher y conecta al destino:
# Verifica que tu publisher está online
./wzctl publishers --broker https://freetier.wireztna.com
# Conecta (indica la IP y puerto exactos del recurso que quieres alcanzar)
./wzctl connect --broker https://freetier.wireztna.com \
--publisher pub_a7c3f9b2 \
--target 192.168.1.100 --port 5432 \
--ttl 30m --local-port 5432
Listo. Tu recurso ahora está en localhost:5432:
psql -h localhost -p 5432 -U myuser mydb # Funciona!
Entender --target
--target es la IP privada del servicio que quieres alcanzar, vista desde la red del publisher. No es la IP del publisher en sí.
Ejemplo: Publisher instalado en 192.168.1.50. Quieres alcanzar PostgreSQL en 192.168.1.100:5432.
--target 192.168.1.100← el servidor de base de datos--port 5432← el puerto donde escucha PostgreSQL
Si ves "target unreachable": verifica que (1) la IP es correcta, (2) el servicio está corriendo en ese puerto, y (3) la IP cae dentro del CIDR que declaraste en el paso 3.
Free Tier vs Pro
| Free | Pro | |
|---|---|---|
| Gestión | Solo CLI | CLI + Web UI |
| Conexiones | 3 simultáneas | Ilimitadas |
| TTL máximo | 1 hora | 7 días |
| Transferencia / sesión | 500 MB | Ilimitada |
| Publishers | 1 | Ilimitados |
| Passes / mes | 25 | Ilimitados |
| Soporte | Comunidad | Ingeniería directa |
Contáctanos para hacer upgrade.
Tips
Reutilizar un pass (ahorra cuota)
Cada connect crea un pass nuevo (25/mes en free tier). Para reintentar sin gastar otro, usa --pass:
# Primer intento — crea un pass
./wzctl connect --broker ... --publisher ... --target ... --port ... --ttl 30m --local-port 5432
# → Pass created (dap_c6fe0c)
# Reintenta con el mismo pass (no consume otro):
./wzctl connect --broker https://freetier.wireztna.com --pass dap_c6fe0c --local-port 5432
Listar y revocar passes
./wzctl passes list --broker https://freetier.wireztna.com
./wzctl passes revoke dap_c6fe0c --broker https://freetier.wireztna.com
Modo daemon (CI/Docker)
Añade --daemon para ejecutar en background:
./wzctl connect --broker https://freetier.wireztna.com \
--publisher pub_a7c3f9b2 --target 192.168.1.100 --port 5432 \
--ttl 10m --local-port 5432 --daemon &
sleep 2
psql -h localhost -p 5432 # Listo
Ejemplo GitHub Actions
- name: Conectar a BD privada
run: |
curl -fsSL https://wireztna.com/dl/wzctl-linux-amd64 -o wzctl && chmod +x wzctl
./wzctl connect --broker https://freetier.wireztna.com \
--publisher "$PUBLISHER_ID" --target 192.168.1.100 --port 5432 \
--ttl 10m --local-port 5432 --daemon &
sleep 2 && pg_isready -h localhost -p 5432
env:
PUBLISHER_ID: ${{ secrets.PUBLISHER_ID }}
Seguridad
- Temporal — los passes auto-expiran. Sin acceso residual.
- Acotado — un pass = una IP:puerto. Sin acceso a toda la red.
- Revocable — revoca al instante, conexiones caen en 1 segundo.
- Auditado — cada conexión registrada con bytes y duración.
- Solo salida — wzctl solo necesita puerto 443 saliente.
Desinstalar publisher
sudo systemctl stop wireztna-publisher && sudo systemctl disable wireztna-publisher
sudo rm /usr/local/bin/wireztna-publisher /etc/systemd/system/wireztna-publisher.service
sudo rm -rf /etc/wireztna-publisher/ && sudo systemctl daemon-reload
Referencia CLI
wzctl register --broker URL --email EMAIL --save
wzctl token --broker URL --cidrs CIDR --name NOMBRE
wzctl publishers --broker URL
wzctl connect --broker URL --publisher ID --target IP --port PUERTO --ttl DUR --local-port PUERTO [--daemon] [--pass ID]
wzctl passes list --broker URL
wzctl passes revoke PASS_ID --broker URL
Con --pass, solo --broker y --local-port son obligatorios.
Variables de entorno: WIREZTNA_BROKER, WIREZTNA_TOKEN.