Здравствуйте, уважаемые читатели!

Сегодня я бы хотел рассказать о проблеме работы сетевой подсистемы в Astra Linux, с которой я впервые столкнулся в 2019 году.

Общая характеристика следующая — после перезагрузки периодически не работает сеть (статус интерфейса DOWN).

С подобной проблемой ко мне обратились уже дважды за этот год, причём во втором случае коллеги (из другого филиала) воспринимали происходящее, как данность. Именно поэтому я решил рассказать, как выявить и исправить подобную ошибку.

Но вернёмся в 2019 год (для ленивого читателя рекомендую сразу перейти к концу заметки, где изложено решение проблемы).

Я настроил сеть (для этого я использую systemd-networkd), всё проверил — система функционировала, как и было задумано.

Спустя неделю меня позвали мои коллеги, которые не смогли отправить почту — не было соединения с почтовым сервером.

Разумеется, диагностику я начал с утилиты ping — как я и думал, сервер был недоступен.

До этого у нас был ряд физических проблем, поэтому я начал с них — проверка целостности кабеля показала, что кабель исправен, а перезагрузка коммутатора результата не принесла.

Я перезагрузил систему на проблемном компьютере и сеть появилась. До этого, на Astra Linux SE 1.5, я сталкивался с некорректной работой сетевых карт, которая решалась сборкой актуальных модулей ядра, поэтому подумал, что причина могла повториться.

Так как свободного времени в тот момент не было, я решил дождаться повторного сбоя.

Я почти забыл о проблеме — следующий сбой произошёл через пару недель, причём мои коллеги заметили, что обычно (но не всегда) помогает перезагрузка, а если компьютер не выключать — то проблемы с сетью вообще не возникали.

Примерно тогда же появился ещё один компьютер с такой же конфигурацией, что и проблемный. И у него было всё то же самое — проблему нужно было решать.

Я выделил время и приступил к поиску неполадки — начал (и закончил) с лога /var/log/messages.

При внимательном изучении, я заметил, что используемому сетевому интерфейсу периодически присваивается  имя eth0, когда как сетевые настройки я задавал для eth1. И наоборот, встроенный в материнскую плату сетевой интерфейс вместо eth0 иногда становился eth1.

Картина окончательно сложилась – иногда ядро инициализировало сетевые интерфейсы в случайном порядке, тем самым  демон настройки сети корректно отработав, настраивал не активный сетевой интерфейс (банально не тот).

На моей памяти это был первый подобный случай — я задумался «А возможно настроить сетевой интерфейс не по имени?». 

Разумеется можно!  Как обычно всё было придумано до нас.

Systemd-networkd умеет настраивать сетевые интерфейсы не только по имени, но и десятком других способов (например по MAC адресу или наименованию драйвера).

Так как рабочий сетевой интерфейс в моём случае использовал модуль ядра via-rhine, а нерабочий e1000 я решил использовать имя модуля, как отправную точку для его последующей настройки.

Сейчас я в общих чертах отражу алгоритм настройки сети с использованием systemd-networkd, чтобы Вы смогли решить указанную проблему, если она возникнет.

Отключим демоны настройки сети использующиеся по-умолчанию:

systemctl disable NetworkManager networking
systemctl stop NetworkManager networking
systemctl mask NetworkManager

Узнаем, какой модуль использует интересующая нас сетевая карта:

lspci –k
Пример вывода команды lspci -k

Создадим файл конфигурации systemd-networkd:

mcedit /etc/systemd/network/net.network
[Match]
Driver=via-rhine
[Network]
Address=192.168.0.22/24
Gateway=192.168.0.1

Сохраним файл (разумеется, параметры для настройки сети и модуль ядра — укажите свои).

Запустим демон systemd-networkd:

systemctl enable --now systemd-networkd

Вот и всё. Проблема решена и теперь система будет ориентироваться не на имена сетевых интерфейсов, а на модуль ядра, используемый при инициализации данного интерфейса.

Ещё один вариант решения проблемы – просто отключить неиспользуемый сетевой интерфейс в настройках BIOS.

На этом прощаюсь, всем хорошего дня!

2 thoughts on “После перезагрузки пропадает сеть в Astra Linux. Решение.

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

Ваш e-mail не будет опубликован.