Serveur de jeux et sous réseaux

Bonjour

J’ai monté un routeur avec 4 interfaces réseaux qui me sert également de passerelle et de par-feu/NAT pour mes 3 sous réseaux.

Configuration comme suit:

eth1 : WAN
eth0 : 192.168.2.0\24 : Postes clients
eth2 : 192.168.3.0\24 : Serveurs
waln0 : 192.168.4.0\24 : Accès Wifi avec hostapd

DHCP avec isc-dhcpd configuré en concéquence
Bind9 en simple relais DNS
WINS pour la visibilité des postes dans le voisinage réseau
Iptables configuré comme suit

# Generated by iptables-save v1.4.14 on Fri May 16 16:38:33 2014
*mangle
:PREROUTING ACCEPT [81:28893]
:INPUT ACCEPT [34:3898]
:FORWARD ACCEPT [47:24995]
:OUTPUT ACCEPT [40:25464]
:POSTROUTING ACCEPT [87:50459]
COMMIT
# Completed on Fri May 16 16:38:33 2014
# Generated by iptables-save v1.4.14 on Fri May 16 16:38:33 2014
*nat
:INPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -p tcp -m tcp -i eth1 --dport 30000:30100 -j DNAT --to-destination 192.168.3.3
-A PREROUTING -p tcp -m tcp -i eth1 --dport 21 -j DNAT --to-destination 192.168.3.3:21
-A PREROUTING -p tcp -m tcp -i eth1 --dport 8181 -j DNAT --to-destination 192.168.3.3:8181
-A PREROUTING -p udp -m udp -i eth1 --dport 25000 -j DNAT --to-destination 192.168.3.3:25000
-A PREROUTING -p udp -m udp -i eth1 --dport 27015 -j DNAT --to-destination 192.168.3.3:27015
-A POSTROUTING -o eth1 -j MASQUERADE
COMMIT
# Completed on Fri May 16 16:38:33 2014
# Generated by iptables-save v1.4.14 on Fri May 16 16:38:33 2014
*filter
:FORWARD DROP [0:0]
:INPUT DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p tcp -m tcp -i eth2 --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp -i eth0 --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -j ACCEPT
-A INPUT -i eth2 -j ACCEPT
-A INPUT -i wlan0 -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i wlan0 -o eth2 -j ACCEPT
-A FORWARD -i eth2 -o wlan0 -j ACCEPT
-A FORWARD -i eth0 -o eth2 -j ACCEPT
-A FORWARD -i eth2 -o eth0 -j ACCEPT
-A FORWARD -i eth0 -o wlan0 -j ACCEPT
-A FORWARD -i wlan0 -o eth0 -j ACCEPT
-A FORWARD -m state -i eth1 --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -m state -o eth1 --state NEW,ESTABLISHED,RELATED -j ACCEPT
COMMIT
# Completed on Fri May 16 16:38:33 2014

Pour les routes ce sont toutes celles créés avec la connexion des interfaces réseaux.

Voila, tous fonctionne correctement sauf que lorsque je veux jouer en LAN à un jeux vidéo, C&C3 par exemple, je ne peux pas ‘voir’ les parties hôtes crées dans un autre sous réseaux.
Je m’explique. L’hôte créant la partie et sur le réseau 192.168.2.0\24 et l’invité voulant rejoindre cette partie ne la pas dans sa liste de parties crées.

Je sèche bien sur ce coup là je ne parviens pas à comprendre d’où vient le problème. Dois-je créer de nouvelles routes ?

Merci par avance de vos réponses

Cordialement.

C’est quoi, “tout” ? Je demande car je décèle des incohérences dans le jeu de règles iptables. Je passe rapidement sur les règles inutiles du genre “accepter le SSH en entrée sur eth0 et eth2” suivies par “accepter tout en entrée sur eth0, eth2 et wlan0”. Plus important, il y a des règles DNAT de redirections de ports vers l’adresse 192.168.3.3 mais pas de règles ACCEPT correspondantes dans INPUT (si cette adresse appartient au routeur) ou FORWARD (si elle appartient à une autre machine) pour autoriser les connexions redirigées.

[quote=“Psychedelic”]lorsque je veux jouer en LAN à un jeux vidéo, C&C3 par exemple, je ne peux pas ‘voir’ les parties hôtes crées dans un autre sous réseaux.
Je m’explique. L’hôte créant la partie et sur le réseau 192.168.2.0\24 et l’invité voulant rejoindre cette partie ne la pas dans sa liste de parties crées.[/quote]
Il y a plusieurs façons pour un poste client d’identifier l’hôte d’une partie.

  • Spécifier directement l’adresse IP de l’hôte ;
  • Se connecter à un serveur central qui fait le lien entre les joueurs et les hôtes enregistrés sur ce serveur ;
  • Découvrir les hôtes sur le réseau local en émettant des requêtes en broadcast. Comme les broadcasts ne traversent pas les routeurs, cette méthode est limitée aux joueurs et hôtes qui sont dans le même sous-réseau.
  • On peut remplacer le broadcast par du multicast, mais si c’est du multicast link-local non routable alors la limitation est la même.

En complément, pour les jeux utilisant le broadcast UDP, tu peux essayer d’installer un relais de broadcast comme bcrelay sur le routeur. Par exemple pour relayer les broadcasts reçus sur wlan0, eth0 ou eth2 vers les deux autres :

Cependant bcrelay retransmet les paquets vers l’adresse de broadcast limité 255.255.255.255 au lieu de l’adresse de broadcast dirigé 192.168.x.255 propre à chaque sous-réseau. Il faut donc que le serveur de jeu accepte les broadcasts émis sur cette adresse.

Effectivement c’est pas cohérent pour l’ouverture des ports ssh

Pour ce qui est de la redirection des ports c’est qu’en fait j’avais FORWARD de la table filter en ACCEPT pour tous j’ai changé tous ça y pas longtemps et je ne me suis pas penché sur ce qui pourrait être “stupide”.

En tous cas merci pour tes réponses.

Cela dit ca ne fonctionne pas avec bcrelay :confused: ça aurait été trop simple

Bon en fait ça fonctionne mais comme tu disait :

[quote=“PascalHambourg”]
Cependant bcrelay retransmet les paquets vers l’adresse de broadcast limité 255.255.255.255 au lieu de l’adresse de broadcast dirigé 192.168.x.255 propre à chaque sous-réseau. Il faut donc que le serveur de jeu accepte les broadcasts émis sur cette adresse.[/quote]

Et C&C3 ne supporte pas les broadcast émis vers 255.255.255.255 du coup je vais passé par un tunnel vpn.

Un tunnel VPN dans quel but ?

je sais pas trop. C’est ce qui m’est venue dans un premier abord :unamused:

Si tu as une autre solution je suis preneur.

Une solution consiste à remplacer le routage entre les trois interfaces LAN par un pont (bridge) afin de réunir les trois segments en un unique sous-réseau IP et domaine de diffusion. Sous réserve de de compatibilité avec tes autres objectifs bien sûr.