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:
@@ -0,0 +1,62 @@
|
||||
# win_portproxy_add.ps1 - Adds a netsh portproxy rule (v4tov4) to forward traffic.
|
||||
# Requires: Administrator privileges
|
||||
# Usage: powershell.exe -ExecutionPolicy Bypass -File win_portproxy_add.ps1 -ListenPort 9222
|
||||
# powershell.exe -ExecutionPolicy Bypass -File win_portproxy_add.ps1 -ListenPort 9222 -ConnectPort 9222 -ListenAddr 0.0.0.0 -ConnectAddr 127.0.0.1
|
||||
|
||||
param(
|
||||
[Parameter(Mandatory = $true)]
|
||||
[int]$ListenPort,
|
||||
|
||||
[Parameter(Mandatory = $false)]
|
||||
[int]$ConnectPort = 0, # 0 means use ListenPort
|
||||
|
||||
[Parameter(Mandatory = $false)]
|
||||
[string]$ListenAddr = "0.0.0.0",
|
||||
|
||||
[Parameter(Mandatory = $false)]
|
||||
[string]$ConnectAddr = "127.0.0.1"
|
||||
)
|
||||
|
||||
# Verify administrator privileges
|
||||
$currentPrincipal = [Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()
|
||||
if (-not $currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
|
||||
Write-Error "ERROR: This script requires Administrator privileges. Run PowerShell as Administrator."
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Default ConnectPort to ListenPort if not specified
|
||||
if ($ConnectPort -eq 0) {
|
||||
$ConnectPort = $ListenPort
|
||||
}
|
||||
|
||||
# Validate ports
|
||||
if ($ListenPort -lt 1 -or $ListenPort -gt 65535) {
|
||||
Write-Error "ERROR: ListenPort must be between 1 and 65535, got '$ListenPort'."
|
||||
exit 1
|
||||
}
|
||||
if ($ConnectPort -lt 1 -or $ConnectPort -gt 65535) {
|
||||
Write-Error "ERROR: ConnectPort must be between 1 and 65535, got '$ConnectPort'."
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Remove existing portproxy for the same listenaddress:listenport if it exists
|
||||
$existing = netsh interface portproxy show v4tov4 2>&1 | Select-String "$ListenAddr\s+$ListenPort"
|
||||
if ($existing) {
|
||||
Write-Host "Removing existing portproxy for ${ListenAddr}:${ListenPort}..."
|
||||
netsh interface portproxy delete v4tov4 listenaddress=$ListenAddr listenport=$ListenPort | Out-Null
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
Write-Error "ERROR: Failed to remove existing portproxy for ${ListenAddr}:${ListenPort}."
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
# Add the portproxy rule
|
||||
Write-Host "Adding portproxy: ${ListenAddr}:${ListenPort} -> ${ConnectAddr}:${ConnectPort}..."
|
||||
netsh interface portproxy add v4tov4 listenaddress=$ListenAddr listenport=$ListenPort connectaddress=$ConnectAddr connectport=$ConnectPort
|
||||
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
Write-Error "ERROR: Failed to add portproxy ${ListenAddr}:${ListenPort} -> ${ConnectAddr}:${ConnectPort}."
|
||||
exit 1
|
||||
}
|
||||
|
||||
Write-Host "OK: Portproxy added - ${ListenAddr}:${ListenPort} -> ${ConnectAddr}:${ConnectPort}."
|
||||
Reference in New Issue
Block a user