El servidor de juegos Linux COD4 no envía paquetes UDP como respuesta a la transmisión

0

Estoy configurando un grupo de servidores de juegos para un torneo de LAN de tamaño mediano usando CentOS 6 y los diversos binarios de Linux utilizados para los servidores de juegos. Con COD4, los servidores no aparecían en la lista de servidores (puedo unirme a través de la consola) si configuro el servidor COD4 para que se vincule a una dirección IP específica:

./cod4_lnxded +set net_ip 192.168.1.221 +set net_port 28960 +set dedicated 1 +set g_gametype dm +map_rotate +set sv_punkbuster 0 +exec server.cfg

Cuando no me conecto a una IP específica pero uso un comodín, aparece el servidor:

./cod4_lnxded +set net_ip 0.0.0.0 +set net_port 28960 +set dedicated 1 +set g_gametype dm +map_rotate +set sv_punkbuster 0 +exec server.cfg

Rastreé esto hasta que los paquetes de difusión UDP eran el problema. Cuando el cliente "solicita" servidores en la red, transmite estos paquetes. Este es el resultado de tcpdump del cliente:

18:39:06.896696 IP 192.168.1.13.28960 > broadcasthost.28960: UDP, length 15
18:39:06.896773 IP 192.168.1.13.28960 > broadcasthost.28961: UDP, length 15
18:39:06.896806 IP 192.168.1.13.28960 > broadcasthost.28962: UDP, length 15
18:39:06.896835 IP 192.168.1.13.28960 > broadcasthost.28963: UDP, length 15
18:39:06.896884 IP 192.168.1.13.28960 > broadcasthost.28960: UDP, length 15
18:39:06.896957 IP 192.168.1.13.28960 > broadcasthost.28961: UDP, length 15
18:39:06.897012 IP 192.168.1.13.28960 > broadcasthost.28962: UDP, length 15
18:39:06.897066 IP 192.168.1.13.28960 > broadcasthost.28963: UDP, length 15

Cuando no asocio el servidor cod4 a una IP específica, aparece lo siguiente en el tcpdump del servidor cuando solicito la lista de servidores locales / LAN:

18:49:53.639269 IP 192.168.1.13.28960 > 255.255.255.255.28960: UDP, length 15
18:49:53.639604 IP 192.168.1.13.28960 > 255.255.255.255.28961: UDP, length 15
18:49:53.639938 IP 192.168.1.13.28960 > 255.255.255.255.28962: UDP, length 15
18:49:53.640329 IP 192.168.1.13.28960 > 255.255.255.255.28963: UDP, length 15
18:49:53.640498 IP 192.168.1.13.28960 > 255.255.255.255.28960: UDP, length 15
18:49:53.640829 IP 192.168.1.220.28960 > 192.168.1.13.28960: UDP, length 169
18:49:53.640835 IP 192.168.1.13.28960 > 255.255.255.255.28961: UDP, length 15
18:49:53.640850 IP 192.168.1.220.28960 > 192.168.1.13.28960: UDP, length 169
18:49:53.641044 IP 192.168.1.13.28960 > 255.255.255.255.28962: UDP, length 15
18:49:53.641391 IP 192.168.1.13.28960 > 255.255.255.255.28963: UDP, length 15
18:49:53.660843 IP 192.168.1.13.28960 > 192.168.1.220.28960: UDP, length 15
18:49:53.661192 IP 192.168.1.220.28960 > 192.168.1.13.28960: UDP, length 169

Cuando asocio el servidor cod4 a una IP específica, solo los paquetes de transmisión entrantes aparecen en la salida de tcpdump:

18:51:45.101509 IP 192.168.1.13.28960 > 255.255.255.255.28960: UDP, length 15
18:51:45.102035 IP 192.168.1.13.28960 > 255.255.255.255.28961: UDP, length 15
18:51:45.102238 IP 192.168.1.13.28960 > 255.255.255.255.28962: UDP, length 15
18:51:45.102588 IP 192.168.1.13.28960 > 255.255.255.255.28963: UDP, length 15
18:51:45.102924 IP 192.168.1.13.28960 > 255.255.255.255.28960: UDP, length 15
18:51:45.103312 IP 192.168.1.13.28960 > 255.255.255.255.28961: UDP, length 15
18:51:45.103482 IP 192.168.1.13.28960 > 255.255.255.255.28962: UDP, length 15
18:51:45.103818 IP 192.168.1.13.28960 > 255.255.255.255.28963: UDP, length 15
18:51:46.355719 IP 192.168.1.13.28960 > 255.255.255.255.28960: UDP, length 15
18:51:46.356045 IP 192.168.1.13.28960 > 255.255.255.255.28961: UDP, length 15
18:51:46.356269 IP 192.168.1.13.28960 > 255.255.255.255.28962: UDP, length 15
18:51:46.356612 IP 192.168.1.13.28960 > 255.255.255.255.28963: UDP, length 15
18:51:46.356759 IP 192.168.1.13.28960 > 255.255.255.255.28960: UDP, length 15
18:51:46.357130 IP 192.168.1.13.28960 > 255.255.255.255.28961: UDP, length 15
18:51:46.357510 IP 192.168.1.13.28960 > 255.255.255.255.28962: UDP, length 15
18:51:46.357668 IP 192.168.1.13.28960 > 255.255.255.255.28963: UDP, length 15

Edité lo siguiente en el archivo /etc/sysctl.conf pero eso no resolvió el problema:

net.ipv4.conf.default.rp_filter = 0
net.ipv4.icmp_echo_ignore_broadcasts = 0
net.ipv4.conf.all.rp_filter = 1
net.ipv4.all.rp_filter = 1
net.ipv4.conf.default.arp_filter = 1
net.ipv4.conf.all.arp_filter = 1

La siguiente información es aplicable:

  • Lanzamiento de CentOS 6.6 (Final)
  • Cliente de Call of Duty 4, versión 1.7
  • Servidor Call of Duty 4, CoD4 MP 1.7 build linux-i386 28 de junio de 2008
  • El servidor utiliza direcciones IP virtuales (eth0: 0 / eth0: 1)
  • Todas las interfaces del servidor tienen BROADCAST habilitado.
  • Selinux ha sido deshabilitado con fines de prueba.

¿Hay alguna manera de permitir explícitamente esto en CentOS o habría otro posible origen para este problema?

¡Gracias!

Jona Koudijs
fuente
No utilice alias de interfaz obsoletos de estilo antiguo. Configurarlos en la forma actual en su lugar.
Michael Hampton
¿Su máscara de red es diferente a 255.255.255.0? Consulte con ifconfig.
psusi
Gracias por la sugerencia de Michael, lo configuré con ip pero eso no hace la diferencia. @psusi Todas las IP configuradas tienen una máscara de red de 255.255.255.0 configurada.
Jona Koudijs

Respuestas:

0

Después de buscar durante unos días más, llegué a la conclusión de que se trata de errores en el software del servidor del juego. Cuando el software del servidor de juegos está configurado con una IP específica en el sistema, se niega a hacer nada con los paquetes de transmisión entrantes.

Por ahora configuré puertos separados por aplicación en lugar de direcciones IP y usaré una forma de virtualización basada en contenedores para separar las aplicaciones del servidor de juegos.

Jona Koudijs
fuente