¿Cómo se comunican dos computadoras con la misma IP de diferentes redes? ¿Cómo funciona el enrutamiento?

Respuesta simple y breve: ambas computadoras (que tienen la misma dirección IP) nunca pueden comunicarse entre sí sin una IP pública en la imagen.


Respuesta larga que explica una de las formas en que es posible en nuestra vida cotidiana:

Puede relacionar esto con las redes domésticas actuales.

Para entrar en más detalles, primero analicemos las redes privadas y públicas.

Las direcciones IP de redes privadas no son enrutables desde Internet, mientras que las direcciones IP públicas sí lo son.

Algunos rangos de direcciones IP están reservados para redes privadas y el resto de los rangos de direcciones IP se asignan a ISP, corporaciones, etc. como direcciones IP públicas. (Excluyendo algunos espacios de direcciones IP más reservados)

Ref: dirección IP – Wikipedia


La mayoría de los enrutadores SOHO que he visto usan los rangos de red que pertenecen a 192.168.xx o 10.xxx


Ahora digamos que hay 2 amigos John y Sam. Ambos tienen Internet en sus residencias y ambos usan el mismo rango de direcciones privadas (10.0.0.0/24).

John y Sam tienen un escritorio y su escritorio tiene la dirección IP 10.0.0.10/24

Si tienen direcciones IP públicas dedicadas asignadas a sus direcciones IP privadas, ambas computadoras pueden comunicarse entre sí y el enrutamiento se realiza a través de Internet.


Si no , (la mayoría de las conexiones residenciales de Internet)

El ISP que están utilizando asigna dinámicamente a cada uno de ellos con una dirección IP pública. (IP pública de John: `xxxx`, IP pública de Sam:` aaaa`)

Esta IP pública ahora está asociada a sus respectivos enrutadores de puerta de enlace.

En este caso, ambas computadoras no pueden comunicarse directamente entre sí. Pero, con la ayuda de un tercero (sentado en la nube), se puede facilitar la comunicación entre ambas computadoras.

El mejor ejemplo que me viene a la mente es Skype.

En términos simples, tanto John como Sam establecen una sesión para el servidor de Skype y el servidor de Skype se encarga de enviar el video de John a Sam y Vice Versa.


Nota: Avíseme si tenía en mente un caso de uso diferente.

¡Espero eso ayude!

Descargo de responsabilidad: esto se simplifica. Ignora por completo el concepto de máscara de red y hace algunas suposiciones (que, para ser justos, son ciertas en la mayoría de los casos).

Mi respuesta es bastante larga y compleja, ya que no es una explicación genérica de NAT como la mayoría de las otras. Específicamente construye el conocimiento necesario para comprender el escenario y luego explica cómo hacerlo funcionar.

Tenga en cuenta que, como señaló Paolo Ciarrocchi, este escenario solo es posible con direcciones IP privadas (RFC 1918). La dirección IP pública es asignada por IANA y sus subsidiarias. A menos que alguien decida usar indebidamente el espacio de direcciones públicas, este escenario es imposible.

Antes de responder la pregunta, tenemos que aclarar qué significa “red”.

Una red es:

  • Un grupo de computadoras que comparten el número de red, por ejemplo, todas las computadoras que pertenecen a la red numeradas 192.168.0.0. Esta es una red en el sentido lógico .
  • Un grupo de computadoras físicamente conectadas entre sí, hablando entre sí sin un enrutador en el medio. Esta es una red en el sentido físico .

Una red física podría, en teoría, transportar múltiples redes lógicas. Esto, en IP sobre redes Ethernet (su red habitual de hogar / oficina), casi nunca se hace debido a varias complejidades en la forma en que IP opera a través de Ethernet.

Como según la primera definición, dos computadoras con la misma dirección IP pertenecen a la misma red, supondré que la pregunta significa “dos computadoras que comparten la misma configuración IP en dos redes físicas separadas”.

Entonces, ¿cómo funciona la comunicación entre diferentes redes?

Las diferentes redes lógicas, para comunicarse, necesitan computadoras entre ellas que actúen como puertas de enlace . Podrían ser enrutadores, servidores o incluso computadoras personales. Una puerta de enlace está conectada directamente a la red a la que sirve (es decir, tiene una dirección IP), y también está conectada a las redes a las que se debe llegar a través de ella, ya sea directamente o a través de otras puertas de enlace.

