Tengo un servicio HTTP vinculado al puerto 8000 al que quiero acceder desde otra computadora en la red, pero parece que no puedo conectarme usando la dirección IP externa de la máquina (por ejemplo, 192.168.0.105). Revisé que el firewall de OS X no se esté ejecutando, por lo que supongo que el problema es que el servicio solo está vinculado a la dirección IP 127.0.0.1 y no a la dirección IP externa.
¿Cuál sería la forma más sencilla de reenviar temporalmente conexiones externas en el puerto 8000 al 127.0.0.1:8000?
Respuesta1
La forma más fácil y rápida de hacer que los puertos vinculados localmente estén disponibles para la interfaz pública sin reconfigurar el servicio subyacente es crear un reenvío de puertos ssh y hacerlo disponible globalmente (de forma predeterminada, solo escucha localmente).
Como es la misma máquina, tendrás que usar puertos diferentes. En la Mac donde se ejecuta el servicio, inicie
ssh -v -g -L 8001:localhost:8000 localhost
-v
para detallado, para que veas las conexiones entrantes
-g
para que esté disponible en la interfaz pública
-L port:targethost:targetport
Bueno, eso ya lo sabes :-)
en caso de que tenga más de una interfaz activa en la máquina, extienda la -L
declaración para incluir la dirección a la que desea vincularla.
Respuesta2
Utilice ipfw, le gustan los iptables en Linux.
Supongo que estás utilizando el puerto ssh para reenviar un servicio a tu local.
ipfw add fwd 127.0.0.1,8000 tcp from any to 192.168.0.105 dst-port 8000
La otra máquina en la red puede acceder al servicio a través de 192.168.0.105:8000
Respuesta3
Si entiendo correctamente,CalamarPodría funcionar. Además, pruebe con el nombre de la computadora en lugar de la IP o algún otro servicio (ping, VNC, FTP, etc.)
Respuesta4
Primero, asegúrese de buscar el problema correcto. Puede comprobar qué IP está escuchando el servidor web con el netstat
comando:
$ netstat -an | grep LISTEN
tcp46 0 0 *.8000 *.* LISTEN
tcp4 0 0 *.88 *.* LISTEN
tcp6 0 0 *.88 *.* LISTEN
tcp4 0 0 127.0.0.1.631 *.* LISTEN
tcp6 0 0 ::1.631 *.* LISTEN
En la primera línea de este ejemplo, "*.8000" significa que algo (presumiblemente el servidor web) está escuchando en el puerto 8000 en todas las IP vinculadas. Por otro lado, las dos últimas líneas significan que algo está escuchando en el puerto 631 en los loopbacks IPv4 e IPv6 (127.0.0.1 y ::). Si ve "127.0.0.1:8000" cuando ejecuta el comando, significa que está en el camino correcto en su diagnóstico.
Si este es el problema, probablemente sea mejor resolverlo vinculando el servidor web a todas las IP, en lugar de intentar solucionarlo con un reenviador. Verifique su(s) archivo(s) de configuración de Apache (el valor predeterminado en OS X es /etc/apache2/httpd.conf, además de todo lo que está "Incluido" en él) para ver las directivas de "Escuchar". Si tú ves
Listen 127.0.0.1:8000
cambiarlo a
Listen 8000