feat: funciones PowerShell infra — firewall y portproxy

Funciones PowerShell para gestión de red en Windows: win_firewall_add_rule,
win_firewall_remove_rule, win_portproxy_add y win_portproxy_remove.
Útiles para configurar acceso de red en entornos WSL2.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-30 14:24:45 +02:00
parent bb38eedfd1
commit 4d6ea9a910
8 changed files with 426 additions and 0 deletions
@@ -0,0 +1,73 @@
---
name: win_portproxy_add
kind: function
lang: ps
domain: infra
version: "1.0.0"
purity: impure
signature: "win_portproxy_add -ListenPort <int> [-ConnectPort <int>] [-ListenAddr <string>] [-ConnectAddr <string>]"
description: "Añade una regla de port proxy v4tov4 con netsh para redirigir tráfico desde ListenAddr:ListenPort hacia ConnectAddr:ConnectPort. Si ya existe una regla para el mismo listenaddress:listenport, la elimina y la recrea. Requiere privilegios de Administrador."
tags: [portproxy, netsh, windows, network, infra, wsl2, cdp, redirect, proxy]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: []
tested: false
tests: []
test_file_path: ""
file_path: "powershell/functions/infra/win_portproxy_add.ps1"
---
## Uso
```powershell
# Caso típico WSL2 → Chrome CDP: redirigir 0.0.0.0:9222 → 127.0.0.1:9222
.\win_portproxy_add.ps1 -ListenPort 9222
# Con todos los parámetros explícitos
.\win_portproxy_add.ps1 -ListenPort 9222 -ConnectPort 9222 -ListenAddr 0.0.0.0 -ConnectAddr 127.0.0.1
# Redirigir a un puerto diferente
.\win_portproxy_add.ps1 -ListenPort 8080 -ConnectPort 3000
```
```bash
# Desde WSL2 — habilitar acceso a Chrome CDP en el host Windows
powershell.exe -ExecutionPolicy Bypass -File win_portproxy_add.ps1 -ListenPort 9222
```
## Parametros
| Parametro | Tipo | Obligatorio | Default | Descripcion |
|----------------|--------|-------------|---------------|--------------------------------------------------|
| `-ListenPort` | int | si | — | Puerto en el que escucha el proxy (1-65535) |
| `-ConnectPort` | int | no | =ListenPort | Puerto de destino al que conectar (1-65535) |
| `-ListenAddr` | string | no | `0.0.0.0` | Dirección IP en la que escucha el proxy |
| `-ConnectAddr` | string | no | `127.0.0.1` | Dirección IP de destino |
## Notas
- Requiere ejecutarse como **Administrador** en Windows.
- Caso de uso principal: WSL2 no puede alcanzar `127.0.0.1` del host Windows directamente. Esta regla hace que el host escuche en `0.0.0.0:PORT` y reenvíe al loopback donde Chrome (u otro proceso) está escuchando.
- Idempotente respecto a listenaddress:listenport: si ya existe una regla para esa combinación, la elimina y la recrea.
- Combinar con `win_firewall_add_rule` para que el firewall también permita el tráfico entrante.
- Retorna exit code 0 si tuvo éxito, 1 si hubo error.
## Flujo completo WSL2 → Chrome CDP
```bash
# 1. Abrir Puerto en firewall
powershell.exe -ExecutionPolicy Bypass -File win_firewall_add_rule.ps1 -Name "CDP-9222" -Port 9222
# 2. Redirigir tráfico de red al loopback
powershell.exe -ExecutionPolicy Bypass -File win_portproxy_add.ps1 -ListenPort 9222
# 3. Arrancar Chrome con CDP en Windows
# chrome.exe --remote-debugging-port=9222 --headless
# 4. Desde WSL2 conectar al host Windows
# WSL2_HOST=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}')
# curl http://$WSL2_HOST:9222/json
```