Cuando una computadora quiere enviar datos a una computadora que no es de la misma red lógica, en su lugar la envía a la puerta de enlace. La puerta de enlace luego decide cómo enrutar los datos a la otra red. Esto depende en gran medida de la implementación, pero podría hacerlo enviando los datos a través de otro puerto físico, un túnel VPN, un puente inalámbrico, un puerto óptico, etc. El elemento de configuración que determina lo que sucede se denomina tabla de enrutamiento .

Pero, ¿qué sucede si una computadora intenta enviar datos a otra computadora en otra red física con la misma dirección IP?

Bueno, dado que la forma en que las computadoras toman decisiones de enrutamiento se basa en la dirección IP (¡están aquí por este motivo!), Esto no funcionaría. Ningún dato abandonaría la computadora, ya que todos los sistemas operativos simplemente reconocerían que el destino de los datos es la misma computadora. Incluso si el sistema operativo fuera, por alguna razón, lo suficientemente tonto como para enviar los datos a la puerta de enlace, la puerta de enlace simplemente lo enviaría de vuelta.

¿Y si las dos computadoras realmente necesitaran enviarse datos entre ellas y no fuera posible reconfigurar una de las redes?

Solo dije que no funcionaría, pero … Hay una solución. Por lo general, los ingenieros de redes lo consideran astuto y peligroso por varias razones. Una de esas razones es universalmente reconocida, y es que hace que las cosas sean mucho más complicadas de lo que deben ser.

La solución es NAT o traducción de direcciones de red . Puede que ya hayas oído hablar de eso. La aplicación más habitual de NAT es compartir una dirección IP pública entre varias computadoras con direcciones IP privadas. Esto se hace en pequeñas oficinas y hogares, porque simplemente no hay suficientes direcciones IP para cada dispositivo conectado. (IPv6, que resuelve este problema, apenas comienza a usarse, pero pasará mucho tiempo antes de que todos se den cuenta).

Entonces, ¿qué puede hacer NAT por mí?

En general, NATting significa tomar un paquete que sale de una red y cambia su dirección de origen o de destino. Esto tiene infinitas posibilidades.

Ahora, imaginemos que nuestras dos computadoras pertenecen a dos redes físicas diferentes, y que ambas tienen la misma dirección IP 192.168.50.1, y que, por simplicidad, la puerta de enlace está conectada directamente a ambas redes físicas también con la misma dirección IP 192.168. 50.2.

Elija un número de red arbitrario, diferente del que ya tenemos, como 192.168.51.0. Decidimos que cada una de las dos redes verá la otra red como si tuviera este número de red en lugar de la misma.

Todo lo que queda es configurar la puerta de enlace para aplicar correctamente la traducción: si un paquete proviene de una red con el origen 192.168.50.1 y el destino 192.168.51.1, envíelo a la otra red, pero cambie el origen a 192.168.51.1 y el destino a 192.168.50.1. De esta manera, la computadora en la otra red verá que la fuente del paquete es 192.168.51.1, y cuando intente responder al paquete, lo usará como su destino, y la puerta de enlace se traducirá en reversa.

En otras palabras, cada red ve a la otra red como si tuviera direcciones diferentes a las suyas, y la puerta de enlace mantiene esta ilusión real al cambiar las direcciones a medida que los paquetes la atraviesan.

¡Espera un segundo! ¿No significa esto que tengo que volver a configurar mi software para usar las nuevas direcciones IP? (esto ya no responde la pregunta, está aquí para los más curiosos)

Absolutamente. Y además, no todos los protocolos de red están contentos con las puertas de enlace que traducen direcciones en tránsito. Tales protocolos hacen uso del llamado principio de extremo a extremo , según el cual las puertas de enlace entre redes son solo máquinas tontas que transmiten paquetes solo de acuerdo con sus direcciones, de manera fija y sin manipularlos de ninguna manera.

Esto es algo manejable cuando tiene una traducción de 1 a 1 como en nuestro escenario, pero en los casos en que varias direcciones IP se traducen a una sola (o algunas) direcciones IP, como en el escenario de hogar / oficina, obtiene más Complicado. Cosas como juegos en línea, Skype y servidores web de alojamiento se rompen y necesitan una configuración adicional (aunque hoy en día el software y las puertas de enlace pueden comunicarse entre sí para resolverlo automáticamente, con un sistema llamado UPnP, Universal Plug and Play ).

