Конфигурирование сетевых интерфейсов в CentOS заметно отличается от того, как это выполняется в Ubuntu. В CentOS управлением сетевой подсистемой занимается Network Manager (NM).
Как и другое системное ПО, NM использует конфигурационные файлы для управления сетевыми интерфейсами – они располагаются в директории /etc/sysconfig/network-scripts/.
Необходимо пояснить, что в CentOS есть различие в понятиях «сетевое устройство» и «подключение»:
- Сетевое устройство (network device) – это сетевой интерфейс, через который отправляются\принимаются пакеты. Например – enp0s5;
- Подключение (connection) – конфигурационные настройки (профиль) для устройства.
Таких профилей может быть несколько для одного интерфейса, в зависимости от задачи. Можно быстро менять настройки устройства применяя нужный профиль.
Для взаимодействия с NM используются два программных инструмента:
- nmtui – Network Manager Text User Interface, утилита с графическим интерфейсом (основанная на библиотеке curses);
- nmcli – Network Manager Command Line Interface, утилита для запуска в консоли. Имеет большое количество подкоманд и опций, чаще используется в скриптах для автоматической настройки.
Вызов обеих утилит для просмотра текущих настроек возможен под обычным пользователем, для внесений изменений требуется права root пользователя. NM – systemd сервис, который всегда должен быть запущен для корректной работы сети сервера.
Обычно он сразу добавляется в автозагрузку при установке сервера, проверить включен ли он можно командой:
systemctl status NetworkManager.service
В выводе команды должна быть строка «Active: active (running) since», которая означает, что сервис запущен.
При старте NM проверяет файлы подключений (профилей) в /etc/sysconfig/network-scripts/ и применяет их к соответствующим интерфейсам. Имена профилей начинаются на «ifcfg» – например, «ifcfg-ens0p5».
Настройка интерфейса с nmtui – наглядно и понятно
При запуске nmtui появится окно с запросом на необходимое действие:
Отсюда можно перейти к редактированию профилей, активировать необходимый профиль, и задать имя сервера.
При переходе к редактированию слева доступен список созданных профилей, справа кнопки для действий – создание нового профиля, редактирование, удаление, возврат в предыдущее окно:
В примере имеется только один профиль с названием «System ens0p5».
Для редактирования профиля необходимо нажать «Edit», откроется окно для изменения настроек протоколов IPv4 и IPv6:
В первых двух полях видно название профиля, и для какого сетевого устройства он применяется. На серверах IP адреса часто являются постоянными и задаются вручную. Для этого на нужной версии IP протокола необходимо выбрать тип «Manual» из списка:
Нажатие на кнопку «Show» справа отобразит настройки.
В нужных полях прописываются необходимые значения:
Также можно отметить крестиком доступные опции, например – «Ignore automatically obtained DNS parameters» в случае, если планируется использование DNS серверов, которые отличаются от полученных автоматически.
Важно: прочитайте полностью следующий абзац во избежание потери связи с сервером!
После задания значений необходимо нажать на «OK» — в этот момент будут внесены изменения в конфиг профиля «ifcfg-ens0p5», но эти изменения не применятся к текущим настройкам интерфейса. Для применения необходимо деактивировать предыдущие настройки и активировать измененный профиль – для этого нажать в окне с выбором действий «Activate a connection», отметить профиль и нажать справа «Deactivate». После этого появится кнопка «Activate» – нажатие на нее применит новые настройки. Если деактивируется профиль для единственного интерфейса на сервере, то это приведет к тому, что старые настройки перестанут действовать, и облачный сервер будет отключен от сети. Это не позволит активировать профиль.
Serverspace позволяет в таком случае открыть веб консоль управления сервером, в которой можно запустить nmtui и активировать профиль – сервер снова станет доступным. Применение новых настроек можно безопасно выполнить с помощью утилиты nmcli (описание в следующем разделе), поэтому в nmtui не требуется нажимать на «Activate a connection» в окне выбора действий, а нажать «OK» для сохранения настроек и выхода. Если изменения проводятся для дополнительного интерфейса сервера, отключение которого не приведет к потере связи, то все действия выполняются в nmtui.
Настройка интерфейса с nmcli – быстро и эффективно
Запуск nmcli с необходимыми подкомандами и опциями также позволяет вносить изменения в профиль. Стоит отметить, что доступно большое количество подкоманд для настройки протоколов IP и VPN, создания мостов, агрегирования каналов и др., которые хорошо описаны в man.
В задаче по настройке IP адреса вручную достаточно использовать базовые команды.
Для просмотра имеющихся сетевых устройств:
nmcli device show
В выводе будет содержаться подробная информация: тип, MAC и IP адрес, маршруты и DNS серверы.
Чтобы увидеть профили:
nmcli connection show
Вывод будет намного короче: имя, UUID, тип, и для какого интерфейса применяется профиль.
Имена профилей и интерфейсов могут не совпадать – на это нужно обратить внимание при изменении и активировании профилей.
Изменить конфигурацию профиля можно подкомандой modify. Например, эта команда установит IP адрес, шлюз, DNS сервер в профиле “System enp0s5”:
nmcli connection modify "System enp0s5" ipv4.method manual ipv4 172.16.61.10/24 gw4 172.16.61.1 ipv4.dns "208.67.220.220 208.67.222.222"
- ipv4.method указывает на тип Manual, т.е. задается статичный адрес;
- gw – шлюз по умолчанию;
- ipv4.dns – серверы DNS через пробел.
Отдельными командами можно поменять нужные настройки, например – прописать новые DNS серверы:
nmcli connection modify "System enp0s5" ipv4.dns "8.8.8.8 8.8.4.4"
Как и в случае конфигурирования с помощью nmtui, после вызова этих команд будут внесены изменения в файл настроек /etc/sysconfig/network-scripts/ifcfg-enp0s5, но текущие настройки не поменяются. Для их использования требуется применить профиль еще раз (деактивировать и активировать):
nmcli connection down "System enp0s5" && nmcli connection up "System enp0s5"
Фактически, nmcli вызывается два раза с использованием &&, при котором второй вызов выполниться только если первый выполнится успешно.
Важно выполнить именно последовательный запуск nmcli. Иначе, как было отмечено в разделе про nmtui, если на сервере только один интерфейс, то профиль не будет активирован, и связь с сервером будет утеряна. Используйте этот способ после изменений через nmtui.
Как было сказано в начале, для одного интерфейса может быть более одного профиля (можно создать в nmtui), и тогда список профилей будет содержать и активные (которые в данный момент применяются) и неактивные. Например:
Видно, что профиль «System enp0s5» является активным (выделен зеленым) и применяется к интерфейсу enp0s5. При создании профиля «enp0s5-new» был указан интерфейс enp0s5, но в данный момент он не применяется. Если требуется – его можно быстро применить. Для этого деактивировать «System enp0s5» и активировать «enp0s5-new»:
nmcli connection down "System enp0s5" && sudo nmcli connection up "enp0s5-new"
Настройка интерфейса без nmtui и nmcli
Не обязательно использовать утилиты nmtui и nmcli для внесения изменений в профили.
Можно вручную создать/изменить конфиг файлы «ifcfg-». В этом случае есть большая вероятность ошибок и опечаток, что можно привести к потере подключения к серверу. Поэтому рекомендуется все же использовать указанные утилиты – они корректно формируют конфиги. Эти утилиты часто устанавливаются при установке сервера, поэтому сразу доступны для использования.