Вопрос или проблема
У меня есть виртуальная машина, которая подключена к сети с 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
-
Проверка параметра
ONBOOT
: Убедитесь, что параметрONBOOT=yes
действительно присутствует, что говорит системе о том, что интерфейс должен быть активирован при загрузке. -
Параметр
NM_CONTROLLED
: У вас установленNM_CONTROLLED=no
, что означает, что NetworkManager не управляет этим интерфейсом. Если NetworkManager не используется, это правильно. Однако, если он включен, вам нужно будет либо отключить его, либо изменить настройку наNM_CONTROLLED=yes
. -
Использование 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
при каждой загрузке системы:
-
Откройте редактор cron с командой:
crontab -e
-
Добавьте следующую строку:
@reboot dhclient eth0
Заключение
Теперь, после выполнения данных шагов, ваш сетевой интерфейс eth0
должен автоматически активироваться при загрузке системы. Если вы изначально планировали использовать NetworkManager, это будет более современным и рекомендуемым решением. Этот подход не только устранит необходимость вручную вводить команду dhclient
, но также обеспечит больший контроль над конфигурацией сети.