¿Por qué es tan difícil crear un servidor de Counter?

Sí, también explico cómo hacerlo

Laski
10 min readApr 2, 2020

Con todo esto de la cuarentena varios volvimos a jugar al Counter Strike original, un mod del Half-Life que en el 2000 se convirtió en un juego propiamente dicho. Y lógicamente varios quisimos “crear” una partida como hacíamos en el cyber, pero esta vez tratando de que nuestros amigos se puedan conectar sin salir de sus casas.

che quien tiene la bomba dale loco no se hagan los boludos

Como siempre intento aprovechar las oportunidades sociales para democratizar el conocimiento, antes de pasar a los tiros quiero contar por qué es tan difícil crear un servidor en primer lugar. Y voy a empezar por decir que en realidad lo difícil no es crear un servidor: la opción aparece arriba de todo y apenas abrís el juego. Lo difícil es que tus amigos lo “vean” y puedan entrar. ¿Por qué?

Internet se basa en un montón de reglas y convenciones, llamadas protocolos, que sirven para que dos o más máquinas puedan hablar entre sí. Quizás el más importante de todos sea el Protocolo de Internet, o IP por sus siglas en inglés. ¿Te suena?

Seguramente escuchaste hablar aunque sea de la dirección IP, que son los numeritos que internet usa para identificar cada máquina en toda la red. Son cuatro números que van de 0 a 255 cada uno y que se suelen escribir separados por puntos, tipo 192.168.0.1. Pensalos como el “número de teléfono” de cada computadora.

La primera opción de todas es para crear un servidor. Foto: Valve Corporation

Algo importante de la red de teléfonos es que, por razones obvias, no puede haber dos teléfonos con el mismo número. Con internet pasa exactamente lo mismo: nunca debería haber dos computadoras con la misma IP, porque la red no sabría a cuál de las dos “llamar”.

El problema es que el protocolo es de principios de los 80s, y sus creadores no previeron muy bien la popularidad que iba a tener internet. Si recordás algo de combinatoria y estás tan aburrido como para hacer la cuenta seguramente ya te diste cuenta de que algo no cierra: hay disponibles 256⁴ direcciones IP, o sea poco más de 4 mil millones, pero en el mundo ya somos casi 8 mil millones de personas. Y ahora no solo las computadoras están conectadas a internet, sino también celulares, televisores, consolas y hasta parlantes o cafeteras.

Para 2025 pareciera que va a haber más “smart home devices” que celulares, mirá vos.

Pero Laski, ¿por qué no aumentamos la cantidad de numeritos de la IP y listo?

Muy buena pregunta, interlocutor imaginario creado pura y exclusivamente con fines didácticos. La respuesta corta es “estamos en eso”. Pero para cambiar el protocolo hace falta actualizar todos los dispositivos que sostienen la internet, y eso es un montón de laburo y tiempo.

Pero seguro ya superamos los 4 mil millones de aparatos conectados. ¿Cómo lo logramos?

Efectivamente, la mayoría de las estimaciones que vi dicen que estamos entre 30 y 50 mil millones de dispositivos conectados. Hace rato ya que no hay manera de que todos tengan una dirección IP única.

En 2013 ya quedaban muy pocas IPs sin asignar (son los rectángulos negros).

La idea para solucionarlo es tan sencilla como genial, y quizás sea lo más importante que vas a aprender hoy: en lugar de darle una IP a cada dispositivo, le damos solamente una IP a cada casa y que por adentro se arreglen como puedan.

¿Cómo “como puedan”? Yo no sé nada de esto y sin embargo estoy conectado a internet, fumándome este artículo en lugar de estar tirando tiros.

Calma, IICPyEcFD, nos estamos acercando al problema principal. Podés leer esto porque tenés un aparato llamado router al que le llegan todos los mensajes que van a la IP de tu casa, y que sabe hacer de “nexo” entre tu compu (o celular) y el servidor de Medium donde está guardado este artículo.

