Gdy stawiasz serwer gry na VPS z Windows i nikt nie może się połączyć, winowajca prawie zawsze jest ten sam: zapora systemu Windows blokuje port. Poniżej pokazujemy, jak otworzyć go poleceniami. To szybsze niż klikanie po menu, a przede wszystkim można je skopiować i wkleić bez pomyłek.
Na VPS nie ma routera do skonfigurowania. Zapomnij o „przekierowaniu portów” (port forwarding), o którym piszą poradniki: to dotyczy serwerów w domu. Twój VPS ma własny publiczny adres IP, więc jedyne, co stoi między Twoimi graczami a Twoim serwerem, to zapora Windows.
Otwórz PowerShell jako administrator
Połącz się z VPS przez Pulpit zdalny (tutaj wyjaśniamy, jak to zrobić), kliknij prawym przyciskiem myszy przycisk Start i wybierz Terminal (Admin) lub Windows PowerShell (Admin). Jeśli w nazwie nie ma „Admin”, polecenia zakończą się błędem uprawnień.
Otwieranie portu: TCP i UDP, ruch przychodzący i wychodzący
Ten przykład otwiera port 30120; zmień numer i nazwę na własne. Wklej cały blok naraz:
$port = 30120
$nazwa = "Serwer gry"
New-NetFirewallRule -DisplayName "$nazwa TCP $port (do serwera)" -Direction Inbound -Protocol TCP -LocalPort $port -Action Allow -Profile Any
New-NetFirewallRule -DisplayName "$nazwa UDP $port (do serwera)" -Direction Inbound -Protocol UDP -LocalPort $port -Action Allow -Profile Any
New-NetFirewallRule -DisplayName "$nazwa TCP $port (z serwera)" -Direction Outbound -Protocol TCP -LocalPort $port -Action Allow -Profile Any
New-NetFirewallRule -DisplayName "$nazwa UDP $port (z serwera)" -Direction Outbound -Protocol UDP -LocalPort $port -Action Allow -Profile Any
Co robi każda część, jeśli chcesz to dostosować:
-Direction Inboundto ruch przychodzący z zewnątrz (ten, którego naprawdę potrzebujesz), aOutboundto ruch wychodzący.-ProtocolTCP lub UDP. Nie są wymienne. Jeśli Twoja gra używa UDP, a otworzysz tylko TCP, nikt nie wejdzie: to najczęstszy błąd.-LocalPortto port, na którym nasłuchuje Twój serwer.-Profile Anystosuje regułę do wszystkich trzech profili sieciowych (domenowego, prywatnego i publicznego). Na VPS połączenie ma zwykle profil „publiczny”, więc to ważne.
Czy reguły wychodzące są potrzebne? W Windows Server ruch wychodzący jest domyślnie dozwolony, więc zwykle nie. Są tu dlatego, że nie przeszkadzają, a jeśli ktoś wcześniej zaostrzył ustawienia zapory, okażą się dokładnie tym, czego brakowało.
Dla zakresu portów
New-NetFirewallRule -DisplayName "Gra UDP 7777-7778 (do serwera)" -Direction Inbound -Protocol UDP -LocalPort 7777-7778 -Action Allow -Profile Any
Możesz też podać listę oddzieloną przecinkami: -LocalPort 27015,27020.
Sprawdzenie, czy reguły zostały dodane poprawnie
Get-NetFirewallRule -DisplayName "*30120*" | ForEach-Object {
$f = $_ | Get-NetFirewallPortFilter
[pscustomobject]@{
Nazwa = $_.DisplayName
Aktywna = $_.Enabled
Kierunek = $_.Direction
Akcja = $_.Action
Protokol = $f.Protocol
Port = $f.LocalPort
}
} | Format-Table -AutoSize
Muszą się pojawić wszystkie cztery reguły, z Enabled ustawionym na True i Action na Allow.
Sprawdzenie, czy Twój serwer nasłuchuje
Otwarcie portu nic nie da, jeśli nic za nim nie nasłuchuje. Przy uruchomionym serwerze gry wykonaj:
Get-NetTCPConnection -LocalPort 30120 -State Listen
Get-NetUDPEndpoint -LocalPort 30120
Jeśli polecenia nic nie zwracają, problemem nie jest zapora: Twój serwer się nie uruchomił, uległ awarii albo jest skonfigurowany na inny port. Zajrzyj do konsoli gry, zanim zaczniesz dalej zmieniać reguły.
Usuwanie reguły
Remove-NetFirewallRule -DisplayName "Serwer gry TCP 30120 (do serwera)"
Jeśli wolisz zrobić to myszką
Naciśnij Win + R, wpisz wf.msc i naciśnij Enter. W lewym panelu wybierz Inbound Rules (Reguły przychodzące) → w prawej kolumnie New Rule… (Nowa reguła) → Port → wybierz TCP lub UDP i wpisz numer w polu Specific local ports (Określone porty lokalne) → Allow the connection (Zezwalaj na połączenie) → zostaw zaznaczone wszystkie trzy profile → nadaj regule nazwę i zakończ. Powtórz to dla drugiego protokołu: jedna reguła obejmuje tylko TCP albo UDP, nigdy oba naraz.
Nadal nie działa
Sprawdź po kolei, w tej kolejności, bo tak najszybciej wykluczysz kolejne przyczyny:
- Czy serwer nasłuchuje? Dwa polecenia powyżej. To zdecydowanie najczęstsza przyczyna.
- Czy otwarty jest właściwy protokół? Połowa gier działa po UDP. Otwórz TCP i UDP, a rozwiejesz wątpliwości.
- Czy testujesz z samego serwera? Od środka zawsze działa. Sprawdź z innego łącza albo poproś kogoś, żeby spróbował wejść.
- Filtrowanie AntiDDoS. Na stronie Twojej usługi, w zakładce Bezpieczeństwo, znajdują się filtry sieci. Jeśli masz filtry utworzone ręcznie, upewnij się, że obejmują port i protokół Twojej gry.
Nigdy nie wyłączaj całej zapory „na próbę”. VPS z publicznym adresem IP jest automatycznie skanowany już kilka minut po uruchomieniu. Otwórz porty, których potrzebujesz, a resztę zostaw zamkniętą.