W Linuksie zapora zależy od dystrybucji: ufw w Ubuntu i Debianie, firewalld w AlmaLinux i Rocky. Obie robią to samo, różnią się tylko polecenia.
Najpierw najważniejsze: jeśli włączasz zaporę po raz pierwszy, otwórz port 22 (SSH), zanim ją włączysz. Pominięcie tego kroku to najszybszy i najgłupszy sposób na odcięcie sobie dostępu do własnego serwera. Jeśli tak się stanie, nadal możesz wejść przez zakładkę VNC w panelu.
Ubuntu i Debian (ufw)
# Najpierw, ZAWSZE
ufw allow 22/tcp
# Twój port, w obu protokołach
ufw allow 30120/tcp
ufw allow 30120/udp
# Zakres portów
ufw allow 7777:7778/udp
# Włącz (jeśli nie była włączona) i sprawdź wynik
ufw enable
ufw status numbered
Aby usunąć regułę, sprawdź jej numer w ufw status numbered i usuń ją poleceniem ufw delete 3. Działa też ufw delete allow 30120/udp.
AlmaLinux i Rocky (firewalld)
# Najpierw, ZAWSZE
firewall-cmd --permanent --add-service=ssh
# Twój port, w obu protokołach
firewall-cmd --permanent --add-port=30120/tcp
firewall-cmd --permanent --add-port=30120/udp
# Zakres portów
firewall-cmd --permanent --add-port=7777-7778/udp
# Zastosuj i sprawdź
firewall-cmd --reload
firewall-cmd --list-all
--permanent sprawia, że reguła przetrwa ponowne uruchomienie; bez tego przepada. Z kolei --reload ją stosuje: bez przeładowania nic się nie dzieje. Aby ją usunąć, użyj tego samego polecenia z --remove-port.
Sprawdzenie, czy Twój serwer nasłuchuje
Przy uruchomionym serwerze gry wykonaj:
ss -lntup | grep 30120
Musisz zobaczyć linię z LISTEN (dla TCP) lub UNCONN (dla UDP, co jest normalne). Jeśli nic się nie pojawia, to nie zapora jest problemem: serwer nie jest uruchomiony albo nasłuchuje na innym porcie.
Zwróć też uwagę na adres: jeśli widzisz 127.0.0.1:30120 zamiast 0.0.0.0:30120, Twój serwer przyjmuje tylko połączenia lokalne i niezależnie od tego, ile reguł otworzysz, nikt nie wejdzie. Naprawia się to w konfiguracji gry, a nie w zaporze.
Których portów NIE otwierać
- Portu bazy danych (3306 dla MySQL, 5432 dla PostgreSQL). Jeśli gra i baza danych są na tej samej maszynie, nie trzeba jej otwierać na internet: łączą się przez
localhost. Baza MySQL dostępna dla całego świata to otwarte zaproszenie. - Paneli administracyjnych, takich jak txAdmin. Lepiej korzystać z tunelu SSH:
ssh -L 40120:localhost:40120 root@TWOJE_IP, a potem otworzyć panel w przeglądarce pod adresemlocalhost:40120. - Portu RCON, chyba że naprawdę potrzebujesz go z zewnątrz. A jeśli go otworzysz, niech hasło będzie długie i unikalne.
Jeśli nadal nie działa
- Czy serwer nasłuchuje, i to na
0.0.0.0? Sprawdzisz to poleceniemsspowyżej. - Czy protokół jest właściwy? Wiele gier działa po UDP; otwórz oba i rozwiejesz wątpliwości.
- Czy testujesz z zewnątrz? Z samego serwera zawsze działa.
- Sprawdź filtry w zakładce Bezpieczeństwo swojej usługi w panelu: tam działa filtrowanie AntiDDoS sieci, czyli warstwa niezależna od zapory systemu.