¿Cómo hago que un servidor TCP funcione detrás de un enrutador (NAT) sin necesidad de configuración de redirección?

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

  •  19-09-2019
  •  | 
  •  

Pregunta

El escenario es el siguiente. Tengo dos máquinas A y B: A: Cliente (detrás de NAT) B: Servidor (detrás de NAT)

Quiero que B pueda escuchar en un puerto dado, para que A pueda enviar paquetes a B a través de ese puerto TCP específico y recibir cualquier respuesta. Si ambas máquinas no están detrás de un NAT, es un proceso de Foward bastante recto. Sin embargo, ¿cómo hago que funcione para que funcione incluso cuando B está detrás de un enrutador, sin que tenga que cambiar la configuración del enrutador, habilite algún reenvío de puertos, etc.

Por ejemplo, ¿cómo funcionan los programas entre pares como los clientes de Torrent sin que el usuario tenga nada que configurar?

¿Fue útil?

Solución

Una alternativa a un servidor proxy es un servidor de emparejamiento. En lugar de representar todo el tráfico, el fabricante de partidos solo negocia hasta que los compañeros puedan hablar entre ellos. Esto implica encontrar las IP públicas externas de los compañeros y hablar con cada uno para que el firewall/enrutador sepa que los compañeros desean comunicarse.

Se llama perforación Y a menudo tiene que ser realizado por el fabricante de partidos en lugar de los compañeros mismos. Sin embargo, una vez que se perfora el agujero, el fabricante de partidos puede decirle a los compañeros unos de otros y pueden comunicarse directamente.

Otros consejos

Para responder al ejemplo de programas de pares a pares, y en general: se llama tecnología llamada Plug and play universal que los enrutadores NAT pueden usar para permitir que los clientes detrás de ellos expongan puertos al exterior. Eso es lo que los clientes de BitTorrent pueden usar para que los otros clientes puedan conectarse directamente a ellos.

Tendrás que:

  1. Configure el reenvío del puerto desde la puerta de enlace NAT en frente del servidor en la máquina que su software de servidor se está ejecutando, y haga que el cliente se conecte a la dirección IP de esa puerta de enlace.

  2. Cree un servidor proxy sentado entre el 2 Nat Gatewys para que tanto su servidor como su cliente puedan conectarse a eso. Tanto su servidor como su cliente tienen que configurar una conexión a ese proxy que mediará los datos entre esas 2 conexiones.

El perforación de agujeros está moderadamente bien entendido para la comunicación UDP, pero también se puede usar de manera confiable para configurar las transmisiones TCP de igual a igual. Aquí está el artículo bien detallado tanto en TCP como en UDP:

http://www.brynosaurus.com/pub/net/p2pnat/

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