Muy simplificadamente, cuando querés entrar a una página web:

  1. Tu compu le pide la página al router.
  2. El router va y le pide a “internet” que busque esa página y se la mande cuando la tenga.
  3. A su vez, el router “anota” en algún lado que fuiste vos el que pidió esa página y sigue haciendo su vida de router.
  4. “Internet” te manda la página. ¿Adónde? A la IP de tu casa, que es al único lugar adonde te la puede mandar. Y le va a llegar a tu router.
  5. Cuando le llega tu página, el router se fija en su “tablita de pedidos”, ve que fuiste vos quien pidió esa boludez y, juzgándote en silencio, se la manda a tu compu.

Es decir, el router hace lo que su nombre indica: rutea los pedidos a internet y sus respuestas. Y si venías diciéndole modem no está mal, hace rato ya que el mismo aparato hace las dos cosas.

Lo que sí está mal es decirle CPU a esto.

Quizás ya estés viendo el problema: con un servidor de Counter (o de cualquier otra cosa) el sentido de la comunicación se invierte. Los “pedidos” vienen de internet (de las compus de tus amigos) y es tu compu la que debería responder. Pero por más que le pases la IP de tu casa a tus amigos, los pedidos no le van a llegar a tu compu… sino a tu router. Que va a ir obediente a consultar su tablita, pero no va a encontrar nada: tu compu nunca pidió que le manden algo. Así que va a ignorar los pedidos y, un poco más desconcertado que antes, seguir con su vida de router.

Si querés saber qué pasa afuera de tu casa para que puedas leer esto, te súper recomiendo esta charla de mi colega y amigo Manu Giménez.

¿Entonces cómo es que hay gente que puede tener servidores en sus casas? Y me pasan una IP y yo me puedo conectar.

Ya va, ya va. Necesitamos entender una sola cosa más antes: cómo hacen para hablar entre el router y tu compu.

¿Cómo hacen para hablar el router y mi compu?

Ah, qué sorpresa que me lo preguntes. Resulta que para hablar entre ellos los dispositivos de tu casa también usan el protocolo de internet. O sea que cada dispositivo de tu casa también tiene una IP propia, pero esta IP es “interna”: solo hace falta que sea única entre los dispositivos de tu casa. Obviamente, esa dirección no sirve para hablar con el mundo. A ese tipo de IPs las llamamos privadas. Las IPs que sí son únicas en todo internet se llaman públicas. La IP de tu casa es una IP pública.

Una consecuencia interesante de esto es que tu router “escucha” siempre en dos IPs: una pública para hablar con el mundo y otra privada para hablar con las compus y celulares de tu casa. Lo que veníamos llamando “IP de tu casa” no es más que la IP pública de tu router.

Un router haciendo su vida de router. Foto: Misha Feshchak

Ah, en alguna guía leí algo de ‘IP pública’ y no sabía lo que era. Ahora ya lo sé, aunque sigo sin poder tirar tiros.

Volvamos entonces: lo que necesitamos es que tu router sepa que cuando le llega un pedido para el Counter se lo tiene que mandar a tu compu. En otras palabras, necesitamos anotarle a mano en la tablita que usa para repartir los paquetes (sin comillas porque posta se llaman así) que le llegan.

Para saber adónde mandar un paquete tu router usa algo llamado puertos, otro numerito más que sirve para identificar conexiones o, en este caso, aplicaciones que se quieren conectar. Los puertos suelen adjuntarse a las direcciones IP con un “:”, quedando algo así: 192.168.0.1:80. Hay puertos ya establecidos para casi cualquier aplicación que necesite internet, y el Counter no se queda atrás: usa el puerto 27015.

Siguiendo con nuestra analogía de los números de teléfono, el puerto sería algo así como el número de interno de una empresa grande. La IP pública es el teléfono al que llamás primero, el puerto te dice a qué equipo de teléfono específico querés comunicarte.

En resumen, queremos decirle a tu router que mande todos los paquetes que vengan con puerto=27015 a tu compu. A este proceso se le llama “abrir puertos” o “redirigir puertos” (lo vas a encontrar mucho como “port forward”).

Por fin siento que estamos llegando a algún lado. ¿Cómo edito la *#%& tablita?

Esto ya depende de tu red interna, pero vamos a averiguarlo. Necesitamos saber cuatro cosas: la IP privada de tu router, la IP de tu compu, la IP pública de tu casa/router, y el puerto que necesita el Counter.

  • La IP privada de tu router

