Cómo hacer un puerto hacia adelante en Mac OS X

36

Me gustaría hacer que todas las conexiones entrantes al puerto 1000 de mi host (IP: 200.234.XXX.XXX) se envíen al puerto 80 en el host 10.211.55.5

¿Cómo puedo hacerlo en mi host? Está ejecutando Mac OS X 10.5.8

Daniel Cukier
fuente
ah, también estás corriendo paralelos, ¿tienes el mismo problema que yo? :)
LearnCocos2D

Respuestas:

30

Muy simple de hacer, en primer lugar, deberá habilitar el servicio de inicio de sesión remoto en su Mac ( Preferencias del sistema -> Compartir -> Inicio de sesión remoto ). Esto inicia su servidor ssh.

Luego ejecute el siguiente comando en su Terminal OS X:

ssh -L 200.234.XXX.XXX:10000:10.211.55.5:80 -N 127.0.0.1

Es posible que deba aceptar la huella digital del servidor inicialmente y escribir su contraseña local para iniciar sesión en ssh. (También puede configurar una clave pública / privada ssh local a local para que no solicite una contraseña, lo dejará como un ejercicio para el lector).

El formato es:

ssh -L local_addr:local_port:remote_addr:remote_port -N 127.0.0.1
Mario
fuente
¿Podemos hacerlo si el puerto 22 no está abierto?
Afshin Moazami
1
Necesitas conectarte de alguna manera. Pero siempre puedes ejecutar ssh en otro puerto ... ¿quizás puerto http? o el puerto BIND (DNS)? Esos están mayormente abiertos en firewalls.
Marius
10

Muy simple usando la herramienta versátil ncat:

sudo ncat --sh-exec "ncat 10.211.55.5 80" -l 1000 --keep-open

Obtenga los binarios de ncat / nmap para Mac OS X del sitio web oficial: http://nmap.org/download.html#macosx

EDITAR: agregado sudo para escuchar en un puerto restringido <1024

Tony Baguette
fuente
1
Gracias. ¡es muy simple además no necesita reiniciar!
verystrongjoe
Además, no necesita iniciar el servidor SSH en su macOS.
Tony Baguette
5

Suponiendo que tiene un enrutador UPnP, es fácil configurar puertos utilizando PortMap

Tiene una interfaz de usuario muy simple.

texto alternativo

Alexis Hirst
fuente
¿Por qué tu imagen es tan pequeña?
barlop
3

Bueno, puedo decirte cómo hago ese tipo de cosas en mi sistema Mac OS X 10.5.8.

Comencé con una respuesta sobre NAT, pero creo que en realidad quieres un programa reenviador TCP (mencionas 'proxy' y reenvío de puertos).

Hay algunas formas de hacerlo, dependiendo de sus necesidades, incluso 'SSH' puede ser puesto en acción, aunque mi forma corta y dulce favorita es un script Perl tcpforward .

Si necesita alguna manipulación de HTTP (es posible que necesite ajustar las redirecciones de HTTP, de modo que cuando una solicitud llegue a una URL sin un '/' final no sea redirigido al servidor real, inaccesible), entonces Apache puede hacer el trabajo de un proxy inverso. Querrá ver mod_proxy y específicamente ProxyPass y ProxyPassReverse. No no permitirá ProxyRequests, que es para el proxy hacia delante. Debería ser posible usar el propio Apache de Mac OS para hacer esto, si lo tiene funcionando. Viene con mod_proxy y /etc/httpd/httpd.conf es el archivo de configuración para actualizar.

Incluso con Apache, debe asegurarse de que todos los enlaces en el contenido del servidor real sean relativos, si hacen referencia al servidor real, entonces podría probar el módulo mod_proxy_html (no tengo experiencia de qué tan bien funciona).

jrg
fuente
+1 para tcpforward, Perl nunca deja de ser útil.
Steve Kehlet
0

¿Su máquina está conectada directamente a Internet (es decir, sin enrutador)? Normalmente realiza el reenvío de puertos en el enrutador, pero si utiliza un módem para conectarse directamente, iptables es probablemente la mejor manera.

Dentrasi
fuente
No tengo idea de por qué esto fue rechazado porque es la verdad.
Hasaan Chop el
44
@HasaanChop Esto es rechazado porque no es útil. Si detalla exactamente cómo usar iptablespara lograr lo que la pregunta formula, eso podría ser útil.
Jon-Eric
No hay iptables en mac os x.
nombre_1
-1

Aquí hay un buen artículo: http://www.cyberhq.nl/article/384/port-forwarding-in-macos-x

Pero dado que está reenviando a 80, supongo que desea que vaya a un servidor web, así que simplemente cambiaría la configuración del servidor web para configurar un proxy inverso o algo así.

Nisse Engström
fuente
66
Parece que el enlace está roto
Jochen Bedersdorfer