¿Puede forzar un puerto hacia adelante sin acceso al enrutador y UPNP probablemente apagado?

StackOverflow https://stackoverflow.com/questions/19836475

  •  25-07-2022
  •  | 
  •  

Pregunta

Quiero que reenvíe un puerto para mi servidor web en un enrutador al que no tengo acceso. Dudo mucho que UPNP esté habilitado.

¿Fue útil?

Solución

En realidad, puedes (más o menos)

Es un poco complicado y no funcionará todo el tiempo, pero aquí está la esencia de cómo funciona:

Dado:

Routera con IP pública 1.2.3.4

PC1 con IP ABCD privado (detrás del enrutador A)

Routerb con IP pública 5.6.7.8

PC2 con IP private EFGH (detrás del enrutador b)

Ahora, dada una solución ideal (es decir, no Pat) ...

Paso A:

Envíe cualquier mensaje desde PC1 en cualquier puerto (10000 para este ejemplo) al IP público para RouterB (4.5.6.7). Esto registrará ABCD: 10000 -> 4.5.6.7:10000 en el NAT y PAT para Routera. Routerb descartará este paquete (como se esperaba porque no se solicitó).

Paso B: Al mismo tiempo, envíe continuamente un paquete de PC2 al IP público del enrutador A (1.2.3.4) en el mismo puerto (10000). Esto registrará EGFH: 10000 -> 1.2.3.4:10000 en Routerb's Nat y Pat.

Paso C:

Ahora, aquí es donde sucede la magia:

PC2 está constantemente enviando el paquete a Routera, manteniendo el 'agujero' abierto en el enrutador para que regrese una respuesta. Cuando PC1 envíe su único paquete a RouterB, parecerá que Routerb como respuesta y, por lo tanto, se reenviará a PC2. Una vez que PC2 recibe esta 'respuesta', asegúrese de que se apague un paquete más y deje de enviar paquetes continuos. ¡Este último paquete actuará como 'respuesta' a PC1 y pasará por el 'agujero' creado en el paso A. y voila! Ahora tienes NAT Transversal. Solo necesita enviar un solo paquete cada minuto más o menos, ambas direcciones para mantener el 'agujero' abierto.

Nota: Esto solo funciona con UDP, ya que es sin conexión (los paquetes caídos están bien).

Ahora, casi todos los enrutadores usan PAT, por lo que debe 'adivinar' qué puerto 'responder' a la mayoría de los enrutadores hará una compensación de +-10 (IEAbcd: 10000 -> 5.6.7.8:10010).

Simplemente intente algunos en ese rango (-10 a +10 hasta que obtenga una respuesta)

El resto de los enrutadores son aleatorios en su palmadita. Si es así, estás jodido ... prueba la otra dirección (es decir, inicia la conexión en la otra dirección). Si eso falla, no puedes conectarte ... lo siento)

Otros consejos

Entonces, por lo que entiendo, tiene un servidor web que se ejecuta donde las cosas deben reenviarse y un puerto de enrutador al que no tiene acceso; Y quieres conectar estos dos.

Dudo mucho que haya una manera de hacer esto, si solo tuvieras acceso a su enrutador, puedes usar iptables para redirigir

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top