He configurado una red como tal: configurar redes de solo host en VirtualBox. El primer adaptador está configurado con NAT, el segundo con redes solo de host
Anfitrión: Windows
INVITADO: CentOS VM1, CentOS VM2 (clon de VM1)
Al ejecutar ifconfig -a en ambas máquinas virtuales, noté que las direcciones MAC son exactamente las mismas. Mi pregunta es ¿cómo puedo hacer ping de VM1 a VM2 teniendo en cuenta que las direcciones MAC son las mismas?
VM1:
eth0 Link encap:Ethernet HWaddr 08:00:27:AF:A3:28
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:feaf:a328/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:27 errors:0 dropped:0 overruns:0 frame:0
TX packets:47 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:10671 (10.4 KiB) TX bytes:5682 (5.5 KiB)
eth1 Link encap:Ethernet HWaddr 08:00:27:C4:A8:B6
inet addr:192.168.56.102 Bcast:192.168.56.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fec4:a8b6/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:859 errors:0 dropped:0 overruns:0 frame:0
TX packets:41 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:114853 (112.1 KiB) TX bytes:4823 (4.7 KiB)
ip -6 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 fe80::a00:27ff:feaf:a328/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 fe80::a00:27ff:fec4:a8b6/64 scope link
valid_lft forever preferred_lft forever
VM2:
eth0 Link encap:Ethernet HWaddr 08:00:27:AF:A3:28
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:feaf:a328/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:114 errors:0 dropped:0 overruns:0 frame:0
TX packets:151 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:41594 (40.6 KiB) TX bytes:13479 (13.1 KiB)
eth1 Link encap:Ethernet HWaddr 08:00:27:C4:A8:B6
inet addr:192.168.56.101 Bcast:192.168.56.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fec4:a8b6/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1900 errors:0 dropped:0 overruns:0 frame:0
TX packets:78 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:259710 (253.6 KiB) TX bytes:9736 (9.5 KiB)
ip -6 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 fe80::a00:27ff:feaf:a328/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 fe80::a00:27ff:fec4:a8b6/64 scope link tentative dadfailed
valid_lft forever preferred_lft forever
networking
ip
ethernet
mac-address
usuario
fuente
fuente
dadfailed
en suip -6 addr
salida. Eso significa que su dirección falló en la detección de direcciones duplicadas, por lo que IPv6 no será utilizable en esa interfaz.Respuestas:
Esta es una de esas cosas que sorprende a la gente porque va en contra de lo que se les ha enseñado.
2 máquinas con la misma dirección mac de hardware en el mismo dominio de transmisión pueden comunicarse entre sí bien siempre que tengan diferentes direcciones IP (y el equipo de conmutación funciona bien).
Comencemos con una configuración de prueba:
Observe cómo ambas máquinas tienen el mismo MAC addr, pero diferentes IP.
Vamos a intentar hacer ping:
Entonces, el host remoto respondió. Bueno, eso es raro. Veamos la mesa vecina:
Ese es nuestro MAC!
Hagamos un
tcpdump
en el otro host para ver que realmente está recibiendo el tráfico:Entonces, como puede ver, a pesar de que el tráfico tiene la misma dirección mac de hardware de origen y destino, todo funciona perfectamente bien.
La razón de esto es que la búsqueda de la dirección MAC llega muy tarde en el proceso de comunicación. El cuadro ya ha utilizado la dirección IP de destino y las tablas de enrutamiento para determinar en qué interfaz enviará el tráfico. La dirección mac que agrega al paquete viene después de esa decisión.
También debo señalar que esto depende de la infraestructura de la capa 2. Cómo se conectan estas máquinas y qué se ubica entre ellas. Si tiene un interruptor más inteligente, esto puede no funcionar. Puede ver este paquete llegando y rechazarlo.
Ahora, pasando a la creencia tradicional, de que esto no funciona. Bueno, es cierto, desde cierto punto de vista :-)
El problema surge cuando otro host en la red necesita hablar con cualquiera de estas máquinas. Cuando se corta el tráfico, el conmutador lo enrutará por la dirección MAC de destino, y solo lo enviará a un solo host.
Hay algunas razones posibles por las que funciona esta configuración de prueba:
fuente
Los efectos de una dirección MAC duplicada pueden ser sutiles en algunos casos.
Los conmutadores distribuyen el tráfico a los hosts en función de las direcciones "MAC vistas". Cuando enciende su computadora y envía su primer paquete a la red, su conmutador registrará en su tabla MAC que "la dirección MAC X vino del puerto Y". Por el contrario, en el futuro, cuando vea un paquete de unidifusión dirigido a la dirección MAC X, sabe enviarlo al puerto Y.
Dado que su VM solo está en un solo puerto de conmutador físico, depende de su hipervisor (VirtualBox) decidir dónde enviar los paquetes dirigidos a ese MAC virtual. En el caso de un duplicado, probablemente solo lo envíe a ambas máquinas virtuales y permita que la red se apile en cada máquina virtual. (la pila de red probablemente vería que el tráfico se envió a su dirección MAC que no pertenecía a una de sus propias direcciones IP, y descartará el paquete en silencio). Así que puede imaginar que esto causaría una buena cantidad de trabajo adicional, por el sistema operativo para activar y procesar cada paquete, mientras que si tuviera direcciones MAC únicas, el hardware [virtual] o el controlador podrían descartar el paquete destinado al otro host, antes de enviarlo a la pila.
En una red conmutada (a diferencia de su ejemplo de VM), una dirección MAC duplicada podría confundir a un conmutador sobre dónde enviar tráfico. Cada paquete que envía un host con un duplicado de MAC causaría que el conmutador suponga que el host se "movió" de un puerto en el conmutador a otro. Si ambos hosts enviaran y recibieran tráfico a la misma velocidad, esperaría que cada host pierda el 50% de su tráfico de retorno.
ARP e IPv4 pueden no estar demasiado preocupados por las direcciones MAC duplicadas, por lo que las redes IPv4 pueden funcionar correctamente. (aunque una pila robusta, o un host con herramientas de seguridad / redes adicionales, puede considerar una dirección MAC duplicada como una bandera roja). Además, si está utilizando DHCP, un servidor DHCP (a falta de una ID de cliente suficientemente única) podría asignar un Dirección IPv4 duplicada, lo que podría ser problemático.
Por otro lado, IPv6 basa las direcciones configuradas automáticamente en la dirección MAC . IPv6 también incluye el concepto de detección de direcciones duplicadas , lo que significa que una dirección MAC duplicada podría causar los siguientes efectos (de acuerdo con RFC 4862 sección 5.4.5):
fuente