es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Exponer el cliente detrás de NAT a internet mediante el uso de un servidor proxy inverso público (con acceso a internet).

Quiero entender la teoría de cómo exponer clientes detrás de NAT a través de un servidor público, por ejemplo, para usar el cliente como un proxy (preferiblemente SOCKS5). Sería ideal encontrar una solución lista, pero la teoría sería suficiente.

Para explicar lo que quiero decir. El cliente detrás del NAT no escucha directamente en TCP. Simplemente abre una conexión TCP al servidor público que debería exponer al cliente. El proxy SOCKS5 en el cliente detrás del NAT no está expuesto directamente, por lo que la conexión TCP marcada debería comportarse de alguna manera como un oyente TCP.

Si un cliente detrás de NAT se conecta a un servidor público, ¿cómo se conectan otros usuarios y cómo debo reenviar las solicitudes?

Creo que básicamente es la misma técnica que utiliza TeamViewer:

“Al establecer una sesión, TeamViewer determina el tipo óptimo de conexión. Después del saludo a través de nuestros servidores maestros, se establece una conexión directa a través de UDP o TCP en el 70% de los casos (incluso detrás de pasarelas estándar, NAT y firewalls). El resto de las conexiones se enrutan a través de nuestra red de enrutadores altamente redundante mediante TCP o túneles https. No es necesario abrir puertos para trabajar con TeamViewer”.

Pero, ¿cómo exactamente?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El proceso de exponer clientes detrás de NAT a través de un servidor público implica una técnica llamada Hole Punching. Esta técnica aprovecha el hecho de que los enrutadores NAT llevan un registro de las conexiones salientes y pueden permitir tráfico entrante si coincide con la conexión saliente original.

    Para exponer un cliente detrás de NAT, el cliente primero establece una conexión con el servidor público. El servidor público luego envía una solicitud al enrutador NAT para abrir un puerto para tráfico entrante. El enrutador NAT abre el puerto y lo mapea a la conexión saliente original.

    Cuando otro usuario intenta conectarse al cliente detrás de NAT, la solicitud se envía al servidor público. El servidor público luego reenvía la solicitud al cliente detrás de NAT utilizando el puerto abierto. El cliente recibe la solicitud y puede responder como si tuviera una dirección IP pública.

    Para utilizar el cliente como un proxy (preferiblemente SOCKS5), el cliente detrás de NAT debe tener un servidor proxy SOCKS5 en funcionamiento. El servidor público debe luego reenviar las solicitudes entrantes al servidor proxy SOCKS5 que se ejecuta en el cliente.

    Las soluciones predefinidas para esta técnica incluyen Pwnat y Epiphany. Pwnat es una herramienta que se puede utilizar para abrir agujeros en NAT y exponer clientes. Epiphany es una solución predefinida que utiliza Pwnat y permite utilizar clientes detrás de NAT como proxies SOCKS5.

    En resumen, Hole Punching es una técnica utilizada para exponer clientes detrás de NAT a través de un servidor público. Implica abrir un puerto en el enrutador NAT y mapearlo a la conexión saliente original. Soluciones predefinidas como Epiphany se pueden utilizar para utilizar clientes detrás de NAT como proxies SOCKS5.

Comments are closed.