Za pomocą macvlan można tworzyć wiele wirtualnych interfejsów z różnymi adresami MAC.
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
Teoretycznie powinno to być wszystko, czego potrzebujesz, ale w pewnym momencie coś pękło w jądrze i spowodowałoby, że używałby jednego MAC do wszystkiego. Nie jestem pewien, jaki jest tego status; mam nadzieję, że to naprawione.
Jeśli nie, możesz użyć arptables do przepisania adresów MAC na wyjściu w oparciu o interfejs wyjściowy lub na wejściu w oparciu o docelowy adres IP:
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
Niestety z mojego doświadczenia wynika również, że arptables jest dość wadliwy.
Powodem, dla którego twój mostek i interfejs TAP współużytkują ten sam adres MAC, jest to, że most nie ma adresu MAC, dopóki nie zostanie powiązany z interfejsem. Jeśli utworzysz most za pomocą BRCTL i wykonasz „pokaz brctl”, zobaczysz, że most ma puste porty. (Bez powiązanego z nim interfejsu) W powiązaniu TAP0 z br0, oczywiście będzie on wyświetlany jako ten sam MAC. Zilustrowałem most testowy.
# brctl addbr testbr0
Stworzyłem trzy testowe TAPS. Dane wyjściowe z „brctl showmacs testbr0”.
Jak widać, każdy port mostu ma unikalny adres MAC, a most powinien pokazywać swój adres MAC, jako pierwszy związany interfejs. Jeśli przełączysz fizyczny interfejs sieciowy, most Ethernet odziedziczy jego adres MAC i przeniesie wszystkie interfejsy wirtualne w dół. Przykład wiązania eth0 z mostkiem testowym.
Ponowne użycie „brctl show”;
interfejsy TAP przesunęły się w dół o jeden, mimo że eth0 nadal znajduje się w PORT 4. Nadal masz unikalne adresy MAC. Jeśli most Ethernet jest powiązany z interfejsem trasy źródłowej, nie masz wyboru w korzystaniu z adresu IP lub DHCP. Za ile warto, jeśli przełączysz interfejs trasy źródłowej, pokażesz „nielokalny” adres MAC. To jest adres MAC routera następnego skoku. Wiem, że w RedHat istnieje możliwość podania źródłowego adresu IP za pomocą IFCONFIG. Moją pierwszą opcją byłoby sprawdzenie odniesienia do polecenia IP, ponieważ myślę, że możesz podać źródłowy adres IP. Nigdy tego nie próbowałem.
źródło
Spróbuj utworzyć
tap
urządzenia lub dowolne inne wirtualne urządzenia Ethernet z wymaganymi adresami MAC i IP, a następnie podłącz je do jednego mostu za pomocą eth0.źródło
Wygląda na to, że możesz użyć vconfig do utworzenia wielu adresów Vlan na tym samym fizycznym eterze, każdy z innym adresem mac.
źródło