Eu configurei uma rede como tal: Configure a rede somente host no VirtualBox. O primeiro adaptador é configurado com NAT, o segundo com rede somente host
HOST: Windows
CONVIDADO: CentOS VM1, CentOS VM2 (clone da VM1)
Ao executar o ifconfig -a nas duas VMs, notei que os endereços MAC são exatamente os mesmos. Minha pergunta é como posso executar o ping da VM1 para a VM2, considerando que os endereços MAC são os mesmos?
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
do utilizador
fonte
fonte
dadfailed
na suaip -6 addr
saída. Isso significa que seu endereço falhou na detecção de endereço duplicado, portanto, o IPv6 não será utilizável nessa interface.Respostas:
Essa é uma daquelas coisas que surpreende as pessoas porque vai contra o que elas aprenderam.
2 máquinas com o mesmo endereço MAC de hardware no mesmo domínio de broadcast podem conversar entre si muito bem, desde que tenham endereços IP diferentes (e o equipamento de comutação seja bom).
Vamos começar com uma configuração de teste:
Portanto, observe como ambas as máquinas têm o mesmo endereço MAC, mas IPs diferentes.
Vamos tentar fazer ping:
Então, o host remoto respondeu. Bem, isso é estranho. Vamos olhar para a tabela vizinha:
Esse é o nosso MAC!
Vamos fazer um
tcpdump
no outro host para ver que ele realmente está recebendo o tráfego:Portanto, como você pode ver, mesmo que o tráfego tenha o mesmo endereço mac do hardware de origem e destino, tudo ainda funciona perfeitamente.
A razão para isso é que a pesquisa de endereço MAC chega muito tarde no processo de comunicação. A caixa já usou o endereço IP de destino e as tabelas de roteamento para determinar em qual interface ele enviará o tráfego. O endereço mac que ele adiciona ao pacote vem após essa decisão.
Devo também observar que isso depende da infraestrutura da camada 2. Como essas máquinas estão conectadas e o que há entre elas. Se você tiver um switch mais inteligente, isso pode não funcionar. Pode ver esse pacote chegando e rejeitá-lo.
Agora, seguindo a crença tradicional, de que isso não funciona. Bem, é verdade, de um certo ponto de vista :-)
O problema surge quando outro host da rede precisa conversar com qualquer uma dessas máquinas. Quando o tráfego acaba, o switch direciona o tráfego pelo endereço mac de destino e envia apenas para um único host.
Existem algumas razões possíveis pelas quais essa configuração de teste funciona:
fonte
Os efeitos de um endereço MAC duplicado podem ser sutis em alguns casos.
Os switches distribuem o tráfego para os hosts com base nos endereços "vistos MAC". Quando você liga o computador e ele envia seu primeiro pacote na rede, o switch registra na tabela MAC que "o endereço MAC X veio da porta Y". Por outro lado, no futuro, quando vir um pacote unicast endereçado ao endereço MAC X, ele saberá enviá-lo para a porta Y.
Como a sua VM está apenas em uma única porta de switch físico, cabe ao seu hipervisor (VirtualBox) descobrir para onde enviar os pacotes direcionados para esse MAC virtual. No caso de uma duplicata, provavelmente a envia apenas para as duas VMs e permite que a rede empilhe em cada VM. (a pilha de rede provavelmente verá que o tráfego foi enviado para seu endereço MAC que não pertence a um de seus próprios endereços IP e silenciosamente descarta o pacote.) Portanto, você pode imaginar que isso causaria uma quantidade considerável de trabalho extra, por o sistema operacional para ativar e processar cada pacote, enquanto que se você tivesse endereços MAC exclusivos, o hardware ou o driver [virtual] poderia descartar o pacote destinado ao outro host, antes de enviá-lo para a pilha.
Em uma rede comutada (diferente do exemplo da sua VM), um endereço MAC duplicado causaria uma confusão no comutador sobre para onde enviar tráfego. Cada pacote que um host com um MAC duplicado envia normalmente faz com que o comutador suponha que o host "se moveu" de uma porta no comutador para outra. Se os dois hosts estiverem enviando e recebendo tráfego na mesma taxa, você espera que cada host perca 50% do tráfego de retorno.
O ARP e o IPv4 podem não estar muito preocupados com endereços MAC duplicados; portanto, a rede IPv4 pode funcionar corretamente. (embora uma pilha robusta, ou um host com ferramentas adicionais de segurança / rede, considere um endereço MAC duplicado como uma bandeira vermelha.) Além disso, se você estiver usando DHCP, um servidor DHCP (sem um ID de cliente suficientemente exclusivo) poderá atribuir um endereço IPv4 duplicado, o que pode ser problemático.
Por outro lado, o IPv6 baseia os endereços configurados automaticamente no endereço MAC . O IPv6 também inclui o conceito de detecção de endereço duplicado , o que significa que um endereço MAC duplicado pode causar os seguintes efeitos (de acordo com a RFC 4862, seção 5.4.5):
fonte