У мене ця проблема була у фізичній коробці під управлінням 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 Bridge.
Відключення мосту:
ifconfig br0 вниз
Відключення раба:
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-scriptpts /
Створіть інтерфейс мосту:
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.
Якщо ви в кінцевому підсумку вручну змінюєте файл ifcfg в / etc / sysconfig / network-script, обов'язково повідомте менеджера про зміни за допомогою перезавантаження.
nmcli con reload
Це дозволить менеджеру мережі перечитати всі файли ifcfg та розпізнати будь-які зміни.
Я знайшов наступний пост:
Як я не можу Менеджеру мережі контролювати інтерфейс?
Для тих, хто не хоче використовувати NetworkManager в RHEL / CENTOS 7.x
Ще одна незначна річ, яку я помітив під час тестування, це те, що контекст selinux в оригінальних файлах конфігурації інтерфейсу, які я створив вручну, не був ідентичним автоматично створеним конфігураційним файлам.
ls -lZ показав, що автоматично генеровані файли ifcfg- мають такий контекст:
system_u: object_r: net_conf_t: s0
Тоді як створені мною файли були unconfined_u як користувач.
Я використовував chcon для встановлення користувача на system_u
chcon system_u:object_r:net_conf_t:s0 ifcfg-<filename>
Ще одне зауваження полягає в тому, що при піднесенні або зменшенні нового мостового інтерфейсу система тепер належним чином повідомляє, що інтерфейс підключений та відключений. Перш ніж вносити ці зміни, використовуючи власні файли конфігурації, написані власноруч, systemd, здавалося, не знав про інтерфейс. Це показало б, що інтерфейс був налаштований, але не підключений. Незважаючи на виявлення зв’язків звітності ettool.