5

Всякий раз, когда я запускаю свой компьютер, мне нужно перезапускать сетевой сервис (используя перезапуск сервисной сети), чтобы включить мой мост (br0). Как заставить Linux делать это при запуске компьютера, чтобы мне не приходилось делать это вручную?

Сеть запускается, другие 2 адаптера Ethernet работают, когда я загружаюсь.

4 ответа4

4

Это кажется проблемой с порядком, в котором интерфейсы вводятся. В скрипте инициализации /etc/init.d/network есть бит, который создает все интерфейсы:

# 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 воспитанный.

РЕДАКТИРОВАТЬ

Я только что создал /etc/sysconfig/network-scripts/ifcfg-br0 вот так и после перезагрузки имел br0 start ПОСЛЕ 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.

Отключить мост:

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.

0

У меня та же проблема, но я обнаружил, что написал имя интерфейса моста /etc /sysconfig /network-scripts /br0 вместо /etc /sysconfig /network-scripts /ifcfg-br0

Я пришел к нему, когда открыл « /etc/init.d/network » и обнаружил, что скрипт загружает только файлы, начинающиеся с « ifcfg- »

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .