È possibile configurare il port forwarding di rete in tutte le versioni di Windows senza usare strumenti di terze parti. Utilizzando una regola di port forwarding, è possibile reindirizzare una connessione TCP in entrata (IPv4 o IPv6) dalla porta TCP locale a qualsiasi altro numero di porta, o anche a una porta su un computer remoto. Inoltre, non è necessario che Windows abbia un servizio che ascolta su una specifica porta TCP. Il port forwarding di Windows è più comunemente usato per bypassare i firewall o per nascondere un host o un servizio interno dalla rete esterna (NAT/PAT).
Nel mondo Linux, il port forwarding è configurato molto semplicemente usando iptables o firewalld. Sui sistemi Windows Server, il Routing and Remote Access Service (RRAS) è tipicamente usato per configurare il reindirizzamento delle porte. Tuttavia, c’è un modo più semplice per configurare il port forwarding, che funziona bene in qualsiasi versione di Windows.
Come configurare il port forwarding su Windows 10 utilizzando Netsh Portproxy?
È possibile configurare il port forwarding in Windows utilizzando la modalità Portproxy del comando Netsh. La sintassi del comando è la seguente:
netsh interface portproxy add v4tov4 listenaddress=localaddress listenport=localport connectaddress=destaddress connectport=destport
dove
- listenaddress – è un indirizzo IP locale per ascoltare la connessione in entrata (utile se si hanno più NIC o più indirizzi IP su un’interfaccia);
- listenport – numero di porta TCP locale in ascolto (la connessione è in attesa);
- connectaddress – è un indirizzo IP locale o remoto (o nome DNS) a cui si vuole reindirizzare la connessione in entrata;
- connectport – è una porta TCP a cui viene inoltrata la connessione da
listenport
.
netsh interface portproxy add
v4tov6
v6tov4
v6tov6
, è possibile creare regole di port forwarding tra indirizzi IPv4 e IPv6.Supponiamo che il nostro compito i sia quello di far rispondere il servizio RDP su una porta non standard, per esempio 3340 (la porta può essere cambiata nelle impostazioni del servizio Remote Desktop, ma stiamo usando RDP per rendere più facile la dimostrazione del port forwarding). Per fare questo, abbiamo bisogno di reindirizzare il traffico in entrata dalla porta TCP 3340 a un’altra porta locale – 3389 (questo è il numero di porta RDP predefinito).
netstat -na|find "3340"
In alternativa, puoi controllare che la porta non sia in ascolto localmente usando il cmdlet PowerShell Test-NetConnection:
Test-NetConnection -ComputerName localhost -Port 3340
Per creare una regola di port forwarding su Windows 10, eseguire un prompt dei comandi come amministratore ed eseguire il seguente comando:
netsh interface portproxy add v4tov4 listenport=3340 listenaddress=10.1.1.110 connectport=3389 connectaddress=10.1.1.110
Dove 10.10.1.110 – l’attuale indirizzo IP di questo computer.
Ora, utilizzare lo strumento netstat per verificare che Windows sia ora in ascolto sulla porta locale 3340:
netstat -ano | findstr :3340
Il supporto IPv6 deve essere abilitato sull’interfaccia di rete per la quale viene creata la regola di port forwarding.
Questi sono i presupposti per il corretto funzionamento del port forwarding. Senza il servizio IP Helper e senza il supporto IPv6 abilitato, il reindirizzamento delle porte non funzionerà.
Per far funzionare il port forwarding su Windows Server 2003/XP, è necessario impostare anche il parametro IPEnableRouter a 1 nella chiave di registro HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters.
Puoi scoprire quale processo è in ascolto sulla porta specificata usando il suo PID (nel nostro esempio, il PID è 636):
tasklist | findstr 636
Prova a connetterti a questa porta da un computer remoto usando qualsiasi client RDP. La porta 3340 dovrebbe essere specificata come numero di porta RDP. Viene specificata dopo i due punti che seguono l’indirizzo del server RDP. Per esempio, 10.10.1.110:3340