mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-08 12:44:41 +02:00
fix(satisfactory): ouvrir le port 8888/tcp Reliable Messaging
Depuis la 1.1, le client ouvre un socket TCP :8888 en plus du jeu UDP :7777. Bloqué par firewalld, le join réussissait puis le client était déconnecté (~60 s) avec « connection to the host has been lost » (log client : LogReliableMessaging: Failed to connect to server socket). - firewalld gpu-01 : + 8888/tcp (variable satisfactory_reliable_port) - gateway s01 : DNAT + forward étendus à 8888/tcp - doc : tableau des 3 sockets + piège n°3 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
bd169e5e1a
commit
8dbfa2f8dd
5 changed files with 35 additions and 15 deletions
|
|
@ -16,10 +16,18 @@ définissent **en jeu à la première connexion** (pas de fichier de config).
|
||||||
|
|
||||||
## Réseau
|
## Réseau
|
||||||
|
|
||||||
- **gpu-01 firewalld** : `7777/tcp` + `7777/udp` ouverts (gérés par le rôle).
|
Le serveur utilise **trois sockets** (Satisfactory ≥ 1.1) :
|
||||||
|
|
||||||
|
| Port | Proto | Rôle |
|
||||||
|
|---|---|---|
|
||||||
|
| 7777 | UDP | Jeu |
|
||||||
|
| 7777 | TCP | API HTTPS (Server Manager) |
|
||||||
|
| 8888 | TCP | **Reliable Messaging** — bloqué = déconnexion ~60 s après chaque join |
|
||||||
|
|
||||||
|
- **gpu-01 firewalld** : `7777/tcp+udp` + `8888/tcp` ouverts (gérés par le rôle).
|
||||||
Les ports `7778/udp` et `27015/udp` encore ouverts sont des restes pré-1.0, inutiles.
|
Les ports `7778/udp` et `27015/udp` encore ouverts sont des restes pré-1.0, inutiles.
|
||||||
- **storage-01 nftables** (rôle `gateway`) : DNAT `192.168.1.200:7777 → 192.168.10.20:7777`
|
- **storage-01 nftables** (rôle `gateway`) : DNAT `192.168.1.200 → 192.168.10.20`
|
||||||
(TCP+UDP) + règle forward associée. Redéploiement : `--tags gateway`.
|
(7777 TCP+UDP, 8888 TCP) + règles forward associées. Redéploiement : `--tags gateway`.
|
||||||
|
|
||||||
## Exploitation
|
## Exploitation
|
||||||
|
|
||||||
|
|
@ -47,3 +55,9 @@ systemctl restart satisfactory-server
|
||||||
`user_tmp_t`, le jeu héritait de `var_t` (/srv) — systemd (init_t) refuse d'exécuter
|
`user_tmp_t`, le jeu héritait de `var_t` (/srv) — systemd (init_t) refuse d'exécuter
|
||||||
ces types. Le rôle pose un fcontext **`bin_t`** sur `steamcmd/` et `server/` +
|
ces types. Le rôle pose un fcontext **`bin_t`** sur `steamcmd/` et `server/` +
|
||||||
`restorecon`. Symptôme : `Failed at step EXEC ... Permission denied`.
|
`restorecon`. Symptôme : `Failed at step EXEC ... Permission denied`.
|
||||||
|
3. **Déconnexion ~60 s après chaque join** (« Your connection to the host has been
|
||||||
|
lost ») : le port **8888/tcp (Reliable Messaging)** n'était pas ouvert. Le join UDP
|
||||||
|
réussit, puis le client tente le socket TCP 8888, se fait rejeter par firewalld et
|
||||||
|
abandonne. Diagnostic dans le log **client**
|
||||||
|
(`.../FactoryGame/Saved/Logs/FactoryGame.log`) :
|
||||||
|
`LogReliableMessaging: Error: Failed to connect to server socket`.
|
||||||
|
|
|
||||||
|
|
@ -68,9 +68,10 @@ table inet filter {
|
||||||
# Réponses WAN → cluster (connexions initiées depuis le cluster)
|
# Réponses WAN → cluster (connexions initiées depuis le cluster)
|
||||||
iif {{ wan_interface }} oif {{ lan_interface }} ct state established,related accept
|
iif {{ wan_interface }} oif {{ lan_interface }} ct state established,related accept
|
||||||
|
|
||||||
# Satisfactory — trafic DNATé (192.168.1.200:7777) → gpu-01:7777, quelle que soit
|
# Satisfactory — trafic DNATé (192.168.1.200) → gpu-01, quelle que soit la source
|
||||||
# la source (couvre un éventuel port-forward internet depuis la box)
|
# (couvre un éventuel port-forward internet depuis la box).
|
||||||
ip daddr 192.168.10.20 tcp dport 7777 ct state new,established,related accept
|
# 7777 = jeu/API ; 8888 = reliable messaging TCP (1.1) — bloqué = kick à ~60 s
|
||||||
|
ip daddr 192.168.10.20 tcp dport { 7777, 8888 } ct state new,established,related accept
|
||||||
ip daddr 192.168.10.20 udp dport 7777 ct state new,established,related accept
|
ip daddr 192.168.10.20 udp dport 7777 ct state new,established,related accept
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -84,8 +85,8 @@ table ip nat {
|
||||||
type nat hook prerouting priority -100;
|
type nat hook prerouting priority -100;
|
||||||
|
|
||||||
# Satisfactory — DNAT WAN → serveur dédié sur gpu-01
|
# Satisfactory — DNAT WAN → serveur dédié sur gpu-01
|
||||||
# (joignable via 192.168.1.200:7777 sans route vers 192.168.10.0/24)
|
# (joignable via 192.168.1.200 sans route vers 192.168.10.0/24)
|
||||||
iif {{ wan_interface }} tcp dport 7777 dnat to 192.168.10.20:7777
|
iif {{ wan_interface }} tcp dport { 7777, 8888 } dnat to 192.168.10.20
|
||||||
iif {{ wan_interface }} udp dport 7777 dnat to 192.168.10.20:7777
|
iif {{ wan_interface }} udp dport 7777 dnat to 192.168.10.20:7777
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,8 @@ Steam `1690800`), lancé par systemd (`satisfactory-server.service`).
|
||||||
| `satisfactory_user` | `satisfactory` | Utilisateur système du service |
|
| `satisfactory_user` | `satisfactory` | Utilisateur système du service |
|
||||||
| `satisfactory_home` | `/srv/satisfactory` | Home + racine d'install |
|
| `satisfactory_home` | `/srv/satisfactory` | Home + racine d'install |
|
||||||
| `satisfactory_install_dir` | `/srv/satisfactory/server` | Fichiers du jeu (~10 Go) |
|
| `satisfactory_install_dir` | `/srv/satisfactory/server` | Fichiers du jeu (~10 Go) |
|
||||||
| `satisfactory_port` | `7777` | Port unique jeu + API HTTPS (TCP+UDP depuis la 1.0) |
|
| `satisfactory_port` | `7777` | Jeu (UDP) + API HTTPS (TCP) |
|
||||||
|
| `satisfactory_reliable_port` | `8888` | Reliable Messaging (TCP, ≥ 1.1) — **bloqué = kick à ~60 s** |
|
||||||
| `satisfactory_update_on_start` | `true` | `steamcmd +app_update` en `ExecStartPre` à chaque (re)start |
|
| `satisfactory_update_on_start` | `true` | `steamcmd +app_update` en `ExecStartPre` à chaque (re)start |
|
||||||
| `satisfactory_memory_max` | `16G` | `MemoryMax` systemd — protège llama-server (32 Go partagés) |
|
| `satisfactory_memory_max` | `16G` | `MemoryMax` systemd — protège llama-server (32 Go partagés) |
|
||||||
| `satisfactory_nice` | `5` | Priorité CPU réduite vs llama-server |
|
| `satisfactory_nice` | `5` | Priorité CPU réduite vs llama-server |
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,9 @@ satisfactory_home: /srv/satisfactory
|
||||||
satisfactory_steamcmd_dir: "{{ satisfactory_home }}/steamcmd"
|
satisfactory_steamcmd_dir: "{{ satisfactory_home }}/steamcmd"
|
||||||
satisfactory_install_dir: "{{ satisfactory_home }}/server"
|
satisfactory_install_dir: "{{ satisfactory_home }}/server"
|
||||||
satisfactory_app_id: 1690800 # Satisfactory Dedicated Server (Steam, login anonyme)
|
satisfactory_app_id: 1690800 # Satisfactory Dedicated Server (Steam, login anonyme)
|
||||||
satisfactory_port: 7777 # port unique jeu + API HTTPS (TCP+UDP depuis la 1.0)
|
satisfactory_port: 7777 # jeu (UDP) + API HTTPS (TCP)
|
||||||
|
satisfactory_reliable_port: 8888 # socket TCP « Reliable Messaging » (depuis la 1.1) —
|
||||||
|
# bloqué = déconnexion ~60 s après chaque join
|
||||||
satisfactory_update_on_start: true # steamcmd +app_update à chaque (re)démarrage du service
|
satisfactory_update_on_start: true # steamcmd +app_update à chaque (re)démarrage du service
|
||||||
|
|
||||||
# Garde-fous ressources : gpu-01 partage ses 32 Go avec llama-server (~10 Go résidents).
|
# Garde-fous ressources : gpu-01 partage ses 32 Go avec llama-server (~10 Go résidents).
|
||||||
|
|
|
||||||
|
|
@ -108,14 +108,16 @@
|
||||||
daemon_reload: true
|
daemon_reload: true
|
||||||
state: started
|
state: started
|
||||||
|
|
||||||
# --- Firewall (7777 TCP+UDP : jeu + API HTTPS) ---
|
# --- Firewall ---
|
||||||
|
# 7777 : jeu (UDP) + API HTTPS (TCP). 8888 : reliable messaging (TCP, depuis la 1.1).
|
||||||
|
|
||||||
- name: Open game port in firewall
|
- name: Open game ports in firewall
|
||||||
ansible.posix.firewalld:
|
ansible.posix.firewalld:
|
||||||
port: "{{ satisfactory_port }}/{{ item }}"
|
port: "{{ item }}"
|
||||||
permanent: true
|
permanent: true
|
||||||
state: enabled
|
state: enabled
|
||||||
immediate: true
|
immediate: true
|
||||||
loop:
|
loop:
|
||||||
- tcp
|
- "{{ satisfactory_port }}/tcp"
|
||||||
- udp
|
- "{{ satisfactory_port }}/udp"
|
||||||
|
- "{{ satisfactory_reliable_port }}/tcp"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue