Перейти до змісту

NetworkManager: Набір інструментів налаштування мережі

У 2004 році Red Hat запустила проект NetworkManager, метою якого є спрощення для користувачів Linux задоволення потреб поточного управління мережами, особливо управління бездротовими мережами. Сьогодні проєктом керує GNOME. Домашню сторінку NetworkManager можна знайти тут.

Офіційне знайомство – NetworkManager – це стандартний набір інструментів для налаштування мережі Linux. Він підтримує різні мережеві налаштування від настільних комп'ютерів до серверів і мобільних пристроїв, а також ідеально інтегрований з популярними середовищами робочого столу та інструментами керування конфігурацією сервера.

Набір в основному включає два інструменти командного рядка:

  • nmtui. Налаштовує мережу в графічному інтерфейсі.
shell > dnf -y install NetworkManager NetworkManager-tui
shell > nmtui
NetworkManager TUI
Редагувати підключення
Активувати підключення
Встановити ім'я хоста системи
Вийти
OK
  • nmcli. Використовує командний рядок для налаштування мережі, або чистий командний рядок, або інтерактивний командний рядок.
Shell > nmcli connection show
NAME    UUID                                  TYPE      DEVICE
ens160  25106d13-ba04-37a8-8eb9-64daa05168c9  ethernet  ens160

Для RockyLinux 8.x ми представили, як налаштувати його мережу у цьому документі. Ви можете використовувати vim для редагування файлу конфігурації мережевої карти в каталозі /etc/sysconfig/network-script/, або ж nmcli/nmtui, обидва варіанти прийнятні.

Правила іменування для диспетчера пристроїв udev

Для RockyLinux 9.x, якщо ви перейдете до каталогу /etc/sysconfig/network-scripts/, там буде ** readme-ifcfg-rh.txt** текст опису, який пропонує вам перейти до каталогу /etc/NetworkManager/system-connections/.

Shell > cd /etc/NetworkManager/system-connections/  && ls
ens160.nmconnection

Тут ens160 позначає назву мережевої карти в системі. Ви можете задатися питанням, чому назва виглядає так дивно? Це пов'язано з диспетчером пристроїв udev. Він підтримує багато різних схем іменування. За замовчуванням фіксовані імена призначаються відповідно до прошивки, топології та інформації про розташування. Його переваги включають:

  • Назви пристроїв цілком передбачувані.
  • Назви пристроїв залишаються фіксованими, навіть якщо ви додаєте або видаляєте апаратне забезпечення, оскільки повторного перерахування не відбувається.
  • Несправне обладнання можна легко замінити.

У RHEL 9 та відповідних операційних системах версій спільноти узгоджене найменування пристроїв увімкнено за замовчуванням. Менеджер пристроїв udev генеруватиме назви пристроїв за такою схемою:

Схема Опис Приклад
1 Назви пристроїв містять індексні номери вбудованих пристроїв, надані мікропрограмою або BIOS. Якщо ця інформація недоступна або не застосовується, udev використовує схему 2. eno1
2 Назви пристроїв містять індексні номери слотів гарячого підключення PCI Express (PCIe), надані мікропрограмою або BIOS. Якщо ця інформація недоступна або не застосовується, udev використовує схему 3. ens1
3 Назви пристроїв включають фізичне розташування роз'єму обладнання. Якщо ця інформація недоступна або не застосовується, udev використовує схему 5. enp2s0
4 Назви пристроїв містять MAC-адресу. Red Hat Enterprise Linux не використовує цю схему за замовчуванням, але адміністратори можуть використовувати її за бажанням. enx525400d5e0fb
5 Традиційна непередбачувана схема іменування ядра. Якщо udev не може застосувати жодну з інших схем, диспетчер пристроїв використовує цю схему. eth0

Диспетчер пристроїв udev називає префікс мережевої карти на основі типу інтерфейсу:

  • en для Ethernet.
  • wl для бездротової локальної мережі (WLAN).
  • ww для бездротової глобальної мережі (WWAN).
  • ib, мережа InfiniBand.
  • sl, Інтернет-протокол послідовної лінії (slip)

Додайте кілька суфіксів до префікса, наприклад:

  • o номер_індексу_борта
  • s hot_plug_slot_index_number [f] функція [d] device_id
  • x MAC_адреса
  • [P] номер домену p шина s слот [f] функція [d] device_id
  • [P] номер домену p шина s слот [f] функція [u] Usb порт [c] інтерфейс конфігурації [i]

Ви можете скористатися man 7 systemd.net-naming-scheme, щоб отримати детальнішу інформацію.

Команда nmcli (рекомендовано)

Користувачі можуть не тільки налаштовувати мережу в чистому режимі командного рядка, а й використовувати інтерактивні команди для налаштування мережі.

nmcli connection

Команда nmcli connection може показувати, видаляти, додавати, змінювати, редагувати, вгору, вниз тощо.

Для конкретного використання зверніться до nmcli connection add --help, nmcli connection edit --help, nmcli connection modify --help тощо.

Наприклад, щоб налаштувати нове з’єднання зі статичним ip ipv4 за допомогою чистого командного рядка та запустити його автоматично, це може бути:

Shell > nmcli  connection  add  type  ethernet  con-name   CONNECTION_NAME  ifname  NIC_DEVICE_NAME   \
ipv4.method  manual  ipv4.address "192.168.10.5/24"  ipv4.gateway "192.168.10.1"  ipv4.dns "8.8.8.8,114.114.114.114" \
ipv6.method  disabled  autoconnect yes

