Утилита system-config-network-tui, которой настраивали сеть в CentOS 5 и 6, давно удалена из дистрибутивов. В AlmaLinux, Rocky Linux и RHEL 9/10 сетью управляет NetworkManager, а для него есть два инструмента: текстовое меню nmtui и командная утилита nmcli. Первая похожа на старый system-config-network-tui, вторая удобна для скриптов и удалённой работы.
Самый частый сценарий — задать статический IP. В nmcli это две команды: nmcli connection modify с адресом, шлюзом и DNS и nmcli connection up для применения. Настройки сохраняются в файле профиля в каталоге /etc/NetworkManager/system-connections/ в формате keyfile. Старые файлы /etc/sysconfig/network-scripts/ifcfg-* в версии 9 ещё читаются, но в версии 10 их поддержку убрали.
Ниже — как установить и запустить nmtui, как то же самое сделать в nmcli, как устроен keyfile и как проверить результат. Примеры проверены по документации для AlmaLinux / Rocky Linux 9 и 10; в Debian и Ubuntu есть отличия, о них отдельный раздел.
Что случилось с system-config-network-tui
В CentOS 5 и 6 сеть настраивали скрипты network-scripts, а system-config-network-tui был текстовым редактором их файлов. Утилита написана на Python 2 и регулярно ломалась. Например, после обновления CentOS 5.7 она падала с ошибкой:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd1 in position 0: ordinal not in range(128)
Причина была в русской локали: программа не умела работать с не-ASCII-символами. Обходили так: LANG=C system-config-network-tui. Сегодня эта ошибка встречается только на очень старых системах, которые давно пора переносить.
Начиная с RHEL 7 основным способом настройки сети стал NetworkManager, в RHEL 9 пакет network-scripts удалён. Замены system-config-network-tui внутри RHEL-ветки — nmtui и nmcli. Если вам по-прежнему нужен «экран с полями», используйте nmtui.
Установка и запуск nmtui
В минимальной установке AlmaLinux и Rocky Linux nmtui может отсутствовать. Он находится в отдельном пакете:
sudo dnf install NetworkManager-tui
sudo nmtui
Откроется меню из нескольких пунктов:
- Edit a connection — создать, изменить или удалить профиль подключения;
- Activate a connection — включить или отключить профиль;
- Set system hostname — задать имя хоста.
Сразу перейти к нужному разделу можно командами nmtui edit, nmtui edit ens18, nmtui connect и nmtui hostname. Управление — стрелки, Tab, Enter и пробел для флажков.
Если рамки меню рисуются непонятными символами, проблема в терминале или локали. Попробуйте запустить с LANG=C nmtui или подключиться клиентом SSH с кодировкой UTF-8.
Статический IP через nmtui
- Запустите
sudo nmtuiи выберите Edit a connection. - Выберите профиль интерфейса, например
ens18, и нажмите Enter. - В разделе IPv4 CONFIGURATION смените
AutomaticнаManualи откройте раздел кнопкой Show. - В поле Addresses укажите адрес с маской в формате CIDR:
192.0.2.10/24. - В поле Gateway — шлюз:
192.0.2.1. - В поле DNS servers — один или несколько DNS-серверов, в Search domains — домен поиска, если нужен.
- Проверьте, что отмечен флажок Automatically connect.
- Нажмите OK, затем вернитесь в меню.
Важно: сохранение в nmtui не применяет изменения к работающему интерфейсу. Зайдите в Activate a connection, отключите и снова включите профиль. Либо выполните sudo nmcli connection up ens18. Если вы подключены по SSH через этот же интерфейс и меняете его адрес, связь оборвётся — заранее подготовьте консоль.
Настройка сети через nmcli
nmcli удобнее на серверах: команды можно сохранить, повторить и выполнить скриптом. Все настройки описывают профили подключений (connection), которые привязаны к устройствам (device).
Посмотреть текущее состояние
nmcli general status
nmcli device status
nmcli connection show
Вывод nmcli device status примерно такой:
DEVICE TYPE STATE CONNECTION
ens18 ethernet connected ens18
lo loopback connected (externally) lo
Подробности одного профиля: nmcli connection show ens18. Только IPv4-параметры: nmcli -f ipv4 connection show ens18.
Статический IP, шлюз и DNS
sudo nmcli connection modify ens18 \
ipv4.method manual \
ipv4.addresses 192.0.2.10/24 \
ipv4.gateway 192.0.2.1 \
ipv4.dns "192.0.2.53 192.0.2.54" \
ipv4.dns-search example.com \
connection.autoconnect yes
sudo nmcli connection up ens18
Порядок важен: если указать ipv4.method manual без адреса, nmcli вернёт ошибку. Поэтому все параметры передаются в одной команде.
На удалённом сервере выполняйте modify и up одной строкой через &&, чтобы применение не зависело от SSH-сессии. Если ошибка в адресе или шлюзе отрежет вас от сервера, поможет только консоль.
Дополнительный адрес, маршрут, DNS при DHCP
# добавить второй IP к существующим (знак +)
sudo nmcli connection modify ens18 +ipv4.addresses 192.0.2.11/24
# удалить адрес (знак -)
sudo nmcli connection modify ens18 -ipv4.addresses 192.0.2.11/24
# статический маршрут в другую сеть
sudo nmcli connection modify ens18 +ipv4.routes "198.51.100.0/24 192.0.2.254"
# адрес по DHCP, но DNS свои, а не от DHCP-сервера
sudo nmcli connection modify ens18 ipv4.method auto \
ipv4.ignore-auto-dns yes ipv4.dns "192.0.2.53"
sudo nmcli connection up ens18
Новый профиль для второго интерфейса
sudo nmcli connection add type ethernet con-name lan ifname ens19 \
ipv4.method manual ipv4.addresses 10.10.0.5/24
sudo nmcli connection up lan
Шлюз по умолчанию указывайте только в одном профиле. Если у второго интерфейса есть шлюз, но маршрут по умолчанию через него не нужен, добавьте ipv4.never-default yes.
Статический IPv6
IPv6 настраивается так же, только параметры начинаются с ipv6.. Провайдеры обычно выдают адрес из подсети /64 и шлюз, часто это link-local-адрес маршрутизатора:
sudo nmcli connection modify ens18 \
ipv6.method manual \
ipv6.addresses 2001:db8:10::10/64 \
ipv6.gateway 2001:db8:10::1 \
ipv6.dns "2001:db8:10::53"
sudo nmcli connection up ens18
Если провайдер раздаёт адреса через SLAAC, достаточно оставить ipv6.method auto. Значение ipv6.method disabled выключает IPv6 на этом интерфейсе.
VLAN поверх интерфейса
Тегированный VLAN создаётся отдельным профилем. Родительский интерфейс при этом может оставаться без адреса:
sudo nmcli connection add type vlan con-name vlan100 ifname ens18.100 \
dev ens18 id 100 ipv4.method manual ipv4.addresses 10.100.0.5/24
sudo nmcli connection up vlan100
Проверить, что VLAN поднят и тег правильный: ip -d link show ens18.100, в выводе будет строка с vlan protocol 802.1Q id 100.
Имя хоста
sudo nmcli general hostname srv01.example.com
# или
sudo hostnamectl set-hostname srv01.example.com
DNS: почему не надо править /etc/resolv.conf
В AlmaLinux и Rocky Linux файл /etc/resolv.conf по умолчанию генерирует NetworkManager. Ручные правки пропадут при следующем переподключении. DNS задаётся в профиле через ipv4.dns и ipv4.dns-search, как показано выше.
Если DNS по какой-то причине должен управляться вручную, отключите управление в NetworkManager отдельным файлом:
# /etc/NetworkManager/conf.d/90-dns-none.conf
[main]
dns=none
После этого sudo systemctl reload NetworkManager, и /etc/resolv.conf можно редактировать сами. Без веской причины так делать не стоит.
Проверить, какие DNS использует интерфейс: nmcli device show ens18 | grep DNS и cat /etc/resolv.conf.
Формат keyfile вместо ifcfg
С версии 9 RHEL и её клоны сохраняют новые профили в формате keyfile — это INI-файл в каталоге /etc/NetworkManager/system-connections/ с расширением .nmconnection. Профиль из примера выше выглядит примерно так:
# /etc/NetworkManager/system-connections/ens18.nmconnection
[connection]
id=ens18
uuid=4c0b4c7e-xxxx-xxxx-xxxx-xxxxxxxxxxxx
type=ethernet
interface-name=ens18
autoconnect=true
[ethernet]
[ipv4]
method=manual
address1=192.0.2.10/24
gateway=192.0.2.1
dns=192.0.2.53;192.0.2.54;
dns-search=example.com;
[ipv6]
method=auto
Правила работы с файлами:
- владелец root, права
600, иначе NetworkManager игнорирует файл; - после ручной правки выполните
sudo nmcli connection reload, затемsudo nmcli connection up ens18; - проще и безопаснее менять профиль через nmcli или nmtui: они проверяют значения.
Соответствие старых параметров ifcfg
| ifcfg (CentOS 6/7) | nmcli | keyfile |
|---|---|---|
BOOTPROTO=none / static | ipv4.method manual | [ipv4] method=manual |
BOOTPROTO=dhcp | ipv4.method auto | [ipv4] method=auto |
IPADDR= + PREFIX= / NETMASK= | ipv4.addresses 192.0.2.10/24 | address1=192.0.2.10/24 |
GATEWAY= | ipv4.gateway | gateway= |
DNS1=, DNS2= | ipv4.dns | dns= |
ONBOOT=yes | connection.autoconnect yes | autoconnect=true |
HWADDR= | ethernet.mac-address | [ethernet] mac-address= |
MACADDR= | ethernet.cloned-mac-address | [ethernet] cloned-mac-address= |
Подробнее про разницу между HWADDR и MACADDR и про смену MAC — в статье Как сменить MAC-адрес сетевой карты в Linux.
Перевод ifcfg в keyfile перед обновлением до версии 10
Если система обновлялась с версии 8, профили могли остаться в /etc/sysconfig/network-scripts/. В версии 9 они работают, в версии 10 — нет. Проверьте, где лежат профили, и переведите их:
# колонка FILENAME покажет путь к файлу профиля
nmcli -f NAME,UUID,FILENAME connection show
# перевести все профили из ifcfg в keyfile
sudo nmcli connection migrate
После миграции убедитесь, что в /etc/NetworkManager/system-connections/ появились файлы .nmconnection, и перезагрузите сервер для проверки.
Безопасная смена сети на удалённом сервере
Ошибка в адресе или шлюзе на сервере в дата-центре означает поездку или звонок в поддержку. Несколько правил:
- работайте при доступной консоли: IPMI, iDRAC, iLO или консоль гипервизора;
- применяйте изменения одной строкой:
nmcli connection modify ... && nmcli connection up ...; - для сложных изменений используйте nmstate:
nmstatectl apply --no-commit --timeout 120 файл.ymlприменит конфигурацию и откатит её, если в течение таймаута вы не выполнитеnmstatectl commit. Пакетnmstateставится черезdnf; - сохраните текущую конфигурацию до правки:
sudo cp -a /etc/NetworkManager/system-connections /root/nm-backup-$(date +%F).
Отключать NetworkManager и возвращаться к самописным скриптам не нужно: в RHEL 9 и 10 это неподдерживаемый путь.
Проверка результата
# адреса всех интерфейсов кратко
ip -br addr
# маршруты, в том числе маршрут по умолчанию
ip route
# параметры от NetworkManager
nmcli -f IP4 device show ens18
# связь со шлюзом и внешним миром
ping -c 3 192.0.2.1
ping -c 3 1.1.1.1
# работает ли DNS
getent hosts linux-lab.ru
Вывод ip -br addr после настройки примерно такой:
lo UNKNOWN 127.0.0.1/8 ::1/128
ens18 UP 192.0.2.10/24 fe80::xxxx:xxxx:xxxx:xxxx/64
Если IPv6 на сервере не нужен, его можно отключить в том же профиле параметром ipv6.method disabled. Все способы и их побочные эффекты описаны в статье Как отключить IPv6 в Linux.
Финальная проверка — перезагрузка. После неё интерфейс должен подняться с тем же адресом, шлюзом и DNS.
Таблица: симптом, причина, решение
| Симптом | Причина | Решение |
|---|---|---|
nmtui: command not found | Не установлен пакет | dnf install NetworkManager-tui |
| Изменения в nmtui сохранены, но адрес старый | Профиль не переактивирован | nmcli connection up ens18 или Activate в nmtui |
ipv4.addresses: this property cannot be empty for 'method=manual' | method manual задан без адреса | Передайте адрес в той же команде |
DNS в /etc/resolv.conf сбрасываются | Файл генерирует NetworkManager | Задайте DNS через ipv4.dns |
Ручная правка .nmconnection не применяется | Не выполнен reload или неверные права | chmod 600, nmcli connection reload |
| После обновления до версии 10 сеть не поднялась | Профили остались в ifcfg | Создайте профиль из консоли, на будущее — nmcli connection migrate до обновления |
| Два маршрута по умолчанию | Шлюз указан в двух профилях | Уберите шлюз или задайте ipv4.never-default yes |
Профиль есть, но устройство unmanaged | Устройство исключено из управления NetworkManager | Проверьте /etc/NetworkManager/conf.d/, nmcli device set ens18 managed yes |
Отличия в Debian и Ubuntu
| Система | Что настраивает сеть по умолчанию | nmtui и nmcli |
|---|---|---|
| AlmaLinux / Rocky Linux 9 | NetworkManager, keyfile; ifcfg ещё читается | nmcli в базовой системе, nmtui — пакет NetworkManager-tui |
| AlmaLinux / Rocky Linux 10 | NetworkManager, только keyfile | Так же |
| Debian 12 / 13 без графики | ifupdown, /etc/network/interfaces | Входят в пакет network-manager, по умолчанию не установлен |
| Debian 12 / 13 с графикой | NetworkManager | Установлены |
| Ubuntu 24.04 Server | netplan + systemd-networkd | Не используются, настройка в /etc/netplan/ |
| Ubuntu 24.04 Desktop | netplan + NetworkManager | Работают, профили сохраняются в YAML netplan |
В Debian NetworkManager не управляет интерфейсами, которые описаны в /etc/network/interfaces. Если вы ставите NetworkManager на сервер, уберите интерфейс из этого файла, иначе nmcli покажет его как unmanaged. На Ubuntu Server не смешивайте netplan и NetworkManager без необходимости: выберите один способ.
Если сервер — виртуальная машина в Proxmox VE, интерфейс обычно называется ens18, как в примерах. Про сам гипервизор — статья Установка Proxmox VE на свой сервер.
Частые вопросы
Можно ли установить system-config-network-tui в AlmaLinux 9?
Нет. Пакета нет в репозиториях AlmaLinux, Rocky Linux и RHEL начиная с версии 7, а сама утилита работала с удалёнными network-scripts. Её место занял nmtui: такой же текстовый интерфейс, но для NetworkManager.
Чем nmtui отличается от nmcli?
Обе утилиты меняют одни и те же профили NetworkManager. nmtui — меню для ручной работы, удобно, когда нужно один раз поправить адрес. nmcli — командная строка: её можно использовать в скриптах, Ansible и документации, команды легко повторить на другом сервере.
Нужно ли перезапускать NetworkManager после изменений?
Обычно нет. После nmcli connection modify достаточно nmcli connection up для этого профиля. После ручной правки файла — nmcli connection reload и затем up. Перезапуск службы целиком на удалённом сервере только увеличивает риск потерять связь.
Где теперь лежат настройки сети в RHEL 9?
Новые профили — в /etc/NetworkManager/system-connections/*.nmconnection. Старые, созданные до обновления, могут оставаться в /etc/sysconfig/network-scripts/ifcfg-*. Точный путь к файлу каждого профиля показывает nmcli -f NAME,FILENAME connection show.
Можно ли править ifcfg-файлы в AlmaLinux 9?
Можно, пока они есть и установлен плагин ifcfg-rh, но это устаревший путь. В версии 10 ifcfg не поддерживается. Лучше один раз выполнить nmcli connection migrate и дальше работать с keyfile через nmcli.
Что делать, если nmtui падает или показывает кракозябры?
Проверьте локаль и терминал: locale, переменную TERM, кодировку SSH-клиента. Быстрый обход, как и в старом system-config-network-tui, — запуск с LANG=C nmtui. Если не помогает, сделайте то же самое через nmcli.