Як зробити так, щоб мережевий міст почався під час завантаження


5

Щоразу, коли я запускаю комп'ютер, мені потрібно перезапустити службу мережі (використовуючи перезапуск сервісної мережі), щоб увімкнути міст (br0). Як змусити Linux це зробити, коли я запускаю комп'ютер, щоб мені не довелося це робити вручну?

Мережа запускає інші 2 адаптери Ethernet під час завантаження.


Як ви "перезапускаєте послугу мережі", щоб увімкнути міст? Ймовірно, що у ваших сценаріях запуску щось не вистачає чи не виходить із ладу, якщо ми знаємо, що ви робите для роботи після запуску, ми зможемо сказати вам найкращі речі для перевірки / зміни.
Девід Спіллетт

Я перезапускаю мережу, виконуючи "сервісну мережу перезапуск" мережевого сценарію, дещо знає, як запустити адаптер мосту, коли працює Linux, але не під час завантаження.
Пітер Тернер

Гей Піт, якщо ти отримаєш секунду, ти можеш прийняти мою відповідь? Я думаю, що це найкращий варіант, який ти знайдеш для своєї проблеми. Дякую.
slm

Відповіді:


4

Це, мабуть, є проблемою з порядком введення інтерфейсів. Дивлячись на /etc/init.d/networkсценарій init, є цей біт, який конструює всі інтерфейси:

# find all the interfaces besides loopback.
# ignore aliases, alternative configurations, and editor backup files
interfaces=$(ls ifcfg* | \
    LANG=C sed -e "$__sed_discard_ignored_files" \
           -e '/\(ifcfg-lo\|:\|ifcfg-.*-range\)/d' \
           -e '/ifcfg-[A-Za-z0-9\._-]\+$/ { s/^ifcfg-//g;s/[0-9]/ &/}' | \
    LANG=C sort -k 1,1 -k 2n | \
    LANG=C sed 's/ //')

Вихід цієї команди створює цей список:

br0
eth0

Я не знайшов рішення цієї проблеми , крім як включати ifup br0в /etc/rc.localсценарії вручну примусово br0вгору ПІСЛЯeth0 пристрій було доведено до.

EDIT

Я просто створив /etc/sysconfig/network-scripts/ifcfg-br0подібне, і після перезавантаження було br0 запустити ПІСЛЯ eth0!

# ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
ONBOOT=yes
DELAY=0
NM_CONTROLLED=no
STP=off
IPADDR=192.168.1.200
GATEWAY=192.168.1.1
NETMASK=255.255.255.0

Приклад /etc/sysconfig/network-scripts/ifcfg-eth0

# ifcfg-eth0
DEVICE=eth0
#BOOTPROTO=dhcp
HWADDR=BC:AE:C5:34:C9:E8
ONBOOT=yes
BRIDGE=br0
NM_CONTROLLED=no

З такими файлами тепер я бачу такі мережеві пристрої:

Bringing up interface eth0           [  OK  ]
Bringing up interface br0            [  OK  ]

1

Переконайтесь, що послуга "мережа" увімкнена ви можете використовувати GUI Services (system-config-services) або chkconfig, якщо ви знайомі з цим. Це вирішило те саме питання і для мене.


1

У мене ця проблема була у фізичній коробці під управлінням 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.


0

У мене така ж проблема, але я вважаю, що написав ім'я мостового інтерфейсу / etc / sysconfig / network- scriptpts / br0 замість / etc / sysconfig / network- scriptpts / ifcfg-br0

Я прийшов до нього, коли я відкриваю " /etc/init.d/network " і знаходжу, що завантаження сценарію лише файли починаються з " ifcfg- "

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.