Hay un 99% de chances de que sea alguna de estas dos: 192.168.1.1 o 192.168.0.1. La mejor manera de averiguar cuál es la fuerza bruta: entrar a esos dos links y esperar. Alguno de los dos te va a llevar a una página bastante fea. El otro se va a quedar colgado sin respuesta. Tu router es el de la página fea. Dejala abierta, la vamos a usar muy pronto.

Te dije que era fea
  • La IP de tu compu

Pregunta de parcial: ¿por qué no dije “la IP privada de tu compu”? Dale, respondé “porque es la única que tiene” así me creo que estás aprendiendo algo.

La manera más fácil de averiguarla (y la única que conozco) implica usar la terminal, pero te juro que es más fácil de lo que suena. En Windows hay que apretar el botón del menú (antes llamado “Inicio”), tipear cmd y abrir la primera opción. En Mac y en Linux, buscá terminal en el buscador de aplicaciones y elegí el primer resultado.

Una vez en la consola escribí

ipconfig

(ifconfig en Mac o en Linux) y dale enter. Te van a aparecer casi seguramente tres IPs: una es la de tu router (si no hiciste el paso anterior ahora la sabés), la otra es 255.255.255.0, y la tercera es la de tu compu. Si te mareaste: la de tu compu nunca va a terminar en .0 ni en .1.

Casi hacker

En mi caso la IP de mi compu es 192.168.0.201 . Anotala o dejá la consola abierta para consultarla en un ratito.

  • El puerto que usa el Counter.

Como dije arriba, es el 27015.

  • La IP pública de tu casa/router.

Preguntásela a Google.

Ya casi puedo escuchar esos tiros.

Volvamos a la página fea. Si te fuiste, alcanza con poner la IP privada de tu router en cualquier navegador. Te va a pedir un usuario y contraseña. Salvo que vivas con alguien que sabe del tema (en cuyo caso podrías haberle preguntado en lugar de perder media hora leyéndome a mí) va a seguir teniendo la contraseña default. Que no sé cuál será, pero esa página también te va a decir el modelo del router, con lo cual podés encontrar muy rápido la contraseña buscándolo en Google (y quizás agregando “default password”).

Mi propia búsqueda después de mudarme

Una vez adentro del router vamos a buscar la tablita. Esto también depende del modelo. La opción va a estar escondida atrás de algún nombre tipo “Applications & Gaming”, “Virtual server”, “Port forwarding”, etc. Acá lo mejor es buscar y buscar entre todos los menús y submenús hasta ver algo que se le parezca, pero si estás muy perdide esta página tiene guías para un montón de routers (ignorá las publicidades del programa que venden a 40 dólares solo para hacer esto).

Y ahora ya sabés lo que hay que hacer: decirle al router que mande los pedidos que lleguen al puerto 27015 a la IP privada de tu compu (en mi ejemplo 192.168.0.201).

The bomb has been planted

Algunos obstáculos menores con los que te podés chocar:

  • Es posible que les pregunte un “start port” y un “end port”. Eso es para redirigir un rango de puertos. En este caso alcanza con poner el mismo en ambos, como hice yo.
  • Si les pregunta TCP o UDP poné ambos, aunque esto implique crear dos filas distintas (mi router me deja simplemente poner “both”).
  • No te olvides de guardar los cambios.

Dale que arrancaaaa

Abrite el Counter, elegí “New game” (o como sea que lo tradujeron si lo tenés en español), configuralo como te parezca mejor y andá subiendo una latita al freezer.

Una vez adentro del mapa solo falta decirle al juego que acepte jugadores de afuera de tu red privada (por suerte ya sabés lo que significa eso). Abrí la consola del juego (apretando el botón que está encima del Tab y a la izquierda del 1), escribí

sv_lan 0

y dale enter. No debería responderte nada (en el idioma de las consolas eso significa que funcionó bien).

Ya podés darle a tus amigos tu IP pública para que te busquen. Deciles que la tienen que pegar en Find games -> Favorites -> Add a server.

Y no cuelgues la latita que se te va a congelar.

--

--