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


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

¿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


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


¿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).


+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.


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.