У меня была такая же проблема на физическом компьютере под управлением Centos 7.3 x86_64, и я смог ее решить, сначала переместив физический адаптер в другой слот PCI-X на материнской плате, а затем выполнив все следующие действия:
Удалите файл конфигурации интерфейса моста:
rm -f /etc/sysconfig/network-scripts/ifcfg-br0
Удалите файл конфигурации подчиненного интерфейса:
rm -f /etc/sysconfig/network-scripts/ifcfg-enp6s0f0
Где enp6s0f0 было исходным именем подчиненного интерфейса и было единственным подчиненным интерфейсом, назначенным мосту br0
Обязательно полностью удалите исходный мост, убедившись, что все его следы исчезли (brctl show) не должны перечислять интерфейс моста br0.
Отключить мост:
ifconfig br0 down
Отключить раб:
ifdown enp6s0f0
ifconfig enp6s0f0 down
Остановите сетевой сервис:
systemctl stop network.service
При необходимости удалите мост вручную: (в моем случае так и было.)
Перед удалением моста все подчиненные интерфейсы должны быть удалены с него. Вы можете использовать утилиту управления мостом, чтобы удалить их
brctl delif br0 enp6s0f0
Как только все подчиненные интерфейсы были удалены, сам мост можно удалить.
brctl delbr br0
Убедитесь, что ни один из оставшихся файлов конфигурации не ссылается на br0:
grep -i br0 /etc/sysconfig/network-scripts/ifcfg-*
Не должен возвращать никаких результатов
В моем случае имя нового интерфейса, основанное на перемещении карты вверх на один слот, теперь называется enp5s0f0.
Запустите интерфейс, а затем подтвердите с помощью ethtool или «ip link», которая должна сообщить, что для интерфейса обнаружена ссылка.
[root@phaser ~]# ifconfig enp5s0f0 up
[root@phaser ~]# ethtool enp5s0f0
Settings for enp5s0f0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
MDI-X: on (auto)
Supports Wake-on: pumbg
Wake-on: d
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes
Используйте nmcli для создания нового моста.
nmcli запишет необходимые файлы конфигурации интерфейса в /etc /sysconfig /network-scripts /
Создайте интерфейс моста:
nmcli conn add type bridge ifname br0 ip4 10.0.0.16/24 gw4 10.0.0.1
Добавьте подчиненный интерфейс к мосту:
nmcli conn add type bridge-slave ifname enp5s0f0 master bridge-br0
Отключите протокол связующего дерева, если в сети уже есть мастер связующего дерева:
nmcli con modify bridge-br0 bridge.stp no
Убедитесь, что мост настроен на загрузку с помощью nmcli:
nmcli con mod br0 connection.autoconnect yes
На этом этапе я могу запустить и остановить сетевую службу успешно, и при перезагрузке интерфейс моста запускается правильно.
Примечания по устранению неисправностей:
Я подозреваю, что пропуск строки:
TYPE=Bridge
из моего исходного файла конфигурации для br0, возможно, привело к этой проблеме.
Я также подозреваю, что неиспользование nmcli и ручное создание файлов интерфейса моста также вызывало проблемы. Это может быть потому, что NetworkManager все еще пытается управлять интерфейсом. Это можно подтвердить с помощью:
nmcli dev status
Эта команда отобразит таблицу, в которой перечислены все сетевые интерфейсы вместе с их STATE. Если Network Manager не контролирует интерфейс, его STATE будет указан как неуправляемый. Любое другое значение указывает, что интерфейс находится под управлением Network Manager.
Если вы в конечном итоге вручную измените файл ifcfg в /etc /sysconfig /network-scripts, обязательно сообщите менеджеру сети об изменениях с перезагрузкой.
nmcli con reload
Это скажет администратору сети перечитать все файлы ifcfg и распознать любые изменения.
Я нашел следующее сообщение:Как я могу запретить Network Manager контролировать интерфейс?
Для тех, кто не хочет использовать NetworkManager в RHEL / CENTOS 7.x
Еще одна небольшая вещь, которую я заметил во время тестирования, заключалась в том, что контекст selinux в исходных файлах конфигурации интерфейса, которые я создал вручную, не был идентичен автоматически генерируемым файлам конфигурации.
ls -lZ показал, что автоматически созданные ifcfg-файлы имеют следующий контекст:
system_u:object_r:net_conf_t:s0
В то время как файлы, которые я создал, имели в качестве пользователя undefined_u.
Я использовал chcon, чтобы установить для пользователя system_u
chcon system_u:object_r:net_conf_t:s0 ifcfg-<filename>
Еще одно наблюдение заключается в том, что при поднятии или отключении нового интерфейса моста теперь systemd правильно сообщает, что интерфейс подключен и отключен. До внесения этих изменений, когда я использовал мои собственные файлы конфигурации, systemd, казалось, не знал интерфейса. Было бы показать, что интерфейс был настроен, но не подключен. Несмотря на обнаружение ссылки на ethtool.