gateway - tunel ssh l
¿Cómo consigo que Netcat acepte conexiones desde fuera de la LAN? (3)
Estoy usando netcat como backend para trasladar los datos de un programa que estoy haciendo. Probé mi programa en la red local y, una vez que funcionó, pensé que sería cuestión de simplemente reenviar un puerto desde mi enrutador para que mi programa funcione a través de Internet. ¡Ay! Este parece no ser el caso.
Si comienzo netcat escuchando en el puerto 6666 con:
nc -vv -l -p 6666
,
luego vaya a 127.0.0.1:6666
en un navegador, como se esperaba, veo una solicitud GET de HTTP que llega a través de netcat (y mi navegador espera en vano). Si voy a my.external.ip.address:6666
, sin embargo, no aparece nada y el navegador muestra "no se pudo conectar a my.external.ip.address:6666
".
Sé que el puerto se reenvió correctamente, ya que www.canyouseeme.org dice que el puerto 6666 está abierto (y cuando netcat no está escuchando, está cerrado).
Si ejecuto netcat con -g my.adslmodem''s.local.address
para establecer la dirección de la puerta de enlace, obtengo el mismo comportamiento. ¿Estoy usando esta opción de línea de comando correctamente? ¿Alguna idea de lo que estoy haciendo mal?
Debes escuchar en la interfaz pública. Actualmente estás escuchando en localhost donde no se puede conectar nadie fuera de tu computadora.
Su kilometraje puede variar, pero con mi implementación de netcat tengo que usar esta línea de comandos para escuchar en todas las interfaces públicas.
ncat -vv -l 0.0.0.0 6666
Para especificar una dirección de escucha:
nc -l -s <LISTENING_IP_ADDR> -p <LISTENING_PORT>
Probado en un Debian Jessie con netcat-traditional-1.10-41
Resulta que no hay problema. Solo parece de esa manera porque mi enrutador no permite conexiones de horquilla. Es decir, aunque lo tengo configurado correctamente, el enrutador no haría la conexión cuando tanto el origen como el destino están detrás del NAT. Simplemente ncat -l -p 6666
funciona bien, siempre y cuando la solicitud provenga de fuera de la LAN. Para probar esto, my.external.ip.address:6666
a my.external.ip.address:6666
con mi teléfono móvil 3G y, por supuesto, my.external.ip.address:6666
una solicitud HTTP :)
Esta respuesta provino de: una pregunta de serverfault , que es donde debería haber hecho esta pregunta en primer lugar. Disculpas por eso.