Jak zsynchronizować czas serwera Windows dla Sky Mission Hub
Sky Mission Hub korzysta z podpisanych żądań z krótkim oknem ważności. Jeśli zegar systemu Windows na Twoim serwerze FiveM znacząco wyprzedza aktualny czas lub jest opóźniony, API może odrzucić żądanie, nawet gdy poświadczenia serwera są poprawne.
Ten przewodnik pokazuje, jak zsynchronizować zegar systemu Windows, sprawdzić, czy operacja się powiodła, i ponownie spróbować użyć Mission Hub.
Dlaczego Mission Hub wymaga poprawnego czasu
Każde wychodzące żądanie Mission Hub zawiera podpisany znacznik czasu z maszyny uruchamiającej FXServer. API sprawdza ten znacznik czasu względem własnego zegara. Jeśli różnica jest zbyt duża, żądanie zostaje odrzucone z błędem expired_signature.
W Mission Hub możesz zobaczyć "Unable to load mission hub." (w polskim interfejsie: „Nie udało się wczytać centrum misji.”). W logach serwera może pojawić się bardziej szczegółowy błąd expired_signature. Ten ogólny komunikat o ładowaniu może mieć również inne przyczyny, więc sprawdzenie zegara jest krokiem diagnostycznym, a nie rozwiązaniem każdego problemu z połączeniem.
Zanim zaczniesz
Potrzebujesz uprawnień administratora do serwera Windows oraz dostępnego źródła czasu. Windows zawiera usługę Windows Time oraz narzędzie w32tm, więc nie jest wymagane żadne dodatkowe oprogramowanie.
W przypadku VPS lub maszyny wirtualnej zarządzanej przez dostawcę, postępuj zgodnie z wymaganiami dostawcy hostingu dotyczącymi źródła czasu. Jeśli zegar wielokrotnie cofa się do poprzedniej godziny, poproś ich również o sprawdzenie synchronizacji hosta.
Krok po kroku: synchronizacja czasu serwera Windows
Uruchom te polecenia na serwerze Windows, a nie w konsoli FiveM ani w konsoli txAdmin.
Otwórz PowerShell jako administrator
Otwórz menu Start w systemie Windows, wyszukaj Windows PowerShell, kliknij prawym przyciskiem myszy i wybierz Uruchom jako administrator. Zaakceptuj komunikat o uprawnieniach systemu Windows, jeśli się pojawi.
Włącz i uruchom usługę Windows Time
Uruchom te polecenia jedno po drugim:
Set-Service -Name W32Time -StartupType Automatic
Start-Service -Name W32Time
To uruchamia usługę czasu i konfiguruje ją tak, aby uruchamiała się automatycznie. Samo uruchomienie usługi nie stanowi dowodu na to, że zegar został zsynchronizowany.
Sprawdź aktualne źródło czasu i status
w32tm /query /source
w32tm /query /status
Sprawdź wybrane Source (źródło) oraz Last Successful Sync Time (czas ostatniej udanej synchronizacji). Na serwerze samodzielnym źródłem może być publiczny serwer NTP lub serwer dostawcy hostingu. Na członku domeny będzie to zazwyczaj źródło czasu domeny. Maszyna wirtualna może korzystać z dostawcy integracji hosta.
Local CMOS Clock (lokalny zegar CMOS) lub Free-running System Clock (samodzielnie działający zegar systemowy) nie potwierdza synchronizacji z zewnętrznym źródłem. Brakujący lub nieaktualny czas ostatniej udanej synchronizacji to również powód do sprawdzenia problemu.
Poproś o nową synchronizację
w32tm /resync /rediscover
Poczekaj na wynik, a następnie ponownie sprawdź status:
w32tm /query /source
w32tm /query /status
Jeśli synchronizacja zakończy się sukcesem, a status pokazuje oczekiwane źródło i niedawny czas ostatniej udanej synchronizacji, przejdź do sekcji Zweryfikuj wynik poniżej. Możesz zachować swoje dotychczasowe działające źródło czasu.
Jeśli serwer samodzielny wymaga źródła czasu
Użyj tej sekcji tylko w przypadku serwera samodzielnego bez działającego zarządzanego źródła czasu. Serwer samodzielny to taki, który nie jest dołączony do domeny Active Directory.
Jeśli Twój dostawca hostingu określa serwer NTP, użyj jego udokumentowanych ustawień. W przeciwnym razie możesz skonfigurować system Windows tak, aby korzystał z publicznego serwera czasu Microsoftu:
w32tm /config /manualpeerlist:"time.windows.com,0x8" /syncfromflags:manual /update
Restart-Service -Name W32Time
w32tm /resync /rediscover
Flaga 0x8 wybiera tryb klienta NTP. Ponowne uruchomienie W32Time w tym miejscu restartuje usługę czasu systemu Windows; nie restartuje ona FXServer.
Sprawdź wynik:
w32tm /query /source
w32tm /query /status
Microsoft dokumentuje te opcje konfiguracji w Narzędzia i ustawienia usługi czasu systemu Windows.
Zweryfikuj wynik
Przed powrotem do gry upewnij się, że:
- Polecenie ponownej synchronizacji zakończyło się pomyślnie.
- Source (źródło) pokazuje źródło czasu, którego oczekujesz dla tego serwera.
- Last Successful Sync Time (czas ostatniej udanej synchronizacji) jest aktualny.
Możesz również porównać zegar z skonfigurowanym przez Ciebie źródłem NTP:
w32tm /stripchart /computer:time.windows.com /samples:5 /dataonly
Jeśli używasz innego serwera NTP, zastąp time.windows.com adresem tego serwera. Proces ten zbiera pięć próbek przesunięcia, a następnie się zatrzymuje. Przesunięcie jest wyświetlane w sekundach; zsynchronizowany zegar powinien być bliski zeru, a nie oddalony o minuty lub godziny. System Windows może stopniowo korygować niektóre różnice, więc sprawdź ponownie, jeśli przesunięcie wciąż się ustala.
/stripchart porównuje zegary; nie synchronizuje ich. Używa również innego źródłowego portu UDP niż usługa czasu Windows, więc samo pomyślne porównanie nie dowodzi, że W32Time może synchronizować. Sprawdź również wynik ponownej synchronizacji oraz status usługi.Spróbuj ponownie w Mission Hub
Wróć do Mission Hub i kliknij "Spróbuj ponownie", lub zamknij go i otwórz ponownie. Kolejne żądanie wykorzystuje świeży znacznik czasu z poprawionego zegara serwera.
Restart FiveM lub zasobów zazwyczaj nie jest wymagany tylko po to, aby pobrać poprawiony czas systemowy.
Jeśli Hub nadal nie działa, sprawdź ostatni log serwera. Powtarzający się błąd expired_signature oznacza, że zegar serwera nadal wymaga sprawdzenia. Inne błędy, w tym invalid_signature, wymagają własnej diagnostyki; synchronizacja zegara nie rozwiązuje wszystkich problemów z uwierzytelnianiem.
Rozwiązywanie problemów
Dostęp odmówiony
Zamknij bieżące okno PowerShell i otwórz je ponownie za pomocą Uruchom jako administrator. Do zmiany ustawień usługi czasu wymagane jest konto z uprawnieniami administratora lokalnego.
Usługa nie została uruchomiona
Ponownie uruchom polecenia usługi w oknie PowerShell z podwyższonymi uprawnieniami:
Set-Service -Name W32Time -StartupType Automatic
Start-Service -Name W32Time
Get-Service -Name W32Time
Status usługi powinien brzmieć Running (uruchomiona). Następnie powtórz polecenie ponownej synchronizacji. Jeśli polityka zarządzana wyłącza usługę lub nadpisuje jej ustawienia, poproś administratora lub dostawcę hostingu o sprawdzenie tej polityki.
Brak dostępnych danych czasowych
Zazwyczaj oznacza to, że system Windows nie mógł uzyskać poprawnej odpowiedzi ze swojego źródła czasu. Sprawdź:
- Czy skonfigurowana nazwa hosta NTP jest poprawnie zapisana i rozwiązuje się przez DNS.
- Źródło czasu jest dostępne i przesyła odpowiedzi NTP.
- Zapora Windows, zapora dostawcy oraz sieć zezwalają na żądanie NTP i jego odpowiedź przez port UDP 123.
Na przykład, na samodzielnym serwerze skonfigurowanym do korzystania z time.windows.com, sprawdź rozwiązanie DNS za pomocą:
Resolve-DnsName time.windows.com
Pomyślne wyszukanie DNS potwierdza jedynie rozwiązanie nazwy. Nie dowodzi to, że ruch NTP może przechodzić. Poproś dostawcę o sprawdzenie UDP 123, jeśli synchronizacja nadal nie działa; wyłączanie zapory sieciowej nie jest konieczne.
Zobacz przewodnik Microsoftu dotyczący błędu „no time data was available” w celu wykonania dalszych kontroli.
Czas ponownie staje się nieprawidłowy
Sprawdź, czy usługa czasu Windows (Windows Time) działa i może połączyć się ze swoim źródłem. Na maszynie wirtualnej hiperwizor lub dostawca hostingu również mogą wpływać na czas gościa. Poproś dostawcę o sprawdzenie czasu hosta, jeśli wielokrotnie nadpisuje on poprawiony czas gościa.
Utrzymuj działającą automatyczną synchronizację, zamiast ręcznie ustawiać zegar za każdym razem, gdy Hub ulegnie awarii.
Powiązany przewodnik
Zobacz Scenario Creator i Hub w celu zapoznania się z procesami tworzenia i udostępniania misji w systemie straży pożarnej.
ESX, QBCore i Qbox: Skonfiguruj swój framework i utwórz prace
Praktyczny przewodnik dla początkujących w FiveM: zainstaluj swój framework, poprawnie utwórz prace i rangi, zrozum dostęp do służby i funkcji szefa oraz sprawdź, czy wszystko zapisuje się poprawnie.
Użyj GitHub Desktop, aby uprościć aktualizacje FiveM i dostrzec każdą zmianę
Przewodnik bez użycia linii poleceń dla właścicieli serwerów FiveM: użyj GitHub Desktop, aby zobaczyć dokładnie, co zmieniło się w aktualizacji, zachować własne edycje konfiguracji i błyskawicznie wrócić do poprzedniej wersji, gdy coś przestanie działać.