Sieć BungeeCord
W sieci za proxy BungeeCord lub Waterfall AdminControl robi to samo co za Velocity: zbanowany gracz nie wejdzie do sieci, a kick albo ban nałożony na jednym serwerze wyrzuca gracza z całej sieci. Obsługiwane: aktualne buildy BungeeCorda (sprawdzone na buildzie 2104, wersja 26.1) i Waterfall (sprawdzony na 1.21 build 615). Inne forki BungeeCorda nie są testowane.
Czego potrzebujesz
- Aktualnego buildu BungeeCorda albo Waterfalla, na Javie 21 lub nowszej.
- Bazy MySQL lub MariaDB wspólnej dla proxy i każdego serwera za nim (zobacz Bazę danych).
online_mode: truewconfig.ymlBungeeCorda albo pluginu do logowania w sieci bez kont premium (niżej).- Dostępu do internetu z proxy przy jego pierwszym starcie z AdminControl (niżej).
- Portów serwerów zamkniętych dla wszystkiego poza proxy albo BungeeGuard (zobacz „Zabezpieczenie serwerów”).
Instalacja
Wrzuć ten sam
AdminControl.jardo folderuplugins/proxy. Jeden jar działa na Paper, Purpur, Folia, Spigot, Velocity, BungeeCord i Waterfall.Uruchom proxy raz. BungeeCord czyta listę
librariespluginu i pobiera z Maven Central Adventure (bibliotekę tekstu używaną przez AdminControl) do swojego folderulibraries/. Potem AdminControl tworzyplugins/AdminControl/config.ymli próbuje połączyć się z bazą z tego pliku (localhost, bez hasła): dopóki nie wpiszesz swojej, log mówiCould not open the shared database, a kary nie są sprawdzane na proxy.W
plugins/AdminControl/config.ymlna proxy wpisz bazę, której używa każdy serwer. Klucze są takie same jak na Velocity:# en albo pl: ekran bana i odpowiedzi /ac na proxy. language: en # Nazwa tego proxy w logach. server-name: proxy database: type: mysql mysql: host: db.example.com port: 3306 database: admincontrol user: admincontrol password: "a-long-random-password" pool-size: 4 use-ssl: trueKażdy serwer za proxy ma AdminControl z
database.type: mysqli tą samą bazą.Zrestartuj proxy i wpisz
/ac versionw jego konsoli: pokażeDatabase: mysql, ready, gdy proxy łączy się z bazą. Zdatabase.type: sqliteAdminControl nie startuje na proxy i pisze w logu dlaczego.
Proxy nie ma panelu: panel dowolnego serwera pokazuje całą sieć (zobacz Panel sieci).
Brak internetu przy pierwszym starcie
Bez dostępu do Maven Central BungeeCord nie pobierze bibliotek i nie załaduje AdminControl (log pokazuje błąd przy
rozwiązywaniu bibliotek net.kyori). Uruchom proxy raz z dostępem do sieci albo skopiuj folder libraries/ z proxy,
na którym zadziałało. Bardzo stare buildy BungeeCorda w ogóle nie czytają libraries i nie ładują pluginu:
zaktualizuj proxy.
Skopiowany folder libraries/ jest uznawany za zaufany taki, jaki jest. Zanim uruchomisz z nim proxy, sprawdź jego
pliki z tymi sumami SHA-256 (to te same pliki co na Maven Central); są w podfolderze net/kyori/:
| Plik | SHA-256 |
|---|---|
adventure-api-4.18.0.jar |
079f8f6030f320c37159abb5d55d106b1736b44c90e9f7a42886a81183dac3fc |
adventure-key-4.18.0.jar |
2b32dd1f9987af8dcd0bf5ab8e96fc3deeac03f85d5329b588d98b806230e52d |
adventure-text-minimessage-4.18.0.jar |
444e7108e2b030d02d12d36439563350ccfcf2cf6a8f50db6057fc76a16d0abf |
adventure-text-serializer-plain-4.18.0.jar |
15ff9e237d5bf200ecaceb57e83049d23765690bb8ce3a5320aa37d4b5cba3da |
adventure-text-serializer-legacy-4.18.0.jar |
36e08f218927c47dca1c90306afb31f1f0bbbfc71e3ea58b0fbfe1d7020c6965 |
adventure-text-serializer-gson-4.18.0.jar |
ccf68107afe65a5f6f8d822698b002e46e05e10aca6fb5801a7f86a0ed71f93d |
adventure-text-serializer-json-4.18.0.jar |
645041fca550b3bf1bcb8508b72942cc15ea18377b51ceb96d073edf432eb66f |
adventure-text-serializer-bungeecord-4.3.4.jar |
e1bc376c6dc7a2100016015735ce4ccc534d2b26bf5ab82aac751c5032056c39 |
examination-api-1.3.0.jar |
c9237ffecb05428f6eff86216246ac70ce0b47b04c08ea7ca35020fde57f8492 |
examination-string-1.3.0.jar |
7d01fc25a4bb3af0e1662685455f4541fbf4626216ea5846e455c1491e156b8c |
option-1.0.0.jar |
2bde5a7a2d73fa1166a0f1663a22c3af7d2768ffc4fea331774c3c0f62225d11 |
Przekazywanie
Bez przekazywania serwery widzą każdego gracza pod adresem proxy: bany IP i „inne konta z tego samego adresu” przestają działać, a AdminControl odmawia banów IP takich graczy, żeby nie zablokować wszystkich.
- BungeeCord,
config.yml:ip_forward: trueionline_mode: true. Zonline_mode: falsekażdy może wejść przez proxy z nickiem kogoś z ekipy i dostaje jego konto, łącznie z połączonym kontem panelu; taka sieć potrzebuje pluginu do logowania na proxy. - Każdy serwer,
spigot.yml:settings.bungeecord: true. Wserver.propertiesustawonline-mode=false(konta sprawdza proxy).
Za load balancerem albo osłoną DDoS, która wysyła protokół PROXY, ustaw proxy_protocol: true dla listenera w
config.yml BungeeCorda, a potem pozwól łączyć się z portem proxy tylko osłonie.
Zabezpieczenie serwerów
Przekazywanie BungeeCord nie ma sekretu. Serwer z bungeecord: true wierzy temu, kto się z nim łączy, w sprawie
nicku, UUID i adresu gracza. Każdy, kto dostanie się bezpośrednio do portu serwera, może wejść jako dowolny gracz,
także ktoś z ekipy, i ominąć każdego bana. Zrób jedno z dwóch:
- Zamknij port każdego serwera dla wszystkiego poza proxy (reguła zapory albo serwery nasłuchujące tylko na adresie prywatnym).
- Zainstaluj BungeeGuard na proxy i na każdym serwerze: proxy wysyła wtedy token, który sprawdzają serwery.
Po starcie serwera AdminControl sprawdza, czy działa na nim BungeeGuard (zainstalowany, ale nieuruchomiony liczy się
jako brak). Nie sprawdza tokenów BungeeGuard. Serwer w trybie BungeeCord bez działającego BungeeGuard zapisuje w logu
ostrzeżenie:
This server takes player data from a BungeeCord proxy without BungeeGuard. Jego panel pokazuje
Niezabezpieczony forwarding przy serwerze w karcie serwerów sieci albo jako ostrzeżenie na pulpicie, gdy jest
jedynym serwerem. Ostrzeżenie zostaje także wtedy, gdy port jest zamknięty zaporą: AdminControl nie widzi reguł
zapory. Serwer startuje w każdym przypadku.
Brak oznaczenia nie znaczy, że jest bezpiecznie: swoje przekazywanie zgłaszają tylko serwery z AdminControl (od tej wersji). Samo proxy i serwery bez AdminControl nie pokazują nic.
Co dzieje się gdzie
Tak samo jak za Velocity (zobacz Sieć Velocity): bany i bany IP są sprawdzane, gdy gracz wchodzi do
sieci, nowy ban albo kick wyrzuca gracza z sieci, wyciszenia działają na serwerach, ostrzeżenia gracz widzi na
serwerze, na którym jest. Jeśli baza nie działa albo sprawdzenie trwa dłużej niż 3 sekundy, proxy decyduje na
podstawie banów trzymanych w pamięci (log mówi checked against the in-memory list); tylko gdy ta lista nie została
jeszcze odczytana, wpuszcza gracza i zapisuje letting them in.
Komendy na proxy
Te same komendy co na Velocity, wpisywane w konsoli proxy albo przez gracza w dowolnym miejscu sieci:
| Komenda | Co robi | Kto |
|---|---|---|
/ac help |
Lista komend. | admincontrol.command |
/ac version |
Wersja pluginu, licencja, baza i to, jak daleko odczytano dziennik kar. | admincontrol.command |
/ac ban <player> <reason> |
Ban na stałe. | prawo do kar |
/ac tempban <player> <time> <reason> |
Ban czasowy. | prawo do kar |
/ac ipban <player> <reason> |
Ban IP na stałe. | prawo do kar |
/ac tempipban <player> <time> <reason> |
Ban IP czasowy. | prawo do kar |
/ac mute <player> <reason> |
Wyciszenie na stałe. | prawo do kar |
/ac tempmute <player> <time> <reason> |
Wyciszenie czasowe. | prawo do kar |
/ac warn <player> <reason> |
Ostrzeżenie. | prawo do kar |
/ac kick <player> <reason> |
Wyrzucenie z sieci. | prawo do kar |
/ac unban <player> [reason] |
Zdjęcie bana (także bana IP). | prawo do kar |
/ac unmute <player> [reason] |
Zdjęcie wyciszenia. | prawo do kar |
/ac unwarn <player> [reason] |
Zdjęcie najnowszego ostrzeżenia. | prawo do kar |
/ac punish <player> <template> [reason] |
Kara z szablonu: następny stopień eskalacji gracza. | prawo do kar |
/ac history <player> |
10 ostatnich kar gracza. | prawo do kar |
/ac rollback i /ac restore (CoreProtect, admincontrol.rollback) nie są komendami proxy: CoreProtect działa na
serwerach, więc /ac rollback gracza trafia dalej na serwer, na którym jest, a konsola proxy ich nie wykonuje.
/ac ban <player> -r <time> na proxy odpowiada, że CoreProtect nie jest tam dostępny; użyj panelu albo konsoli
serwera.
Prawo do kar jest takie samo jak na serwerach: konsola proxy może wszystko; gracz potrzebuje
admincontrol.punish i połączonego konta panelu, a jego rola w panelu wyznacza, co może.
Nadaj admincontrol.command i admincontrol.punish na proxy przez LuckPerms dla BungeeCorda, który nadaje je po
UUID. Sekcja groups w config.yml BungeeCorda nadaje je po nicku: kto przejmie stary nick kogoś z ekipy po zmianie
nicku, też je dostanie. Wszystko inne, co gracz wpisze pod /ac (/ac link, /ac report, /ac reload albo karę
bez uprawnień na proxy), trafia dalej na serwer, na którym gracz jest, i ten sprawdza swoje uprawnienia jak dotąd.
Konsola proxy wykonuje tylko komendy z tabeli. AdminControl przekazuje taką linię jako ostatni, po tym, jak filtry
komend innych pluginów proxy zobaczyły ją w wpisanej postaci; tylko plugin słuchający zdarzenia czatu BungeeCorda z
najwyższym priorytetem widzi ją jako /admincontrol:ac ... (na klientach od 1.19) albo jako anulowaną linię (na
starszych klientach, których linię AdminControl wysyła do serwera tak, jak została wpisana).
Waterfall
Waterfall konfiguruje się tak samo. PaperMC już go nie rozwija: jego buildy przejmują tylko aktualizacje BungeeCorda, więc nowe wersje Minecrafta trafiają najpierw do BungeeCorda.
Znane ograniczenia
- Tak samo jak na Velocity: wyciszenia nie działają dla czatu i komend obsługiwanych przez plugin na proxy, a
podpowiedzi
/acw sieci pokazują tylko komendy proxy.