Лабораторна робота 5: Основи роботи в мережі
Цілі¶
Після виконання цієї лабораторної роботи ви зможете:
- Створювати віртуальні мережеві пристрої
- Керувати мережевими пристроями та налаштуваннями в системі Linux за допомогою набору інструментів
iproute2(ip) - Керувати мережевими пристроями та налаштуваннями в системі Linux за допомогою набору інструментів NetworkManager (
nmcli) - Усувати типові проблеми з мережею
Приблизний час виконання цієї лабораторної роботи: 60 хвилин
Огляд¶
У цьому лабораторному занятті «Основи роботи в мережі» розглядаються різноманітні вправи з налаштування мережі та усунення несправностей на сервері Linux. Ви будете краще підготовлені для керування мережевими налаштуваннями та усунення несправностей за допомогою звичайних мережевих утиліт, доступних у системах на базі Linux.
Вступ до використовуваних команд¶
Команда iproute2 — це набір розширених утиліт для налаштування та керування мережами в системах Linux, розроблений для заміни традиційного набору net-tools (таких як ifconfig, route та arp).
iproute2 призначена для керування сучасними функціями ядра Linux, включаючи простори імен, маршрутизацію політик та розширену якість обслуговування (QoS). Деякі методи гарантують унікальність [особливо в мережі], а інші ні.
Команда ip є важливим інструментом для керування мережею та її налаштування. Він є частиною пакета iproute2 та пропонує розширений контроль над мережевими інтерфейсами, IP-адресами, таблицями маршрутизації, тунелями та багатьма іншими функціями.
Завдяки гнучкому синтаксису та опціям, він дозволяє системним адміністраторам ефективно контролювати, змінювати та вирішувати проблеми з підключенням.
Його модульна структура дозволяє послідовно керувати різними аспектами конфігурації мережі, спрощуючи адміністрування.
Команда nmcli — це потужний та універсальний інструмент, що входить до складу NetworkManager, призначений для керування мережевими підключеннями в системах Linux безпосередньо з терміналу. На відміну від графічних інструментів, nmcli дозволяє ефективно налаштовувати, контролювати та керувати мережевими інтерфейсами як на локальних, так і на віддалених комп’ютерах, що робить його особливо корисним для системних адміністраторів та досвідчених користувачів.
Він підтримує широкий спектр функцій, включаючи налаштування дротових, бездротових та VPN-з’єднань, керування мобільними мережами та налагодження стану мережі.
Завдання 1¶
1. Змінити ім'я хоста¶
Існує багато методів ідентифікації або посилання на комп’ютери. Деякі з цих методів гарантують унікальність (особливо в мережі), а інші — ні. Ім’я комп’ютера можна вважати зручним для людини. В ідеалі імена хостів комп’ютерів мають бути унікальними залежно від того, як ними керують або призначають. Однак, оскільки будь-хто з правами адміністратора в системі може односторонньо призначити системі будь-яке ім'я хоста, унікальність не завжди гарантована.
У цій першій вправі розглядаються деякі загальні інструменти для керування іменем хоста комп’ютера.
Щоб змінити ім'я хоста системи¶
-
Увійшовши у систему, перегляньте поточне ім’я хосту за допомогою популярної утиліти
hostname. Впишіть:hostname -
Знову запустіть утиліту
hostnameз іншою опцією, щоб переглянути FQDN сервера:hostname --fqdnПитання
Що означає FQDN? І чому результат звичайного імені хоста сервера відрізняється від його FQDN?
-
Використовуйте утиліту
hostnamectl, щоб переглянути поточні імена хостів. Впишіть:hostnamectl
Це багато додаткової інформації!
-
Додайте параметр
--staticдо командиhostnamectl, щоб переглянути статичне ім’я хоста для вашого сервера. Впишіть:hostnamectl --static -
Додайте параметр
--transientдо командиhostnamectl, щоб переглянути тимчасове ім’я хоста для вашого сервера. -
Тепер спробуйте опцію
--prettyдля командиhostnamectl, щоб переглянути красиве ім’я хоста для вашого сервера. -
Встановіть нове тимчасове ім’я хоста для вашого сервера. Впишіть:
hostnamectl --transient set-hostname my-temp-server1 -
Перевірте тимчасову зміну імені хоста. Впишіть:
hostnamectl --transient -
Встановіть нове статичне ім’я хоста для вашого сервера. Впишіть:
hostnamectl set-hostname my-static-hostname1 -
Перевірте зміну статичного імені хоста.
Питання
Зверніться до сторінки довідки щодо
hostnamectl. Які відмінності між гарними, тимчасовими та статичними іменами хостів?
2. Створення віртуального пристрою¶
Першим критичним кроком перед переходом до інших вправ у цій мережевій лабораторній роботі є створення спеціального віртуального мережевого інтерфейсу, відомого як пристрій MACVTAP.
Пристрої MACVTAP – це віртуальні пристрої, що поєднують властивості програмного інтерфейсу, відомого як пристрій TAP, з властивостями драйвера MACVLAN.
Створення та робота з цими пристроями MACVTAP дозволить вам безпечно тестувати, змінювати та налаштовувати різні пов’язані з мережею завдання. Ці віртуальні мережеві інтерфейси будуть використовуватися в різних вправах без порушення існуючої конфігурації мережі.
Підказка
Пристрої TAP забезпечують лише програмний інтерфейс, до якого програми з простору користувача можуть легко отримати доступ. Пристрої TAP надсилають і отримують необроблені кадри Ethernet.
MACVLAN використовується для створення віртуальних мережевих інтерфейсів, які приєднуються до фізичних мережевих інтерфейсів.
Пристрої MACVTAP мають власну унікальну MAC-адресу, відмінну від MAC-адреси основної фізичної мережевої карти, з якою вони пов’язані.
Щоб отримати список усіх мережевих інтерфейсів у системі¶
Ця вправа починається зі створення необхідних інтерфейсів віртуальної мережі MACVTAP. Це дозволить вам безпечно тестувати, змінювати та налаштовувати різні завдання, пов’язані з конфігурацією мережі. Ці віртуальні мережеві інтерфейси будуть використовуватися в різних вправах без порушення існуючої конфігурації мережі.
Для створення інтерфейсів macvtap¶
-
Переконайтеся, що ви ввійшли на сервер.
-
Використайте
ipдля перегляду існуючих мережевих інтерфейсів у вашій системі. Впишіть:ip link show -
Спробуйте скористатися командою
nmcli, щоб отримати список усіх мережевих пристроїв. Впишіть:nmcli -f DEVICE device -
Запитуйте віртуальну файлову систему низького рівня /sys, щоб вручну перерахувати ВСІ мережеві інтерфейси, доступні на вашому сервері. Впишіть:
ls -l /sys/class/net/ | grep -v 'total' | awk '{print $9}'
Щоб увімкнути або вимкнути мережевий інтерфейс¶
-
Переконайтеся, що ви ввійшли в систему як користувач із правами адміністратора.
-
Вам потрібно запитати та визначити належні типи мережевих пристроїв, доступних на вашому сервері, щоб пов’язати їх із пристроєм
macvtap. Впишіть:ls -l /sys/class/net/ | grep -v 'virtual\|total' | tail -n 1 | awk '{print $9}' eno2Результат демонстраційної системи демонструє один відповідний інтерфейс під назвою eno2.
-
Виконайте команду, щоб знову ідентифікувати пристрій, але збережіть повернуте значення в змінній з іменем $DEVICE1. Ще раз перевірте значення $DEVICE1 за допомогою echo. Введіть наступні 2 окремі команди, щоб виконати це:
# DEVICE1=$(ls -l /sys/class/net/ | grep -v 'virtual\|total' | tail -n 1 | awk '{print $9}') # echo $DEVICE1 -
Тепер створіть інтерфейс MACVTAP під назвою -
macvtap1. Новий інтерфейс буде пов’язаний з $DEVICE1. Впишіть:ip link add link $DEVICE1 name macvtap1 type macvtap mode bridge -
Перевірте створення інтерфейсу
macvtap1. Впишіть:ip --brief link show macvtap1Зверніть увагу на стан DOWN інтерфейсу
macvtapу вихідних даних. -
Перегляньте детальну інформацію про всі мережеві пристрої типу MACVTAP у системі. Впишіть:
ip --detail link show type macvtap -
Виконайте команду, щоб переглянути всі мережеві інтерфейси на сервері та порівняйте вихідні дані з результатами аналогічної команди в попередньому розділі «Щоб перелічити всі мережеві інтерфейси в системі».
Щоб встановити IP-адреси на мережевому інтерфейсі¶
-
Перевірте стан мережевого інтерфейсу
macvtap1. Впишіть:ip link show macvtap1 -
Увімкніть мережевий інтерфейс
macvtap1(якщо він наразі вимкнений). Запустіть:ip link set macvtap1 up -
Перевірте зміни статусу, виконавши:
ip -br link show macvtap1Підказка
Якщо вам колись знадобиться вимкнути мережевий інтерфейс, синтаксис команди
ipдля цього такий:ip link set <IFNAME> down.
Наприклад, щоб вимкнути мережевий інтерфейс під назвоюmacvtap7, ви повинні виконати:```bash ip link set macvtap7 down ```
Тепер, коли ви налаштували інтерфейси macvtap, ви можете безпечно виконувати різноманітні завдання налаштування мережі та усунення несправностей у вправах, що залишилися.
3. Призначити IP-адреси¶
IP (Інтернет-протокол) адреса — це унікальний числовий ідентифікатор, що призначається кожному пристрою, підключеному до мережі, яка використовує IP-протокол для зв’язку. Він функціонує як цифрова «адреса», яка дозволяє пристроям надсилати та отримувати дані через мережу, як локальну (LAN), так і глобальну (Інтернет).
Встановлення IPv4-адреси для інтерфейсів macvtap¶
-
Перегляньте IP-адреси всіх мережевих інтерфейсів на вашому сервері. Впишіть:
ip address show -
Призначте IPv4-адресу — 172.16.99.100 — для
macvtap1. Впишітьip address add 172.16.99.100/24 dev macvtap1 -
Перевірте призначення IPv4-адреси для
macvtap1ip address show macvtap1 -
Використовуйте команду
nmcli, щоб переглянути адреси IPv4 для всіх інтерфейсів у вашій системі. Впишіть:nmcli --get-values IP4.ADDRESS,GENERAL.DEVICE device show
Встановлення IPv6-адреси для інтерфейсів macvtap¶
-
Починаючи з
macvtap1, призначте адресу 2001:db8::1/64 IPv6macvtap1, виконавши:ip -6 address add 2001:db8::1/64 dev macvtap1 -
Перевірте призначення адрес IPv6, введіть:
ip --brief -6 address show macvtap1 && ip -br -6 address show macvtap1 -
Використовуйте
nmcli, щоб переглянути адреси IPv6 для всіх інтерфейсів вашої системи. Впишіть:nmcli --get-values IP6.ADDRESS,GENERAL.DEVICE device show
5. Управління маршрутизацією¶
Маршрутизація в Linux — це механізм, який дозволяє операційній системі керувати мережевим трафіком, спрямовуючи пакети даних до призначених пунктів призначення. Ядро Linux використовує таблицю маршрутизації для визначення оптимального шляху, яким мають слідувати пакети, на основі IP-адрес, масок підмережі та шлюзів.
Ця функціональність є важливою як у домашніх середовищах, так і у складних корпоративних мережах, де кілька мережевих інтерфейсів та пристроїв повинні взаємодіяти один з одним.
Щоб налаштувати шлюз за замовчуванням для системи¶
-
Перегляньте поточну таблицю маршрутизації для системи. Впишіть:
ip route show default via 192.168.2.1 dev enp1s0 proto dhcp src 192.168.2.121 metric 100 10.99.99.0/24 dev tunA proto kernel scope link src 10.99.99.1 metric 450 linkdown 192.168.2.0/24 dev enp1s0 proto kernel scope link src 192.168.2.121 metric 100 -
Використовуючи одну з мереж, відображену в крайньому лівому стовпці вихідних даних попередньої команди, як аргумент, відобразіть запис таблиці маршрутів для цієї мережі. Наприклад, щоб показати запис таблиці маршрутів ядра для мережі 10.99.99.0/24, введіть:
ip route show 10.99.99.0/24 -
Надішліть запит системі, щоб побачити маршрут, який використовуватиметься, щоб дістатися до прикладу довільного пункту призначення. Наприклад, щоб переглянути деталі маршрутизації для отримання IP-адреси призначення 8.8.8.8, введіть:
ip route get 8.8.8.8 8.8.8.8 via 192.168.2.1 dev enp1s0 src 192.168.2.121 uid 0 cacheОсь розбивка вихідних даних у простому вигляді:
- IP-адреса призначення: 8.8.8.8 – це IP-адреса, до якої ми намагаємося дістатися
- Via: 192.168.2.1 – це IP-адреса наступного переходу, на яку буде надіслано пакет, щоб досягти пункту призначення
- Пристрій: enp1s0 – це мережевий інтерфейс, який буде використано для надсилання пакета
- Source IP Address: 192.168.2.121 – це IP-адреса мережевого інтерфейсу, яка використовуватиметься як адреса джерела для пакета
- UID: 0 — це ідентифікатор користувача процесу, який ініціював цю команду
- Cache: це поле вказує, чи цей маршрут кешується в таблиці маршрутизації ядра
-
Тепер подивіться, як система направлятиме пакет з однієї IP-адреси на іншу IP-адресу призначення. Впишіть:
ip route get from 192.168.1.1 to 192.168.1.2 local 192.168.1.2 from 192.168.1.1 dev lo uid 0 cache <local>
Налаштування шлюзу за замовчуванням для системи¶
У системі Linux шлюз за замовчуванням являє собою точку доступу за замовчуванням, через яку мережевий трафік спрямовується до зовнішніх мереж, не підключених безпосередньо до локального інтерфейсу.
Його правильне налаштування є важливим для забезпечення підключення системи до віддалених мереж та зовнішніх служб.
-
Використовуйте
ipдля запиту та списку поточного шлюзу за замовчуванням у вашій системі. Впишіть:ip route show default -
Встановіть шлюз за умовчанням через інтерфейс
macvtap1. Впишіть:ip route add default via 192.168.1.1 -
Перевірте нову конфігурацію шлюзу за замовчуванням
ip route show default
Додавання статичного маршруту до таблиці маршрутизації¶
-
Додати демонстраційний статичний маршрут для фіктивної мережі 172.16.0.0/16 через 192.168.1.2. Впишіть:
ip route add 172.16.0.0/16 via 192.168.1.2 -
Перевірте додавання статичного маршруту, виконавши:
ip route show 172.16.0.0/16
Видалення статичного маршруту з таблиці маршрутизації¶
-
Видалити статичний маршрут для 10.0.0.0/24
ip route del 10.0.0.0/24 via 192.168.1.2 -
Перевірте видалення статичного маршруту
ip route show
6. Видалити IP-адреси¶
Видалення IP-адрес із сервера є фундаментальною операцією для керування безпекою та ресурсами мережі. Ця процедура може бути необхідною з кількох причин: зменшення DDoS-атак, скасування доступу для зловмисних користувачів, звільнення IP-адрес, які більше не використовуються, або дотримання корпоративних політик безпеки.
У цій вправі показано, як видалити налаштовані IP-адреси (IPv4 та IPv6) на мережевих інтерфейсах.
Видалення призначеної IPv4-адреси з мережевого інтерфейсу¶
-
Видаліть IP-адресу на
macvtap1. Впишіть:ip address del 172.16.99.100/24 dev macvtap1 -
Перевірте видалення IP-адреси, виконавши:
ip address show macvtap1
Видалення призначеної IPv6-адреси з мережевого інтерфейсу¶
-
Видаліть адресу IPv6 на
macvtap1за допомогою цієї команди:ip -6 address del 2001:db8::1/64 dev macvtap1 -
Перевірте видалення адреси IPv6 за допомогою:
ip -6 address show macvtap1
7. Налаштуйте мережеві інтерфейси за допомогою nmcli¶
Команда nmcli (Інтерфейс командного рядка NetworkManager) – це інструмент для керування мережевими підключеннями. Розроблений для взаємодії з NetworkManager, він дозволяє ефективно керувати, налаштовувати та моніторити мережі безпосередньо з терміналу, без потреби в графічних інтерфейсах.
У цій вправі показано, як налаштувати мережеві інтерфейси за допомогою NetworkManager.
Примітка
За замовчуванням будь-які зміни конфігурації мережі, внесені за допомогою nmcli (NetworkManager), зберігатимуться між перезавантаженнями системи.
Це відрізняється від змін конфігурації, які виконуються за допомогою утиліти ip.
Створення інтерфейсу macvtap за допомогою nmcli¶
-
Почніть зі списку всіх доступних мережевих пристроїв, виконавши:
nmcli device -
Далі визначте базовий мережевий пристрій, з яким потрібно зв’язати новий MACVTAP interface. Збережіть значення ідентифікованого пристрою в змінній
$DEVICE2. Впишіть:DEVICE2=$(ls -l /sys/class/net/ | grep -v 'virtual\|total' | tail -n 1 | awk '{print $9}') -
Тепер створіть нове підключення NetworkManager під назвою
macvtap2і пов’язаний інтерфейс MACVTAP під назвою -macvtap2. Новий інтерфейс буде пов’язано з$DEVICE2. Впишіть:nmcli con add con-name macvtap2 type macvlan mode bridge tap yes dev $DEVICE2 ifname macvtap2 -
Використовуйте
nmcli, щоб перевірити створення інтерфейсуmacvtap2. Впишіть:nmcli device show macvtap2 -
Використовуйте
nmcli, щоб перевірити створення підключенняmacvtap2. Впишіть:nmcli connection show macvtap2 -
Так само використовуйте
ip, щоб перевірити створення інтерфейсуmacvtap2. Впишіть:ip --brief link show macvtap2Зверніть увагу на стан виводу UP інтерфейсу
macvtap.Питання
Яка різниця між поняттями з’єднання та пристрою у NetworkManager?
Зміна конфігурації мережі інтерфейсу за допомогою nmcli¶
-
Почніть із запиту адреси IPv4 для нового інтерфейсу
macvtap2, виконавши команду:nmcli -f ipv4.addresses con show macvtap2Значення властивості ipv4.addresses має бути порожнім.
-
Налаштуйте з’єднання
macvtap2із такими параметрами:- IPv4 Method = manual
- IPv4 Addresses = 172.16.99.200/24
- Gateway = 172.16.99.1
- DNS Servers = 8.8.8.8 and 8.8.4.4
- DNS Search domain = example.com
Впишіть:
nmcli connection modify macvtap2 ipv4.method manual \ ipv4.addresses 172.16.99.200/24 ipv4.gateway 172.16.99.1 \ ipv4.dns 8.8.8.8,8.8.4.4 ipv4.dns-search example.com -
Перевірте налаштування нової адреси IPv4, виконавши:
nmcli -f ipv4.addresses con show macvtap2 -
Запустіть дещо інший варіант попередньої команди, щоб включити конфігурацію часу виконання наведених параметрів. Впишіть:
nmcli -f ipv4.addresses,IP4.ADDRESS con show macvtap2Питання
Яка різниця між цими властивостями NetworkManager - ipv4.addresses і IP4.ADDRESS?
-
Перевірте зміни в мережевому підключенні за допомогою команди
ip. Впишіть:ip -br address show dev macvtap2 -
Щоб належним чином застосувати нові параметри та зробити їх новими значеннями часу виконання, скористайтеся
nmcli, щоб спочатку перемкнути з’єднання (тобто деактивувати його). Впишіть:nmcli connection down macvtap2 Connection macvtap2 successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5) -
Тепер активуйте нове підключення, щоб застосувати нові налаштування. Впишіть:
nmcli connection up macvtap2 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6) -
Перегляньте остаточні налаштування за допомогою утиліти ip. Впишіть:
ip -br address show dev macvtap2
8. Налаштувати DNS-сервери¶
Служба DNS (Система доменних імен) є фундаментальним компонентом комп’ютерних мереж, що відповідає за перетворення доменних імен на IP-адреси і навпаки. Це дозволяє здійснювати зв'язок як в локальних мережах, так і в Інтернеті.
Для виявлення та усунення типових проблем з мережею¶
-
Налаштуйте DNS-сервери для
macvtap1nmcli con mod macvtap1 ipv4.dns 8.8.8.8, 8.8.4.4 -
Перевірте конфігурацію DNS-сервера
nmcli con show macvtap1 | grep DNS
9. Усунення проблем з мережею¶
Комп'ютерні мережі є важливими для зв'язку та обміну даними, але вони часто стикаються з проблемами, які перешкоджають їхньому належному функціонуванню. Різні фактори, включаючи помилки конфігурації, збої обладнання або перешкоди в з'єднанні, можуть спричинити ці несправності.
Щоб отримати список усіх активних мережевих підключень¶
Моніторинг та перевірка стану мережевих інтерфейсів є важливими для забезпечення належного функціонування підключеної системи.
-
Перевірте стан мережевих інтерфейсів
ip link show
Цей крок перевіряє, чи може пристрій дістатися до іншого вузла в мережі, такого як сервер, маршрутизатор або інший клієнт.
-
Перевірте мережеве з’єднання з віддаленим хостом (наприклад, google.com)
ping google.com
Пінгування локального шлюзу – це важлива перевірка, яка дозволяє переконатися, що з’єднання між пристроєм та його маршрутизатором за замовчуванням працює належним чином. Шлюз – це точка доступу до зовнішніх мереж, і несправність на цьому етапі може перешкодити доступу до Інтернету або інших підмереж.
-
Спробуйте ping-нути локальний шлюз. Впишіть:
ping _gatewayПитання
За допомогою якого механізму ваша система здатна правильно розпізнати ім'я
_gatewayу правильну IP-адресу для вашого локально налаштованого шлюзу за замовчуванням?
Перегляд активних підключень¶
Активні мережеві з’єднання представляють собою відкриті канали зв’язку між вашим комп’ютером та іншими пристроями або службами в мережі. Ці з’єднання можуть бути локальними (в межах однієї машини) або віддаленими (до зовнішніх серверів або клієнтів).
Щоб переглянути журнали, пов’язані з демоном NetworkManager, для усунення несправностей¶
-
Список усіх активних мережевих підключень
ss -tuln
Відстежуйте мережевий трафік¶
Мережевий трафік у Linux стосується даних, як вхідних, так і вихідних, якими обмінюються система та мережа. Цей потік інформації є важливим для функціонування таких служб, як Інтернет, електронна пошта, передача файлів та зв'язок між пристроями.
Моніторинг та управління цією інформацією є критично важливими для забезпечення безпеки, налагодження та оптимізації продуктивності мережі.
Моніторинг мережевого трафіку в режимі реального часу¶
-
Перехоплення мережевого трафіку на певному інтерфейсі (наприклад,
macvtap1)tcpdump -i macvtap1Аналізуйте захоплені пакети та спостерігайте за мережевою активністю. Ви можете зупинити перехоплення пакетів, натиснувши Ctrl+C
Перегляд мережевих журналів¶
Мережеві журнали важливі для моніторингу, усунення несправностей та безпеки системи. Щоразу, коли пакет даних надсилається або отримується через мережу, операційна система записує детальну інформацію про ці дії. Ці журнали допомагають системним адміністраторам виявляти підозрілі з’єднання, помилки конфігурації та потенційні загрози безпеці.
Перегляд журналів демона NetworkManager для усунення несправностей¶
-
Переглядайте мережеві журнали
journalctl -u NetworkManager
Author: Wale Soyinka
Contributors: Steven Spencer, Ganna Zhyrnova, Franco Colussi