Quando installi un server di gioco su un VPS Windows e nessuno riesce a connettersi, il colpevole è quasi sempre lo stesso: il firewall di Windows sta bloccando la porta. Ecco come aprirla con i comandi, che è più veloce che passare dai menu e, soprattutto, si può copiare e incollare senza sbagliare.
Su un VPS non c'è nessun router da configurare. Lascia perdere il «port forwarding» che vedrai nei tutorial: serve per i server di casa. Il tuo VPS ha un proprio IP pubblico, quindi l'unica cosa che c'è tra i tuoi giocatori e il tuo server è il firewall di Windows.
Apri PowerShell come amministratore
Connettiti al tuo VPS con Desktop remoto (qui ti spieghiamo come), fai clic con il tasto destro sul pulsante Start e scegli Terminal (Admin) o Windows PowerShell (Admin). Se nella voce non compare «Admin», i comandi falliranno con un errore di permessi.
Aprire una porta: TCP e UDP, in entrata e in uscita
Questo esempio apre la 30120; sostituisci il numero e il nome con i tuoi. Incolla tutto il blocco in una volta:
$porta = 30120
$nome = "Server di gioco"
New-NetFirewallRule -DisplayName "$nome TCP $porta (entrata)" -Direction Inbound -Protocol TCP -LocalPort $porta -Action Allow -Profile Any
New-NetFirewallRule -DisplayName "$nome UDP $porta (entrata)" -Direction Inbound -Protocol UDP -LocalPort $porta -Action Allow -Profile Any
New-NetFirewallRule -DisplayName "$nome TCP $porta (uscita)" -Direction Outbound -Protocol TCP -LocalPort $porta -Action Allow -Profile Any
New-NetFirewallRule -DisplayName "$nome UDP $porta (uscita)" -Direction Outbound -Protocol UDP -LocalPort $porta -Action Allow -Profile Any
Cosa fa ogni parte, nel caso tu voglia adattarlo:
-Direction Inboundè il traffico che arriva dall'esterno (quello che ti serve davvero) eOutboundquello che esce.-ProtocolTCP o UDP. Non sono intercambiabili. Se il tuo gioco usa UDP e apri solo TCP, non entra nessuno: è l'errore più frequente.-LocalPortè la porta su cui è in ascolto il tuo server.-Profile Anyapplica la regola ai tre profili di rete (dominio, privato e pubblico). Su un VPS la connessione di solito è sul profilo «pubblico», quindi è importante.
Servono le regole in uscita? Su Windows Server il traffico in uscita è consentito di default, quindi di solito no. Sono incluse perché non danno fastidio e perché, se qualcuno ha irrigidito il firewall in precedenza, saranno proprio quelle che mancavano.
Per un intervallo di porte
New-NetFirewallRule -DisplayName "Gioco UDP 7777-7778 (entrata)" -Direction Inbound -Protocol UDP -LocalPort 7777-7778 -Action Allow -Profile Any
Va bene anche un elenco separato da virgole: -LocalPort 27015,27020.
Verificare che siano a posto
Get-NetFirewallRule -DisplayName "*30120*" | ForEach-Object {
$f = $_ | Get-NetFirewallPortFilter
[pscustomobject]@{
Regola = $_.DisplayName
Attiva = $_.Enabled
Direzione = $_.Direction
Azione = $_.Action
Protocollo = $f.Protocol
Porta = $f.LocalPort
}
} | Format-Table -AutoSize
Devono comparire tutte e quattro le regole, con Enabled su True e Action su Allow.
Verificare che il tuo server sia in ascolto
Aprire la porta non serve a nulla se dietro non c'è niente in ascolto. Con il server di gioco avviato:
Get-NetTCPConnection -LocalPort 30120 -State Listen
Get-NetUDPEndpoint -LocalPort 30120
Se non restituiscono nulla, il problema non è il firewall: il tuo server non si è avviato, è andato in crash o è configurato su un'altra porta. Guarda la console del gioco prima di continuare a toccare le regole.
Eliminare una regola
Remove-NetFirewallRule -DisplayName "Server di gioco TCP 30120 (entrata)"
Se preferisci farlo con il mouse
Premi Win + R, digita wf.msc e Invio. Nel riquadro a sinistra scegli Inbound Rules (Regole connessioni in entrata) → New Rule… (Nuova regola…) nella colonna di destra → Port (Porta) → scegli TCP o UDP e scrivi il numero in Specific local ports (Porte locali specifiche) → Allow the connection (Consenti la connessione) → lascia spuntati i tre profili → dagli un nome e termina. Ripeti la procedura per l'altro protocollo: una regola copre solo TCP o UDP, mai entrambi.
Continua a non funzionare
Controlla in quest'ordine, che è quello che esclude prima le cause:
- Il server è in ascolto? I due comandi qui sopra. È di gran lunga il problema più comune.
- Hai aperto il protocollo giusto? Metà dei giochi usa UDP. Apri TCP e UDP e ti togli il dubbio.
- Stai facendo la prova dal server stesso? Dall'interno funziona sempre. Prova da un'altra connessione o chiedi a qualcuno di entrare.
- Filtraggio AntiDDoS. Nella pagina del tuo servizio, scheda Sicurezza, ci sono i filtri della rete. Se hai creato filtri a mano, assicurati che includano la porta e il protocollo del tuo gioco.
Non disattivare mai l'intero firewall per «fare una prova». Un VPS con IP pubblico riceve scansioni automatiche pochi minuti dopo l'accensione. Apri le porte che ti servono e lascia chiuso il resto.