Причина, по которой ваш мост и интерфейс TAP используют один и тот же MAC-адрес, заключается в том, что у моста нет MAC, пока он не привязан к интерфейсу. Если вы создадите мост с BRCTL и выполните «brctl show», вы обнаружите, что мост имеет пустые порты (без привязки к нему интерфейса). При связывании TAP0 с br0, естественно, он будет отображаться как тот же MAC. Я создал тестовый мост, чтобы проиллюстрировать.
# brctl addbr testbr0
[root @ stooge etc] # brctl show testbr0
имя моста идентификатор моста с поддержкой STP
testbr0 8000.000000000000 нет
Я создал три тестовых TAPS. Вывод из "brctl showmacs testbr0".
[root @ stooge и т. д.] # brctl showmacs testbr0
порт нет mac addr является локальным? таймер старения
1 86: 51: b6: 95: 0e: b6 да 0,00
2 86: 58: 63: с6: д4: д7 да 0,00
3 8a: a7: fa: 17: c5: 12 да 0,00
Как вы можете видеть, каждый порт моста имеет уникальный MAC-адрес, и мост должен показывать свой MAC в качестве первого привязанного интерфейса. Если вы соедините физический сетевой интерфейс, мост Ethernet унаследует свой MAC-адрес и переместит все виртуальные интерфейсы вниз. Пример привязки eth0 к тестовому мосту.
[root @ stooge и т. д.] # brctl showmacs testbr0
порт нет mac addr является локальным? таймер старения
4 AA: BB: CC: DD: EE: FF да 0,00
1 86: 51: b6: 95: 0e: b6 да 0,00
2 86: 58: 63: с6: д4: д7 да 0,00
3 8a: a7: fa: 17: c5: 12 да 0,00
Использование "brctl show" снова;
[root @ stooge etc] # brctl show
имя моста идентификатор моста с поддержкой STP
testbr0 8000.00aabbccddee no eth0
tap00
TAP01
tap02
интерфейсы TAP переместились на один, хотя eth0 все еще находится на PORT 4. У вас все еще есть уникальные MAC-адреса. Если мост Ethernet связан с интерфейсом исходного маршрута, у вас нет выбора в использовании IP-адреса или DHCP. Для чего стоит, если вы соедините интерфейс исходного маршрута, вы увидите «нелокальный» MAC-адрес. Это MAC-адрес маршрутизатора следующего перехода. Я знаю в RedHat, есть возможность указать исходный IP, используя IFCONFIG. Мой первый вариант - обратиться к справочнику по командам IP, так как я думаю, что вы можете указать исходный IP. Я никогда не пробовал это.