Tengo un dispositivo Android y quiero conectarme a través de 3G/4G y me sale conexión rechazada.
¿Alguna idea de cómo hacerlo?
Tengo un dispositivo Android y quiero conectarme a través de 3G/4G y me sale conexión rechazada.
¿Alguna idea de cómo hacerlo?
Si tienes un servidor SSH funcionando en un dispositivo Android, puedes conectarte a él en una red local/privada sin problemas (después de configurar la autenticación apropiada, obviamente). Lo mismo puede ser cierto para una red pública (internet) si tu teléfono tiene una dirección IP pública real (no creo que eso suceda en la Tierra). Sin embargo, cuando necesitas cruzar redes, es decir, atravesar puertas de enlace y enrutadores, se involucra la Traducción de Direcciones de Red. No podrás acceder a tu dispositivo desde internet si tu servidor SSH no puede exponerse a una dirección IP pública.
¿QUÉ ES NAT Y PAT?
En palabras simples, NAT es la traducción de la IP de origen desde una dirección privada a una pública - enrutable; lo que llaman - dirección cuando un paquete IP abandona el enrutador, para que el paquete pueda ser enviado de vuelta con una dirección IP identificable. Lo inverso ocurre cuando se recibe la respuesta para el mismo paquete en el enrutador. Significaría hacer un mapeo de la IP privada de cada host (teléfono, PC, etc.) en la red local a una IP pública única. Pero en casos habituales, solo tenemos una IP pública asignada por el ISP. Por lo tanto, entra en acción la Traducción de Direcciones de Puertos. PAT traduce cada dirección IP local a la misma dirección IP pública pero con un puerto único.
¿QUÉ ES CGNAT?
Para abordar el problema de la escasez de direcciones IP, los Proveedores de Servicios de Internet también realizan NAT, llamado NAT de Grado de Operador. Esto significa que la dirección IP asignada por el ISP a ti no es una IP pública sino privada. Esta es una situación definitiva con los Datos Móviles, es decir, en 3G/4G, pero menos común con las conexiones DSL.
Si la IP asignada a tu teléfono por el ISP (puedes verificarlo con el comando ip address | grep inet
) es diferente a la que se muestra aquí, estás detrás de un CGNAT. De manera similar para el enrutador Wi-Fi, la dirección IP que aparece en Configuración de Conexión PPP Connection Settings debe coincidir con la IP pública.
DIRECCIÓN IP DINÁMICA:
Para utilizar al máximo el grupo disponible de direcciones IP, los ISP generalmente asignan una dirección IP dinámica incluso cuando no hay CGNAT. Por lo tanto, la IP pública sigue cambiando de forma diaria, semanal, mensual o aleatoria, dependiendo de la política del ISP.
IPv6 es el protocolo próximo que no necesitará NAT y cada host de red en la Tierra podrá tener una dirección IP única.
SOLUCIÓN:
Ahora, pasando a tu pregunta:
Si no hay CGNAT, podemos abordar el problema del NAT del enrutador DSL/3G/4G configurando Reenvío de Puertos. Pero esta opción no funciona si:
El problema de la IP Dinámica se puede resolver registrándote en un servicio de DDNS. Te asigna un nombre de dominio que siempre se resuelve con tu IP pública actual. DynuDNS es un servicio gratuito que funciona perfectamente para mí. Tendrás que instalar su software en tu teléfono o PC para mantenerlos actualizados con tu IP pública.
En cuanto al CGNAT:
Si optas por la última opción (configurar un servidor SSH o VPN personal con una dirección IP pública/estática/dedicada), sigue los pasos a continuación para reenviar un puerto específico desde el servidor SSH/VPN a tu teléfono:
SSH:
Con un servidor SSH configurado, puedes crear un túnel de Reenvío de Puertos Inverso
desde tu teléfono. Nota que no puedes reenviar el puerto SSH predeterminado del servidor remoto (22) al puerto 22 de tu teléfono si te estás conectando al servidor en el mismo puerto.
Asegúrate de que GatewayPorts yes
y AllowTcpForwarding yes
estén configurados en sshd_config
en el servidor, para que sshd permita el reenvío de puertos y acepte conexiones desde el público. Ahora en tu teléfono crea un túnel inverso:
~$ ssh -NTR 2222:localhost:22 @
Puedes hacer que el túnel ssh
sea persistente usando autossh o alguna aplicación como ConnectBot
si lo deseas.
Para más opciones, consulta esta respuesta.
VPN:
Desde tu teléfono, conéctate al servidor VPN utilizando una aplicación de VPN. Cuando estés en una Red Privada Virtual (VPN), tanto el servidor como el teléfono se convierten en parte de una red local, así que simplemente aplica iptables DNAT
para reenviar el puerto específico a la IP de tu teléfono:
~# iptables -t nat -I PREROUTING -p tcp --dport 2222 -j DNAT --to :22
El Reenvío de IP también es necesario en el servidor, que probablemente ya se haya configurado durante la configuración del servidor VPN:
~# echo 1 >/proc/sys/net/ipv4/ip_forward
~# iptables -I FORWARD -d -j ACCEPT
~# iptables -I FORWARD -s -j ACCEPT
Ahora puedes hacer ssh
desde cualquier host en internet a tu teléfono:
~$ ssh @ -p 2222
Iniciarás sesión en tu teléfono después de la autenticación.
Expliqué aquí el ejemplo de SSH. De la misma manera, puedes ejecutar cualquier otro servidor en tu teléfono y reenviar su puerto desde el servidor SSH/VPN (con IP pública) a tu teléfono (sin IP pública) para que tu servidor sea accesible desde internet.
RELACIONADO:
Solo un apéndice a la sección "VPN": Solo el teléfono en el que se está ejecutando el servidor debe utilizar una conexión VPN si la VPN utilizada proporciona una IP pública al teléfono (a menudo denominada IP estática o dedicada). En tal caso, el cliente podría utilizar la IP pública ofrecida por la VPN y acceder al servicio ssh ofrecido. Hay proveedores de VPN públicos que ofrecen este tipo de servicio de VPN.
No necesitas dos conexiones VPN. Escribiste que deberían estar ubicadas en la misma red local. Pero no tiene que ser una red local, el mismo Internet también es válido. Si el dispositivo de servidor se encuentra con una IP pública en Internet, el segundo dispositivo no necesita una conexión VPN.
PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.
1 votos
¿Estás seguro de que tu dispositivo tiene una dirección IP pública? El número de operadores de red móvil que proporcionan una IPv4 pública por dispositivo es muy pequeño y a menudo se limita a ciertos contratos comerciales o de IoT. Por lo tanto, es muy probable que tu dispositivo esté detrás de una puerta de enlace NAT, por lo que las conexiones entrantes no son posibles.
1 votos
Sí, está detrás de NAT y estaba esperando si hay alguna manera de hacer esto a través de un túnel inverso. Gracias Robert.
0 votos
Duplicado: android.stackexchange.com/q/89019/218526