Pregunta

Estoy muy interesado en al menos intentar implementar el avance NAT para mi proyecto senior. (Estoy haciendo una API de red). Ni siquiera es un requisito de mi proyecto, solo un interés mío. Sé lo básico de cómo funciona, corrígeme si me equivoco: Dos clientes se conectan a un servidor que no está detrás de un NAT y este servidor, conociendo la IP de estos dos clientes, les dice a los clientes que se conecten entre sí al mismo tiempo. Por lo tanto, el "Avance".

Esto no parece terriblemente fácil ni terriblemente difícil de codificar. Sin embargo, la parte en la que estoy atrapado es la prueba de esto. ¿Hay una configuración razonable que pueda hacer con un solo enrutador / un NAT y mis tres computadoras disponibles?

¡Gracias por cualquier consejo!

¿Fue útil?

Solución

En términos de código / teoría sobre la ruptura de NAT, no puedo ofrecer consejos, pero puedo hacer algunas sugerencias sobre cómo configurar un entorno de prueba.

Puede descargar una copia de m0n0wall y ejecutarla dentro de una imagen de PC virtual (ambas gratuitas) . Esto le dará un segundo enrutador sin comprar ningún hardware adicional. Con este enrutador adicional, puede crear una subred separada para sus dos clientes.

Otra opción más fácil de entender es simplemente recoger un segundo enrutador, puede obtener uno bueno bastante barato.

Luego configure su enrutador y servidor existentes como están ahora, una subred 192.168.1.x / 24; luego configure su segundo enrutador (m0n0wall / enrutador de hardware) como subred 192.168.2.x / 24 y conecte el '' internet '' del segundo enrutador puerto en uno de los " PC " puertos en su primer enrutador. Luego, conecte ambos clientes al segundo enrutador.

(Me doy cuenta de que es un poco confuso, comenta si no puedes entender lo que quiero decir)

Otros consejos

Déjame ver si tengo esto claro. Tiene dos clientes que están detrás de NAT y un servidor que no lo está. Ambos clientes se conectan al servidor y son informados de la dirección IP pública del otro. Como cada uno ahora tiene un destino, se desconectan del servidor y se conectan directamente a través de sus respectivas cajas NAT. ¿Es ese tu pensamiento? Si es así, puedo tener algunas malas noticias para usted.

Para que esto funcione, deberá tener puertos dedicados configurados en cada configuración NAT para reenviar al menos un puerto externo a una dirección IP / número de puerto interno predefinido. En una configuración NAT genérica, NAT capturará las solicitudes de conexión salientes, lo que abrirá un puerto externo temporal. Ese número de puerto externo se usa solo para las comunicaciones a esa dirección y puerto de origen. Cuando se cierra la conexión, ese puerto externo desaparece y será reasignado para otra conexión más tarde. Entonces, si ambos clientes hablan con el servidor y luego se desconectan, la información que el servidor les envió ahora no es válida.

Suponiendo que haya solucionado esto de alguna manera, debería ser bastante fácil conectar ambos clientes al "interno". lado de la NAT y la PC del servidor a la "externa" lado. Entonces debe esperar que su caja NAT sea lo suficientemente inteligente como para reenviar paquetes de un puerto externo local a otro. Estoy seguro de que netfiler podría configurarse de esta manera, pero dudo que un "enrutador" de Internet doméstico (por ejemplo, Linksys, NetGear, etc.) lo haría desde el estante.

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