No se puede acceder al servidor Sinatra local desde otro equipo en la misma red


Tengo un servidor Sinatra simple que corro a través de textmate pero no puedo acceder desde otro equipo en la misma red.

Estoy ejecutando Ruby 1.9.3p327 y Sinatra 1.4.1 en un Mac OS 10.8.3. El firewall está desactivado.

Probé el mismo escenario en diferentes redes y computadoras.

La computadora responde a pings simples pero cuando intento telnet puerto 4567 no puedo establecer una conexión.

Author: marco-fiset, 2013-03-28

3 answers

Hubo un reciente commit a Sinatra que cambió la dirección de escucha predeterminada a localhost de 0.0.0.0 en modo de desarrollo debido a problemas de seguridad.

Para permitir explícitamente el acceso desde la red, debe ejecutar su aplicación en otro modo (por ejemplo, producción) o establecer el bind opción a 0.0.0.0.

Puede hacer esto desde la línea de comandos usando el servidor integrado usando la opción -o:

$ ./my_sinatra_file.rb -o 0.0.0.0
 87
Author: matt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-28 18:31:29

Asegúrese de que el servidor sinatra no esté escuchando solo en la dirección ip localhost (127.0.0.1).

 4
Author: DGM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-28 15:37:26

Estoy hablando con un poco de información extra que puede ayudar a la gente como yo golpeando sus cabezas contra la pared.

Estoy en una máquina Windows, no en una Mac, y tuve que abrir el puerto que estaba usando (el valor predeterminado para Sinatra es 4567) al público (aunque estoy en una red universitaria).

Para hacer esto en Windows 10:

  1. Pulse la tecla de Windows
  2. Busque firewall y presione enter
  3. Vaya a configuración avanzada
  4. Haga clic en reglas de entrada en la parte superior izquierda
  5. Haga clic en nueva regla en la parte superior derecha
  6. Haga clic en la opción puerto
  7. Introduzca su puerto (probablemente 4567 para Sinatra)
  8. Siguiente
  9. Y ahora elige entre dominio/privado/público.

Ahora otra cosa a considerar es quién puede acceder a su servidor web. Si quieres a alguien, elige público. No estoy seguro (y me encantaría la entrada de otros) cómo conseguir que solo los dispositivos en la misma red pública se conecten. También puede permitir IPS específicas a través, pero para que yo sugiera que investigue por su cuenta.

 0
Author: Jellio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-12 21:51:26