109.2 Урок 2
Сертифікат: |
LPIC-1 |
---|---|
Версія: |
5.0 |
Розділ: |
109 Основи мережних технологій |
Тема: |
109.2 Постійна конфігурація мережі |
Урок: |
2 з 2 |
Вступ
Linux підтримує практично всі мережні технології, які використовуються для підключення серверів, контейнерів, віртуальних машин, робочих столів і мобільних пристроїв. З’єднання між усіма цими мережними вузлами можуть бути динамічними та неоднорідними, що вимагає відповідного керування операційною системою, яка в них працює.
У минулому для різних дистрибутивів розробляли власні індивідуальні рішення для керування динамічною мережною інфраструктурою. Сьогодні такі інструменти, як NetworkManager і systemd, надають більш комплексні та інтегровані функції для забезпечення всіх конкретних вимог.
NetworkManager
Більшість дистрибутивів Linux використовують демон служби NetworkManager для налаштування та контролю мережних підключень системи. Мета NetworkManager — зробити конфігурацію мережі максимально простою та автоматичною. При використанні DHCP, наприклад, NetworkManager організовує зміни маршруту, отримання IP-адреси та оновлення локального списку DNS-серверів, якщо це необхідно. Якщо доступні як дротове, так і бездротове з’єднання, NetworkManager надає пріоритет дротовому з’єднанню за замовчуванням. NetworkManager намагатиметься підтримувати принаймні одне з’єднання активним весь час, коли це можливо.
Note
|
Запит із використанням DHCP (протокол динамічної конфігурації вузла) зазвичай надсилається через мережний адаптер, щойно зв’язок із мережею встановлено. Сервер DHCP, активний у мережі, відповідає налаштуваннями (IP-адреса, маска мережі, маршрут за замовчуванням тощо), які запитувач повинен використовувати для зв’язку через протокол IP. |
За замовчуванням демон NetworkManager контролює мережні інтерфейси, не зазначені у файлі /etc/network/interfaces
. Це робиться для того, щоб не заважати іншим методам налаштування, які також можуть бути присутніми, таким чином змінюючи лише неконтрольовані інтерфейси.
Служба NetworkManager працює у фоновому режимі з правами root і запускає необхідні дії для підтримки системи в режимі онлайн. Звичайні користувачі можуть створювати та змінювати мережні з’єднання з клієнтськими програмами, які, хоча самі не мають привілеїв адміністратора, здатні спілкуватися з основною службою для виконання запитаних дій.
Клієнтські програми для NetworkManager доступні як для командного рядка, так і для графічного середовища. Для останнього клієнтська програма постачається як елемент середовища робочого столу (під такими іменами, як nm-tray, network-manager-gnome, nm-applet або plasma-nm), і зазвичай він доступен через піктограму індикатора в кутку панелі робочого столу або з утиліти налаштування системи.
У командному рядку сам NetworkManager має дві клієнтські програми: nmcli
і nmtui
. Обидві програми мають однакові основні функції, але nmtui
має інтерфейс на основі curses, тоді як nmcli
є більш комплексною командою, яку також можна використовувати в сценаріях. Команда nmcli
розділяє всі пов’язані з мережею властивості, якими керує NetworkManager, на категорії під назвою objects:
general
-
Загальний стан і операції NetworkManager.
networking
-
Загальний контроль мережі.
radio
-
Перемикачі NetworkManager.
connection
-
Підключення NetworkManager.
device
-
Пристрої, якими керує NetworkManager.
agent
-
Секретний агент NetworkManager або polkit-агент.
monitor
-
Відстежує зміни NetworkManager.
Ім’я об’єкта є основним аргументом команди nmcli
. Щоб показати загальний статус зв’язку системи, наприклад, об’єкт general
слід надати як аргумент:
$ nmcli general STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN connected full enabled enabled enabled enabled
Стовпець STATE
повідомляє, чи підключена система до мережі чи ні. Якщо з’єднання обмежено через неправильну зовнішню конфігурацію або обмеження доступу, у стовпці CONNECTIVITY
не повідомлятиметься про статус full
підключення. Якщо в стовпці CONNECTIVITY
з’являється Portal
, це означає, що для завершення процесу підключення потрібні додаткові кроки автентифікації (зазвичай через веб-браузер). Решта стовпців повідомляють про стан бездротових з’єднань (якщо такі є), або WIFI
, або WWAN
(Wide Wireless Area Network, тобто стільникові мережі). Суфікс HW
вказує на те, що стан відповідає мережному пристрою, а не мережному з’єднанню системи, тобто він повідомляє, увімкнено або вимкнено обладнання для економії енергії.
На додаток до аргументу об’єкта, nmcli
також потребує аргумент команди для виконання. Команда status
використовується за умовчанням, якщо команда не має аргументу. Тому команда nmcli general
насправді інтерпретується як nmcli general status
.
Навряд чи потрібно виконувати будь-які дії, коли мережний адаптер підключений безпосередньо до точки доступу через кабелі, але бездротові мережі потребують подальшої взаємодії, щоб приймати нових учасників. nmcli
полегшує процес підключення та зберігає налаштування для автоматичного підключення в майбутньому, отже, це дуже корисно для ноутбуків або інших мобільних пристроїв.
Перш ніж підключатися до Wi-Fi, зручно спочатку вивести перелік доступних мереж в локальній зоні. Якщо в системі є робочий адаптер Wi-Fi, то об’єкт device
використовуватиме його для сканування доступних мереж за допомогою команди nmcli device wifi list
:
$ nmcli device wifi list IN-USE BSSID SSID MODE CHAN RATE SIGNAL BARS SECURITY 90:F6:52:C5:FA:12 Hypnotoad Infra 11 130 Mbit/s 67 ▂▄▆_ WPA2 10:72:23:C7:27:AC Jumbao Infra 1 130 Mbit/s 55 ▂▄__ WPA2 00:1F:33:33:E9:BE NETGEAR Infra 1 54 Mbit/s 35 ▂▄__ WPA1 WPA2 A4:33:D7:85:6D:B0 AP53 Infra 11 130 Mbit/s 32 ▂▄__ WPA1 WPA2 98:1E:19:1D:CC:3A Bruma Infra 1 195 Mbit/s 22 ▂___ WPA1 WPA2
Більшість користувачів, ймовірно, використовуватимуть ім’я в стовпці SSID
, щоб ідентифікувати мережу, яка їх цікавить. Наприклад, команда nmcli
може знову підключитися до мережі під назвою Hypnotoad
за допомогою об’єкта device
:
$ nmcli device wifi connect Hypnotoad
Якщо команда виконується в емуляторі терміналу в графічному середовищі, то з’явиться діалогове вікно із запитом на пароль мережі. Під час виконання в текстовій консолі пароль може надаватися разом з іншими аргументами:
$ nmcli device wifi connect Hypnotoad password MyPassword
Якщо мережа Wi-Fi приховує своє SSID-ім’я, nmcli
все одно може підключитися до неї за допомогою додаткових аргументів hidden yes
:
$ nmcli device wifi connect Hypnotoad password MyPassword hidden yes
Якщо в системі є більше одного адаптера Wi-Fi, той, який буде використовуватися, може бути вказано за допомогою ifname
. Це приклад підключення за допомогою адаптера з назвою wlo1
:
$ nmcli device wifi connect Hypnotoad password MyPassword ifname wlo1
Після успішного з’єднання NetworkManager дасть йому назву за відповідним SSID (якщо це з’єднання Wi-Fi) і збереже його для майбутніх з’єднань. Назви підключень та їхні UUID виводяться за допомогою команди nmcli connection show
:
$ nmcli connection show NAME UUID TYPE DEVICE Ethernet 53440255-567e-300d-9922-b28f0786f56e ethernet enp3s5 tun0 cae685e1-b0c4-405a-8ece-6d424e1fb5f8 tun tun0 Hypnotoad 6fdec048-bcc5-490a-832b-da83d8cb7915 wifi wlo1 4G a2cf4460-0cb7-42e3-8df3-ccb927f2fd88 gsm --
Показано тип кожного з’єднання, яке може бути ethernet
, wifi
, tun
, gsm
, bridge
тощо, а також пристрій, з яким вони пов’язані. Щоб виконувати дії з певним підключенням, потрібно вказати його ім’я або UUID. Щоб вимкнути підключення Hypnotoad
треба виконати наступне:
$ nmcli connection down Hypnotoad Connection 'Hypnotoad' successfully deactivated
Подібним чином можна використати команду nmcli connection up Hypnotoad
, щоб відкрити з’єднання, оскільки тепер воно збережено NetworkManager. Ім’я інтерфейсу також можна використовувати для повторного підключення, але в цьому випадку замість нього слід використовувати об’єкт device
:
$ nmcli device disconnect wlo2 Device 'wlo1' successfully disconnected.
Ім’я інтерфейсу також можна використовувати для відновлення з’єднання:
$ nmcli device connect wlo2 Device 'wlo1' successfully activated with '833692de-377e-4f91-a3dc-d9a2b1fcf6cb'.
Зауважте, що UUID з’єднання змінюється щоразу, коли відкривається з’єднання, тому для узгодженості бажано використовувати його ім’я.
Якщо бездротовий адаптер доступний, але не використовується, його можна вимкнути для економії енергії. Цього разу об’єкт radio слід передати до nmcli
:
$ nmcli radio wifi off
Звичайно, бездротовий пристрій можна знову увімкнути командою nmcli radio wifi on
.
Після встановлення підключень у майбутньому не буде потрібно ручне введення, оскільки NetworkManager визначає доступні відомі мережі та автоматично підключається до них. За потреби NetworkManager має плагіни, які можуть розширити його функціональні можливості, наприклад, плагін для підтримки VPN-з’єднань.
systemd-networkd
Системи, на яких запущено systemd, можуть додатково використовувати вбудовані демони для керування підключенням до мережі: systemd-networkd
для керування мережевими інтерфейсами та systemd-resolved
для керування локальним вирішенням імен. Ці служби зворотно сумісні із застарілими методами конфігурації Linux, але конфігурація мережевих інтерфейсів має особливості, про які варто знати.
Конфігураційні файли, які використовує systemd-networkd для налаштування мережних інтерфейсів, можна знайти в будь-якому з наступних трьох каталогів:
/lib/systemd/network
-
Мережний каталог системи.
/run/systemd/network
-
Незалежний мережний каталог середовища виконання.
/etc/systemd/network
-
Каталог локальної мережі адміністрування.
Файли обробляються в лексикографічному порядку, тому їх назви рекомендується починати з цифр, щоб порядок був легшим для читання та налаштування.
Файли в /etc
мають найвищий пріоритет, тоді як файли в /run
мають пріоритет над файлами з такою ж назвою в /lib
. Це означає, що якщо файли конфігурації в різних каталогах мають однакові назви, тоді systemd-networkd ігноруватиме файли з меншим пріоритетом. Подібне розділення файлів — це спосіб змінити параметри інтерфейсу без необхідності змінювати вихідні файли: зміни можна розмістити в /etc/systemd/network
, щоб замінити зміни в /lib/systemd/network
.
Призначення кожного файлу конфігурації залежить від його суфікса. Імена файлів, що закінчуються на .netdev
, використовуються systemd-networkd для створення віртуальних мережевих пристроїв, таких як пристрої bridge або tun. Файли із закінченням .link
встановлюють низькорівневі конфігурації для відповідного мережного інтерфейсу. systemd-networkd виявляє та налаштовує мережні пристрої автоматично, коли вони з’являються, а також ігнорує пристрої, налаштовані іншими засобами, тому в більшості ситуацій немає необхідності додавати ці файли.
Найважливішим суфіксом є .network
. Файли, які використовують цей суфікс, можна використовувати для налаштування мережних адрес і маршрутів. Як і в інших типах конфігураційних файлів, ім’я файлу визначає порядок, у якому файл буде оброблено. Мережний інтерфейс, на який посилається файл конфігурації, визначається в розділі [Match]
всередині файлу.
Наприклад, мережний інтерфейс Ethernet enp3s5
можна вибрати у файлі /etc/systemd/network/30-lan.network
за допомогою запису Name=enp3s5
у розділі [Match]
:
[Match] Name=enp3s5
Список імен, розділених пробілами, також приймається для відповідності багатьом мережним інтерфейсам із цим самим файлом одночасно. Імена можуть містити шаблони у стилі оболонки, наприклад, en*
. Інші записи надають різні правила відповідності, наприклад, вибір мережного пристрою за його MAC-адресою:
[Match] MACAddress=00:16:3e:8d:2b:5b
Параметри пристрою знаходяться в розділі [Network]
файлу. Для простої статичної конфігурації мережі потрібні лише записи Address
і Gateway
:
[Match] MACAddress=00:16:3e:8d:2b:5b [Network] Address=192.168.0.100/24 Gateway=192.168.0.1
Щоб використовувати протокол DHCP замість статичних IP-адрес, слід використовувати запис DHCP
:
[Match] MACAddress=00:16:3e:8d:2b:5b [Network] DHCP=yes
Служба systemd-networkd намагатиметься отримати адреси IPv4 та IPv6 для мережного інтерфейсу. Щоб використовувати лише IPv4, слід записати DHCP=ipv4
. Подібним чином DHCP=ipv6
ігноруватиме налаштування IPv4 і використовуватиме лише надану IPv6-адресу.
Захищені паролем бездротові мережі також можуть бути налаштовані за допомогою systemd-networkd, але мережний адаптер має бути вже автентифікований у мережі, перш ніж systemd-networkd зможе його налаштувати. Автентифікацію виконує WPA supplicant, програма, призначена для налаштування мережних адаптерів для мереж, захищених паролем.
Першим кроком є створення файлу облікових даних за допомогою команди wpa_passphrase
:
# wpa_passphrase MyWifi > /etc/wpa_supplicant/wpa_supplicant-wlo1.conf
Ця команда візьме парольну фразу для бездротової мережі MyWifi
зі стандартного введення та збереже її хеш у /etc/wpa_supplicant/wpa_supplicant-wlo1.conf
. Зауважте, що назва файлу має містити відповідну назву бездротового інтерфейсу, отже, wlo1
у назві файлу.
Менеджер systemd читає файли парольної фрази WPA в /etc/wpa_supplicant/
і створює відповідну службу для запуску WPA-запитувача та запуску інтерфейсу. Файл парольної фрази, створений у прикладі, матиме відповідну одиницю служби під назвою wpa_supplicant@wlo1.service
. Команда systemctl start wpa_supplicant@wlo1.service
пов’яже бездротовий адаптер із віддаленою точкою доступу. Команда systemctl enable wpa_supplicant@wlo1.service
робить асоціацію автоматичною під час завантаження.
Нарешті, файл .network
, що відповідає інтерфейсу wlo1
, має бути присутнім у /etc/systemd/network/
, оскільки systemd-networkd використовуватиме його для налаштування інтерфейсу, щойно WPA-запитувач завершить асоціацію з точкою доступу.
Вправи до посібника
-
Що означає слово
Portal
у стовпціCONNECTIVITY
у виведенні командиnmcli general status
? -
Як звичайний користувач може використовувати команду
nmcli
у консольному терміналі для підключення до бездротової мережіMyWifi
, захищеної паролемMyPassword
? -
Якою командою можна ввімкнути бездротовий адаптер, якщо він раніше був відключений операційною системою?
-
В якому каталозі слід розміщувати файли спеціальної конфігурації, коли systemd-networkd керує мережними інтерфейсами?
Дослідницькі вправи
-
Як користувач може виконати команду
nmcli
, щоб видалити невикористане підключення під назвоюHotel Internet
? -
NetworkManager періодично сканує мережі Wi-Fi, а команда
nmcli device wifi list
виводить лише точки доступу, знайдені під час останнього сканування. Як слід використовувати командуnmcli
, щоб вказати NetworkManager відразу повторно просканувати всі доступні точки доступу? -
Який запис
name
слід використовувати в розділі[Match]
конфігураційного файлу systemd-networkd, щоб відповідати всім інтерфейсам Ethernet? -
Як слід виконати команду
wpa_passphrase
, щоб використовувати парольну фразу, надану як аргумент, а не зі стандартного введення?
Підсумки
Цей урок охоплює загальні інструменти, які використовуються в Linux для керування різнорідними та динамічними мережними з’єднаннями. Хоча більшість методів конфігурації не вимагають втручання користувача, іноді це необхідно, і такі інструменти, як NetworkManager і systemd-networkd, можуть звести зусилля до мінімуму. На уроці розглянуто такі теми:
-
Як NetworkManager і systemd-networkd інтегруються з системою.
-
Як користувач може взаємодіяти з NetworkManager і systemd-networkd.
-
Базова конфігурація інтерфейсу з NetworkManager і systemd-networkd.
Розглянуті технології, команди та процедури:
-
Команди клієнта NetworkManager:
nmtui
іnmcli
. -
Сканування та підключення до бездротових мереж за допомогою відповідних команд
nmcli
. -
Постійні підключення до мережі Wi-Fi за допомогою systemd-networkd.
Відповіді до вправ посібника
-
Що означає слово
Portal
у стовпціCONNECTIVITY
у виведенні командиnmcli general status
?Це означає, що для завершення процесу підключення потрібні додаткові кроки автентифікації (зазвичай через веб-браузер).
-
Як звичайний користувач може використовувати команду
nmcli
у консольному терміналі для підключення до бездротової мережіMyWifi
, захищеної паролемMyPassword
?У текстовому терміналі команда буде
$ nmcli device wifi connect MyWifi password MyPassword
-
Якою командою можна ввімкнути бездротовий адаптер, якщо він раніше був відключений операційною системою?
$ nmcli radio wifi on
-
В якому каталозі слід розміщувати файли спеціальної конфігурації, коли systemd-networkd керує мережними інтерфейсами?
У каталозі локальної мережі адміністрування:
/etc/systemd/network
.
Відповіді до дослідницьких вправ
-
Як користувач може виконати команду
nmcli
, щоб видалити невикористане підключення під назвоюHotel Internet
?$ nmcli connection delete "Hotel Internet"
-
NetworkManager періодично сканує мережі Wi-Fi, а команда
nmcli device wifi list
виводить лише точки доступу, знайдені під час останнього сканування. Як слід використовувати командуnmcli
, щоб вказати NetworkManager відразу повторно просканувати всі доступні точки доступу?Користувач root може запустити
nmcli device wifi rescan
, щоб змусити NetworkManager повторно сканувати доступні точки доступу. -
Який запис
name
слід використовувати в розділі[Match]
конфігураційного файлу systemd-networkd, щоб відповідати всім інтерфейсам Ethernet?Запис
name=en*
, оскількиen
є префіксом для інтерфейсів Ethernet у Linux, а systemd-networkd приймає оболонкові шаблони. -
Як слід виконати команду
wpa_passphrase
, щоб використовувати парольну фразу, надану як аргумент, а не зі стандартного введення?Пароль слід вказувати одразу після SSID, як у
wpa_passphrase MyWifi MyPassword
.