Как включить Ethernet интерфейс при загрузке на CentOS 8?

Вопрос или проблема

У меня есть виртуальная машина, которая подключена к сети с DHCP и т.д.

Каждый раз, когда я запускаю виртуальную машину, виртуальное Ethernet-соединение отключено. Мне нужно войти в консоль и выполнить dhclient eth0, чтобы включить его. Каждый раз. Я хотел бы, чтобы eth0 включался при загрузке.

Вот содержимое файла /etc/sysconfig/network-scripts/ifcfg-eth0:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=11111111-2222-3333-4444-5555555555555555
DEVICE=eth0
ONBOOT=yes
HOTPLUG=yes
NM_CONTROLLED=no
DHCPV6C=yes
IPV6_PRIVACY=no
USERCTL=no
GATEWAY=10.0.0.1
DNS1=9.9.9.9
DNS2=1.1.1.1

Я думал, что ONBOOT=yes — это важная часть, но она полностью игнорируется. Кто читает этот файл? Возможно, это причина проблемы.

Опцию HOTPLUG=yes я добавил только в надежде, что это поможет (возможно, интерфейс появляется слишком поздно…), но это не помогло.

Я установил NM_CONTROLLED=no, потому что у меня нет службы NetworkManager (сервер, управление пользователями не разрешено и не нужно).

Мой вопрос: что не так с моим конфигурационным файлом или какая настройка могла бы помочь?

Что не так с вашим конфигурационным файлом, мне неясно.

Но, используя CenOS 8, подходящей настройкой для вас могло бы быть использование NetworkManager, так как сетевые скрипты устарели:

Устаревшие сетевые скрипты RHEL 8

  • установка свойства connection.autoconnect в true.

Вы можете использовать правило cron для этого.

Просто отредактируйте/создайте ваше правило с помощью команды crontab -e, выберите ваш редактор (будьте осторожны, crontab только попросит этот редактор. Также, nano — самый простой) и затем добавьте в файл строку @reboot, за которой следует ваша команда, которая в вашем случае будет: @reboot dhclient eth0.

И теперь, каждый раз, когда вы загружаете систему, ваше dhclient eth0 будет выполняться.

Обратите внимание, что @reboot, несмотря на своё название, (почти) не имеет ничего общего с перезагрузкой и всегда будет работать, когда вы загружаетесь с нуля.

Ответ или решение

Для того чтобы включить Ethernet-интерфейс на CentOS 8 при загрузке системы, вам необходимо правильно настроить конфигурационный файл интерфейса и убедиться, что все службы, отвечающие за управление сетевыми подключениями, функционируют корректно.

Шаг 1: Изменение конфигурационного файла

Ваш текущий конфигурационный файл /etc/sysconfig/network-scripts/ifcfg-eth0 выглядит следующим образом:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=11111111-2222-3333-4444-5555555555555555
DEVICE=eth0
ONBOOT=yes
HOTPLUG=yes
NM_CONTROLLED=no
DHCPV6C=yes
IPV6_PRIVACY=no
USERCTL=no
GATEWAY=10.0.0.1
DNS1=9.9.9.9
DNS2=1.1.1.1
  1. Проверка параметра ONBOOT: Убедитесь, что параметр ONBOOT=yes действительно присутствует, что говорит системе о том, что интерфейс должен быть активирован при загрузке.

  2. Параметр NM_CONTROLLED: У вас установлен NM_CONTROLLED=no, что означает, что NetworkManager не управляет этим интерфейсом. Если NetworkManager не используется, это правильно. Однако, если он включен, вам нужно будет либо отключить его, либо изменить настройку на NM_CONTROLLED=yes.

  3. Использование NetworkManager: В CentOS 8 сети управляются через NetworkManager, а конфигурация через скрипты устарела. Рассмотрите возможность использования NetworkManager:

    • Для включения интерфейса с помощью NetworkManager выполните следующую команду:

      nmcli connection add type ethernet ifname eth0 con-name eth0 autoconnect yes
      nmcli connection modify eth0 ipv4.method auto

Шаг 2: Проверка статуса службы

Убедитесь, что служба NetworkManager работает:

systemctl status NetworkManager

Если она остановлена, запустите её и включите автозагрузку:

sudo systemctl start NetworkManager
sudo systemctl enable NetworkManager

Шаг 3: Дополнительные меры – использование cron (опционально)

Если вы по каким-то причинам не можете использовать NetworkManager, как альтернативное решение, вы можете настроить задачу с помощью cron, чтобы запустить dhclient eth0 при каждой загрузке системы:

  1. Откройте редактор cron с командой:

    crontab -e
  2. Добавьте следующую строку:

    @reboot dhclient eth0

Заключение

Теперь, после выполнения данных шагов, ваш сетевой интерфейс eth0 должен автоматически активироваться при загрузке системы. Если вы изначально планировали использовать NetworkManager, это будет более современным и рекомендуемым решением. Этот подход не только устранит необходимость вручную вводить команду dhclient, но также обеспечит больший контроль над конфигурацией сети.

Оцените материал
Добавить комментарий

Капча загружается...