Frage Mehrere MAC-Adressen auf einer physischen Netzwerkschnittstelle (Linux)


Einfache Frage: Wie kann ich mehrere MAC-Adressen auf einer physischen Netzwerkschnittstelle (Linux) einrichten?

Warum? Mein ISP überprüft ip <-> mac auf GW und ich möchte den Datenverkehr durch meine "linuxbox" routen und dann mit einer anderen Quell-IP weiterleiten.

Ohne ip <-> mac zu überprüfen, verwende ich eth0, eth0: 0, aber in dieser Situation brauche ich eine eindeutige MAC-Adresse für jede IP.


19
2018-01-18 01:58


Ursprung




Antworten:


Sie können mit macvlan mehrere virtuelle Schnittstellen mit unterschiedlichen MAC-Adressen erstellen.

ip link add link eth0 address 00:11:11:11:11:11 eth0.1 type macvlan
ip link add link eth0 address 00:22:22:22:22:22 eth0.2 type macvlan

In der Theorie sollte das alles sein, was Sie brauchen, obwohl irgendwann im Kernel etwas kaputt war und es dazu führte, dass es einen MAC für alles verwendete. Ich bin mir nicht sicher, welcher Status das ist; Hoffentlich ist es behoben.

Wenn nicht, könnten Sie arptables verwenden, um die MAC-Adressen bei der Ausgabe basierend auf der Egress-Schnittstelle oder bei der Eingabe basierend auf der Ziel-IP neu zu schreiben:

arptables -A OUT -o eth0.1 --arhln 06 -j mangle --mangle-hw-s 00:11:11:11:11:11
arptables -A OUT -o eth0.2 --arhln 06 -j mangle --mangle-hw-s 00:22:22:22:22:22
arptables -A IN -d 192.168.1.1 --arhln 06 -j mangle --mangle-hw-d 00:11:11:11:11:11
arptables -A IN -d 192.168.1.2 --arhln 06 -j mangle --mangle-hw-d 00:22:22:22:22:22

Leider ist Arptables nach meiner Erfahrung auch ziemlich fehlerhaft.


27
2018-01-19 17:09



NETT! Zweiter Teil wurde nicht benötigt. Vielen Dank. - grapefruyt
Es tut uns leid, Nekopost, aber in Bezug auf die "irgendwann im Kernel brach etwas und es würde dazu führen, dass ein MAC für alles" Teil, es kann kein Fehler sein: Ich musste den Kernel abstimmbar "net.ipv4.conf .all.arp_ignore "auf 1, damit das funktioniert. Andere ARP-Parameter können ebenfalls benötigt werden. für weitere Erklärungen lesen diese und diese. - MoonSweep


Der Grund, warum Ihre Bridge und TAP-Schnittstelle die gleiche MAC-Adresse teilen, liegt daran, dass die Bridge keinen MAC besitzt, bis sie an eine Schnittstelle gebunden ist. Wenn Sie eine Bridge mit BRCTL erstellen und eine "brctl show" ausführen, werden Sie feststellen, dass die Bridge über leere Ports verfügt (keine Schnittstelle). Beim Binden von TAP0 an br0 wird es natürlich als der gleiche MAC angezeigt. Ich habe eine Testbrücke zur Veranschaulichung erstellt.

# brctl addbr testbr0

[root @ stooge usw.] # brctl show testbr0
Bridge-Name Bridge-ID STP-fähige Schnittstellen
testbr0 8000,000000000000 nein

Ich habe drei Test TAPS erstellt. Die Ausgabe von "brctl showmacs testbr0".

[root @ stoache usw.] # brctl showmacs testbr0
port no mac addr ist lokal? Alterungstimer
  1 86: 51: b6: 95: 0e: b6 ja 0.00
  2 86: 58: 63: c6: d4: e7 ja 0,00
  3 8a: a7: fa: 17: c5: 12 ja 0,00

Wie Sie sehen können, hat jeder Bridge-Port eine eindeutige MAC-Adresse und die Bridge sollte ihre MAC-Adresse anzeigen. als erste Schnittstelle gebunden. Wenn Sie eine physische Netzwerkschnittstelle überbrücken, erbt die Ethernet-Bridge ihre MAC-Adresse und verschiebt alle virtuellen Schnittstellen nach unten. Beispiel Binding eth0, an die Testbrücke.

[root @ stoache usw.] # brctl showmacs testbr0
port no mac addr ist lokal? Alterungstimer
  4 AA: BB: CC: TT: EE: FF ja 0,00
  1 86: 51: b6: 95: 0e: b6 ja 0.00
  2 86: 58: 63: c6: d4: e7 ja 0,00
  3 8a: a7: fa: 17: c5: 12 ja 0,00

"Brctl show" erneut verwenden

[root @ stooge usw.] # brctl show
Bridge-Name Bridge-ID STP-fähige Schnittstellen
testbr0 8000.00aabbccddee nein eth0
                                                        tap00
                                                        tap01
                                                        tap02 

Die TAP-Schnittstellen sind um eins nach unten gerückt, obwohl sich eth0 immer noch an PORT 4 befindet. Sie haben immer noch eindeutige MAC-Adressen. Wenn die Ethernet-Bridge an eine Source-Route-Schnittstelle gebunden ist, haben Sie keine Wahl, eine IP-Adresse oder DHCP zu verwenden. Wenn Sie eine Source-Route-Schnittstelle überbrücken, zeigen Sie eine "nicht lokale" MAC-Adresse an. Dies ist die MAC-Adresse des nächsten Hop-Routers. Ich weiß in RedHat, gibt es eine Option bei der Angabe einer Quell-IP mit IFCONFIG. Meine erste Option wäre, die IP-Befehlsreferenz zu konsultieren, da ich denke, dass Sie eine Quell-IP angeben können. Ich habe es nie ausprobiert.


4
2018-02-01 02:48





Versuche zu erstellen tap Geräte oder andere virtuelle Ethernet-Geräte mit benötigten MAC-Adressen und IPs und dann verbinden sie in einer Brücke mit eth0.


3
2018-01-18 12:09



Ich habe das schon versucht und es funktioniert nicht. Wenn ich br0 (eth0, tap0, tap1) verwende. Ich muss IP auf br0 setzen, damit das Netzwerk funktioniert. Ohne IP (ifconfig br0 0.0.0.0 up) funktioniert das Netzwerk nicht. Also wenn ich IP auf br0 und tap0 setze. (von Win-PC) Ich kann beide IPs ping aber nach arp -a jeder von ihnen haben die gleiche MAC. - grapefruyt


Es sieht so aus, als könnten Sie es benutzen vconfig Erstellen mehrerer VLAN-Adressen auf demselben physischen Ethernet, jeweils mit unterschiedlichen MAC-Adressen.


0
2018-01-18 02:53



Der Verkehr von allen IPs muss unmarkiert sein - gelraen