Ich habe ein Netzwerk als solches eingerichtet: Richten Sie ein Nur-Host-Netzwerk auf VirtualBox ein. Der erste Adapter ist mit NAT konfiguriert, der zweite mit Nur-Host-Netzwerk
Host: Windows
Gast: CentOS VM1, CentOS VM2 (Klon von VM1)
Bei der Ausführung von ifconfig -a auf beiden VMs habe ich festgestellt, dass die MAC-Adressen genau gleich sind. Meine Frage ist, wie kann ich von VM1 zu VM2 pingen, wenn die MAC-Adressen identisch sind?
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
Benutzer
quelle
quelle
dadfailed
in deinerip -6 addr
Ausgabe siehst . Das bedeutet, dass Ihre Adresse die Erkennung doppelter Adressen nicht bestanden hat, sodass IPv6 auf dieser Schnittstelle nicht verwendet werden kann.Antworten:
Dies ist eines der Dinge, die die Menschen überraschen, weil es gegen das verstößt, was ihnen beigebracht wurde.
2 Computer mit derselben Hardware-Mac-Adresse in derselben Broadcast-Domäne können problemlos miteinander kommunizieren, solange sie unterschiedliche IP-Adressen haben (und die Schaltanlage gut funktioniert).
Beginnen wir mit einem Testaufbau:
Beachten Sie also, dass beide Computer dieselbe MAC-Adresse, aber unterschiedliche IP-Adressen haben.
Versuchen wir mal zu pingen:
Der Remote-Host hat also geantwortet. Das ist komisch. Schauen wir uns den Nachbartisch an:
Das ist unser MAC!
Machen wir einen
tcpdump
auf dem anderen Host, um zu sehen, dass er tatsächlich den Datenverkehr erhält:Wie Sie sehen, funktioniert alles einwandfrei, obwohl der Datenverkehr dieselbe Quell- und Zielhardware-Mac-Adresse hat.
Der Grund dafür ist, dass die Suche nach MAC-Adressen sehr spät im Kommunikationsprozess erfolgt. Die Box hat bereits die Ziel-IP-Adresse und die Routing-Tabellen verwendet, um zu bestimmen, über welche Schnittstelle der Datenverkehr gesendet werden soll. Die Mac-Adresse, die dem Paket hinzugefügt wird, kommt nach dieser Entscheidung.
Ich sollte auch beachten, dass dies von der Schicht-2-Infrastruktur abhängt. Wie diese Maschinen verbunden sind und was sich zwischen ihnen befindet. Wenn Sie einen intelligenteren Schalter haben, funktioniert dies möglicherweise nicht. Es kann sein, dass dieses Paket durchkommt und es ablehnt.
Nun zum traditionellen Glauben, dass dies nicht funktioniert. Unter bestimmten Gesichtspunkten ist es wahr :-)
Das Problem tritt auf, wenn ein anderer Host im Netzwerk mit einem dieser Computer sprechen muss. Wenn der Datenverkehr ausgeht, leitet der Switch den Datenverkehr anhand der Ziel-Mac-Adresse weiter und sendet ihn nur an einen einzelnen Host.
Es gibt einige mögliche Gründe, warum dieser Testaufbau funktioniert:
quelle
Die Auswirkungen einer doppelten MAC-Adresse können in einigen Fällen subtil sein.
Switches verteilen den Datenverkehr basierend auf "gesehenen MAC" -Adressen an Hosts. Wenn Sie Ihren Computer einschalten und sein erstes Paket im Netzwerk senden, meldet Ihr Switch in seiner MAC-Tabelle an, dass "MAC-Adresse X von Port Y stammt". Umgekehrt weiß es in Zukunft, wenn es ein an die MAC-Adresse X adressiertes Unicast-Paket sieht, dass es es an Port Y senden muss.
Da sich Ihre VM nur an einem einzigen physischen Switch-Port befindet, muss Ihr Hypervisor (VirtualBox) festlegen, wohin die an diesen virtuellen MAC gerichteten Pakete gesendet werden sollen. Im Falle eines Duplikats wird es wahrscheinlich nur an beide VMs gesendet und vom Netzwerkstapel auf jeder VM sortiert. (Der Netzwerkstapel würde wahrscheinlich feststellen, dass Datenverkehr an seine MAC-Adresse gesendet wurde, die nicht zu einer seiner eigenen IP-Adressen gehört, und das Paket stillschweigend verwerfen.) Sie können sich also vorstellen, dass dies eine Menge zusätzlicher Arbeit verursachen würde, z Das Betriebssystem wacht jedes Paket auf und verarbeitet es. Wenn Sie jedoch eindeutige MAC-Adressen haben, kann die [virtuelle] Hardware oder der [virtuelle] Treiber das für den anderen Host bestimmte Paket verwerfen, bevor Sie es an den Stapel senden.
In einem Switched-Netzwerk (im Gegensatz zu Ihrem VM-Beispiel) würde eine doppelte MAC-Adresse dazu führen, dass ein Switch verwirrt darüber ist, wohin Datenverkehr gesendet werden soll. Jedes Paket, das ein Host mit einem doppelten MAC sendet, führt normalerweise dazu, dass der Switch vermutet, dass der Host von einem Port auf dem Switch zu einem anderen "verschoben" wurde. Wenn beide Hosts Datenverkehr mit derselben Rate senden und empfangen würden, würden Sie erwarten, dass jeder Host 50% seines Rückverkehrsverkehrs verliert.
ARP und IPv4 sind möglicherweise nicht zu besorgt über doppelte MAC-Adressen, sodass das IPv4-Netzwerk möglicherweise ordnungsgemäß funktioniert. (Obwohl ein robuster Stack oder ein Host mit zusätzlichen Sicherheits- / Netzwerk-Tools möglicherweise eine doppelte MAC-Adresse als rote Fahne betrachtet.) Wenn Sie DHCP verwenden, kann ein DHCP-Server (ohne eine ausreichend eindeutige Client-ID) eine zuweisen doppelte IPv4-Adresse, was problematisch sein könnte.
Andererseits basiert IPv6 automatisch konfigurierte Adressen auf der MAC-Adresse . IPv6 enthält auch das Konzept der Erkennung doppelter Adressen. Dies bedeutet, dass eine doppelte MAC-Adresse die folgenden Auswirkungen haben kann (gemäß RFC 4862, Abschnitt 5.4.5):
quelle