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