OS X: reenvío del puerto externo a la dirección de loopback local

OS X: reenvío del puerto externo a la dirección de loopback local

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

-vpara detallado, para que veas las conexiones entrantes

-gpara que esté disponible en la interfaz pública

-L port:targethost:targetportBueno, eso ya lo sabes :-)

en caso de que tenga más de una interfaz activa en la máquina, extienda la -Ldeclaració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 netstatcomando:

$ 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

información relacionada