Puede usar macvlan para crear múltiples interfaces virtuales con diferentes direcciones 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
En teoría, eso debería ser todo lo que necesita, aunque en algún momento algo se rompió en el núcleo y haría que usara un MAC para todo. No estoy seguro de cuál es el estado de eso; Ojalá esté arreglado.
De lo contrario, podría usar arptables para reescribir las direcciones MAC en la salida basada en la interfaz de salida o en la entrada basada en la IP de destino:
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
Desafortunadamente, arptables también es bastante defectuoso en mi experiencia.
La razón por la cual su puente y su interfaz TAP comparten la misma dirección MAC, es porque el puente no tiene un MAC, hasta que está vinculado a una interfaz. Si crea un puente con BRCTL y realiza un "show brctl", encontrará que el puente tiene puertos vacíos (sin interfaz vinculada) Al vincular TAP0 a br0, naturalmente, se mostrará como el mismo MAC. Creé un puente de prueba, para ilustrar.
# brctl addbr testbr0
Creé tres TAPS de prueba. La salida de "brctl showmacs testbr0".
Como puede ver, cada puerto de puente tiene una dirección MAC única, y el puente debe mostrar su MAC, como la primera interfaz enlazada. Si conecta una interfaz de red física, el puente Ethernet heredará su dirección MAC y moverá todas las interfaces virtuales hacia abajo. Ejemplo de unión eth0, al puente de prueba.
Usando "brctl show" nuevamente;
las interfaces TAP han bajado una, aunque eth0, todavía está en el PUERTO 4. Todavía tiene direcciones MAC únicas. Si el puente Ethernet está vinculado a una interfaz de ruta de origen, no tiene opción de usar una dirección IP o DHCP. Por lo que vale, si conecta una interfaz de ruta de origen, mostrará una dirección MAC "no local". Esta es la dirección MAC del enrutador del siguiente salto. Sé que en RedHat, hay una opción para especificar una IP de origen, usando IFCONFIG. Mi primera opción sería consultar la referencia del comando IP, ya que creo que puede especificar una IP de origen. Nunca lo he intentado
fuente
Intente crear
tap
dispositivos o cualquier otro dispositivo virtual de Ethernet con las direcciones MAC e IP necesarias y luego conéctelos en un puente con eth0.fuente
Parece que podría usar vconfig para crear múltiples direcciones vlan en el mismo ethernet físico, cada una con diferentes direcciones mac.
fuente