Якщо ви використовуєте DHCP для отримання адреси ipv4, це може бути:

Shell > nmcli  connection  add  type ethernet con-name CONNECTION_NAME  ifname  NIC_DEVICE_NAME \
ipv4.method  auto  ipv6.method  disabled  autoconnect  yes

За вищевказаної конфігурації з'єднання не активується. Вам потрібно виконати такі операції:

Shell > nmcli connection up  NIC_DEVICE_NAME

Увійдіть в інтерактивний інтерфейс за допомогою ключового слова edit на основі існуючого підключення та змініть його:

Shell > nmcli connection  edit  CONNECTION_NAME
nmcli > help

Ви також можете змінити одну або декілька властивостей з'єднання безпосередньо з командного рядка за допомогою ключового слова modify. Наприклад:

Shell > nmcli connection modify CONNECTION_NAME autoconnect yes ipv6.method dhcp

Info

Операції через nmcli або nmtui зберігаються постійно, а не тимчасово.

Агрегація посилань

Деякі використовують кілька мережевих карт для агрегації посилань. На початку використання технології bonding існувало сім режимів роботи (0~6), і режим bond підтримував максимум дві мережеві карти. Пізніше технологія teaming поступово використовується як альтернатива, існує п'ять режимів роботи, а в командному режимі може використовуватися до восьми мережевих карт. Порівняльне посилання між об'єднанням та командною роботою можна знайти за цим посиланням.

Наприклад, режим склеювання 0:

Shell > nmcli  connection  add  type  bond  con-name  BOND_CONNECTION_NAME   ifname  BOND_NIC_DEVICE_NAME  mode 0
Shell > nmcli  connection  add  type  bond-slave   ifname NIC_DEVICE_NAME1   master  BOND_NIC_DEVICE_NAME
Shell > nmcli  connection  add  type  bond-slave   ifname NIC_DEVICE_NAME2   master  BOND_NIC_DEVICE_NAME

Конфігурація мережевої карти

Warning

Не рекомендується вносити зміни за допомогою vim або інших редакторів.

Ви можете переглянути детальнішу інформацію в man 5 NetworkManager.conf і man 5 nm-settings-nmcli.

Вміст файлу конфігурації мережевої карти NetworkManager є файлом ключа у стилі init. Наприклад:

Shell > cat /etc/NetworkManager/system-connections/ens160.nmconnection
[connection]
id=ens160
uuid=5903ac99-e03f-46a8-8806-0a7a8424497e
type=ethernet
interface-name=ens160
timestamp=1670056998

[ethernet]
mac-address=00:0C:29:47:68:D0

[ipv4]
address1=192.168.100.4/24,192.168.100.1
dns=8.8.8.8;114.114.114.114;
method=manual

[ipv6]
addr-gen-mode=default
method=disabled

[proxy]
  • Рядки, які починаються з # і порожні рядки, вважаються коментарями.
  • Усередині [ та ] знаходиться секція, в якій мається намір оголосити заголовок, а під нею знаходяться конкретні пари ключ-значення, що містяться в ній. Кожен оголошений заголовок та його пара ключ-значення утворюють синтаксичний сегмент.
  • Будь-який файл із суфіксом .nmconnection може використовувати NetworkManager.

Назви заголовків connection можуть містити такі загальні пари ключ-значення:

назва ключа опис
id Псевдонім con-name, значенням якого є рядок.
uuid Універсальний унікальний ідентифікатор, значенням якого є рядок.
type Тип з’єднання, значення якого можуть бути ethernet, bluetooth, vpn, vlan тощо. Ви можете скористатися командою man nmcli для перегляду всіх підтримуваних типів.
interface-name Ім'я мережевого інтерфейсу, до якого прив'язано це з'єднання, значенням якого є рядок.
timestamp Мітка часу Unix, у секундах. Значення тут – це кількість секунд з 1 січня 1970 року.
autoconnect Чи запускається він автоматично під час запуску системи. Значення має булевий тип.

Назви ethernet можуть містити такі загальні пари ключ-значення:

назва ключа опис
mac-address MAC фізична адреса.
mtu Maximum Transmission Unit (Максимальна одиниця передачі).
auto-negotiate Чи слід автоматично вести переговори. Значення має булевий тип.
duplex Значення можуть бути половиною (напівдуплекс), повним (повнодуплекс)
speed Вкажіть швидкість передачі даних мережевої карти. 100 — це 100 Мбіт/с. Якщо auto-negotiate=false, необхідно встановити ключ speed та ключ duplex; якщо auto-negotiate=true, використовується узгоджена швидкість, і запис тут не набуває чинності (це стосується лише специфікації BASE-T 802.3); якщо не дорівнює нулю, ключ duplex повинен мати значення.

Імена заголовків ipv4 можуть містити такі загальні пари ключ-значення:

назва ключа опис
addresses Призначені IP-адреси
gateway Шлюз (наступний крок) для інтерфейсу
dns Використовуються сервери доменних імен
method Метод, який має бути отриманий за допомогою IP. Значення має рядковий тип. Значення можуть бути: автоматичне, вимкнено, локальне посилання, ручне, спільне

Author: tianci li

Contributors: Steven Spencer