Gracias por leer. Me gustaría mejorar estas respuestas con esquemas y dibujos. Avíseme si alguna parte está ahora clara y no dude en sugerir modificaciones.

Hace muchos años, la gente entendía que el conjunto de IPv4 pronto se agotará (IPv4 tiene 4 octetos, por ejemplo: 192.168.1.0).

Como resultado de eso, se inventó NAT. NAT es traducción de direcciones de red: en lugar de dar a cada dispositivo digital que tiene una conexión a Internet una IP, cada dispositivo tiene su propia dirección IP local en su propia red.

Cómo funciona:

  • Cada enrutador obtiene una dirección IPv4, que sirve como la dirección de esa red.
  • Cuando un dispositivo dentro de la red del enrutador quiere enviar paquetes fuera de la red del enrutador, él envía el paquete al enrutador.
  • El enrutador guarda la IP de origen en una tabla y envía el paquete al destino con la propia dirección IP del enrutador.
  • Cuando el paquete de respuesta regresa del destino, el enrutador revisa la tabla para ver qué dispositivo necesita recibir ese paquete y se lo envía.

Entonces, incluso si tiene, por ejemplo, una dirección IP local de 10.0.0.1, y su amigo tiene una dirección IP local de 10.0.0.1; Debido a que está en una red diferente, la IP de origen será la IP del enrutador debido a NAT.

Para más información:

Traducción de direcciones de red – Wikipedia

El traductor de direcciones de red IP (NAT)

Como cualquier otra computadora en diferentes redes que usan direcciones IP privadas. Usando NAT (traducción de direcciones de red) o PAT (traducción de direcciones de puerto). La red privada tiene una o varias direcciones compartidas en la red de enlace. En Internet, esta es una dirección pública compartida por todos los hosts en la red privada.

Un enrutador realiza un seguimiento de cómo los paquetes IP de diferentes hosts en la red privada deben atravesar el enrutador y hacer que sus direcciones y / o puertos se traduzcan de privado a público y de público a privado.

Por lo tanto, sus dos anfitriones con las mismas direcciones privadas no sabrían que tenían la misma dirección. Pero para conectarse entre sí tendrían que conocer las direcciones públicas y los puertos que los enrutadores enviarán a la dirección privada correcta.

Probablemente quiera decir que las dos máquinas están en una red local diferente, con una dirección como 192.168.1.10.

Están detrás de un enrutador con NAT, por lo que cada máquina en el interior parece tener la IP externa del enrutador.

En el exterior, los enrutadores tienen diferentes direcciones IP.

Para conectarse a una máquina en el interior, el enrutador debe reenviar un puerto en el exterior a un puerto en el interior.

La dirección externa del enrutador A podría ser 98.5.100.23 y la externa del enrutador B podría ser 203.0.113.7

El enrutador A puede reenviar 98.5.100.23:22 a 192.168.1.10:22 y el enrutador B puede reenviar 203.0.113.7:22 a su 192.168.1.10:22

Cuando la A 192.168.1.10 quiere hablar con la otra 192.168.1.10, se conecta a 203.0.113.7, quien cree que la llamada proviene del 98.5.110.23

TL; DR: las dos máquinas hablan con la dirección pública externa y los enrutadores reenvían a las direcciones privadas.

Nota: Dada la escasez de direcciones IPv4 y la renuencia a implementar IPv6, es posible que los enrutadores no tengan una dirección IP pública en absoluto, pero de nuevo se conectan NAT con otros clientes a una sola IP pública, en cuyo caso directo La comunicación es casi imposible.

Suponiendo que están usando direcciones IP públicas y no hay traducción de IP, no lo hace.

Sin embargo, lo más probable es que esté tomando direcciones IP privadas (por ejemplo, 10.xxx, 192.168.xx). En ese caso, su enrutador, servidor proxy o firewall intercambia la dirección IP en sus transmisiones cuando salen a Internet. Ese dispositivo realiza un seguimiento y puede volver a colocar el espacio IP privado en las transmisiones de respuesta.

El dispositivo al que intenta comunicarse debe tener una dirección pública asociada. Las direcciones privadas no son enrutables en Internet.