Модуль 0.5: Щоденні мережеві інструменти
Щоденне використання | Складність:
[QUICK]| Час: 45 хв
Передумови
Розділ «Передумови»Перед початком цього модуля:
- Обов’язково: Модуль 0.2 — Оточення та Дозволи
- Бажано: Модуль 0.4 — Сервіси та логи
Що ви зможете робити після цього модуля
Розділ «Що ви зможете робити після цього модуля»Після завершення цього модуля ви зможете:
- Діагностувати проблеми з мережевим з’єднанням за допомогою ping, traceroute, dig та ss
- Перевіряти порти, що слухають, та активні з’єднання для визначення запущених сервісів
- Налаштувати базові правила файрвола за допомогою iptables або firewalld
- Дебажити збої DNS-резолвінгу, запитуючи nameserver-и напряму через dig
Чому цей модуль важливий
Розділ «Чому цей модуль важливий»Щось зламалося. Застосунок не підключається. DNS не резолвиться. API повертає дивний статус-код. Под не може достукатися до бази даних.
Що ви будете робити?
Ви будете розслідувати. Інструменти в цьому модулі — це ваш набір детектива. Кожен інженер DevOps, SRE або системний адміністратор береться за ці інструменти першими — ще до читання логів чи перевірки дашбордів. Це стетоскоп, який ви прикладаєте до мережі, щоб почути, що там відбувається.
Різниця між початківцем і досвідченим інженером при вирішенні мережевих проблем? Досвідчений уже знає, які саме п’ять команд йому потрібно запустити. Після цього модуля це будете знати й ви.
Чи знали ви?
Розділ «Чи знали ви?»-
ping— один із найстаріших мережевих інструментів, що досі використовуються щодня. Майк Муусс написав його у грудні 1983 року і назвав на честь звуку сонара в підводних човнах. Інструмент майже не змінився за 40 років, бо він ідеально робить свою справу. -
curlпідтримує понад 25 протоколів, включаючи HTTP, HTTPS, FTP, SFTP та навіть MQTT. Його творець, Даніель Стенберг, підтримує проєкт із 1998 року, і зараз curl встановлено на понад 20 мільярдах пристроїв. Так, саме мільярдах. -
Публічний DNS Google (8.8.8.8) обробляє понад 1 трильйон запитів на день. Коли ви робите
ping 8.8.8.8, ви звертаєтеся до одного з найбільш завантажених сервісів на планеті, і він все одно відповідає за мілісекунди. -
Інструмент
tracerouteбув написаний у 1987 році шляхом хитрого використання поля TTL (Time to Live) в IP-пакетах. Кожен маршрутизатор зменшує TTL на 1, і коли він стає 0, надсилає помилку назад. Збільшуючи TTL від 1 і вище, traceroute покроково малює весь шлях до цілі. Геніальний хак.
Інструмент 1: Перевірка зв’язку через ping
Розділ «Інструмент 1: Перевірка зв’язку через ping»ping — це перше, за що ви беретеся, коли хост здається недоступним. Він надсилає запити ICMP і повідомляє, чи повернулися вони (і як швидко).
Базове використання
Розділ «Базове використання»# Пінг хоста — натисніть Ctrl+C, щоб зупинитиping google.com
# Надіслати рівно 4 пакетиping -c 4 google.com
# Пінг IP адреси напряму (без DNS)ping -c 4 8.8.8.8Читаємо вивід
Розділ «Читаємо вивід»| Поле | Що воно означає |
|---|---|
64 bytes | Розмір пакету відповіді |
icmp_seq=1 | Порядковий номер — якщо номери пропускаються, пакети втрачено |
ttl=117 | Time to Live — кожний роутер на шляху зменшує це число на 1 |
time=5.42 ms | Затримка (latency) — скільки часу пакет ішов туди й назад |
0% packet loss | Критичний показник — будь-яка втрата пакетів каже про проблему |
Що каже TTL (Детективний метод)
Розділ «Що каже TTL (Детективний метод)»Різні операційні системи починають з різних значень TTL:
- 64 — Linux
- 128 — Windows
- 255 — Мережеве обладнання (роутери)
Якщо ви пінгуєте сервер і бачите ttl=52, це скоріш за все Linux (64 - 12 стрибків через роутери = 52). Якщо бачите ttl=115 — це ймовірно Windows.
Інструмент 2: Взаємодія через HTTP з curl
Розділ «Інструмент 2: Взаємодія через HTTP з curl»Якщо ping каже “хост живий”, то curl каже “і ось що він відповідає”.
Базові запити
Розділ «Базові запити»# Простий GET запит — показує тіло відповідіcurl https://example.com
# Переходити за редиректами (багато сайтів перенаправляють з http на https)curl -L http://google.com
# Зберегти вивід у файлcurl -o page.html https://example.com
# "Тихий" режим (без прогрес-бару) — ідеально для скриптівcurl -s https://httpbin.org/getРежим відладки: Бачити все
Розділ «Режим відладки: Бачити все»Прапор -v (verbose) показує повний діалог між вами та сервером:
curl -v https://httpbin.org/getКлючова підказка: рядки, що починаються з >, це те, що надіслали ви. Рядки з < — це те, що відповів сервер.
Інструмент 3: Перевірка відкритих портів з ss
Розділ «Інструмент 3: Перевірка відкритих портів з ss»Команда ss показує, які програми “слухають” мережеві порти на вашій машині. Це заміна старій команді netstat.
Головна команда
Розділ «Головна команда»# Показати всі порти, що слухають (TCP та UDP), з назвами процесівsudo ss -tulpnРозшифровка прапорців:
-t— TCP порти.-u— UDP порти.-l— Тільки ті, що слухають (чекають підключення).-p— Показати процес (PID), що використовує порт.-n— Показувати номери портів замість назв сервісів.
Розуміння адрес
Розділ «Розуміння адрес»Колонка Local Address каже, хто може підключитися:
0.0.0.0:80— Будь-хто з будь-якого інтерфейсу (вебсервери).127.0.0.1:5432— Тільки з самої цієї машини (безпечно для баз даних).[::]:6443— Будь-хто через IPv6.
Інструмент 4: DNS запити з dig та host
Розділ «Інструмент 4: DNS запити з dig та host»Коли “сайт не відкривається”, перше питання: чи працює DNS?
Швидка перевірка з host
Розділ «Швидка перевірка з host»# Назва -> IPhost google.com
# IP -> Назва (зворотний пошук)host 8.8.8.8Детальний аналіз з dig
Розділ «Детальний аналіз з dig»# Повна інформація про доменdig google.com
# Тільки IP адреса (зручно для скриптів)dig +short google.com
# Запитати конкретний DNS сервер (наприклад, Google)dig @8.8.8.8 google.com
# Перевірити тип запису (MX - пошта, TXT - налаштування)dig google.com MXІнструмент 5: Трасування шляху з traceroute
Розділ «Інструмент 5: Трасування шляху з traceroute»ping каже, чи доступна ціль. traceroute каже, яким саме шляхом ідуть пакети й на якому роутері вони застрягають.
Використання
Розділ «Використання»# Просте трасуванняtraceroute google.com
# Через TCP (краще проходить крізь файрволи)traceroute -T google.comЯкщо ви бачите зірочки * * *, це означає, що конкретний роутер не відповідає на запити трасування (це нормально для безпеки). Хвилюватися варто, якщо зірочки йдуть до самого кінця.
Інструмент 6: Завантаження та перевірка файлів
Розділ «Інструмент 6: Завантаження та перевірка файлів»В DevOps ви постійно качаєте програми (kubectl, helm тощо). Як знайти, що файл не був підмінений хакерами? Контрольні суми (Checksums).
Стандартний робочий потік
Розділ «Стандартний робочий потік»- Скачати файл.
- Скачати файл із контрольною сумою (зазвичай
.sha256). - Перевірити їх відповідність.
# Приклад для kubectlcurl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
# Перевіркаecho "$(cat kubectl.sha256) kubectl" | sha256sum --check# Очікуваний результат: kubectl: OKЯкщо ви бачите FAILED — ніколи не запускайте такий файл.
Типові помилки
Розділ «Типові помилки»| Помилка | Проблема | Рішення |
|---|---|---|
| Думати, що не-пінг = хост “лежить” | Багато серверів просто ігнорують пінг для безпеки | Спробуйте curl на порт 80 або 443 |
Забути sudo для команди ss | Ви не побачите назву програми (PID) | Завжди використовуйте sudo ss -tulpn |
Не дивитися на TTL у dig | Ви не розумієте, чому зміни DNS “не працюють” | Перевірте час кешування (TTL) — можливо, треба просто почекати |
Ігнорувати перевірку sha256sum | Ризик встановити вірус замість інструменту | Завжди верифікуйте бінарні файли перед установкою |
Тест
Розділ «Тест»-
Ви пінгуєте сервер і бачите
ttl=52. Яка це ОС і скільки роутерів пройшов пакет?Відповідь
Це Linux (стартовий TTL 64). Пакет пройшов через 12 роутерів (64 - 52 = 12). -
Що каже статус-код 503 у виводі
curl -v?Відповідь
"Service Unavailable" — сервер живий, але застосунок за ним не може обробити запит прямо зараз (наприклад, він перевантажений або вимкнений). -
Ви бачите в
ss, що сервіс слухає на127.0.0.1:3000. Чи зможе ваш колега підключитися до нього зі свого комп’ютера?Відповідь
Ні. Адреса `127.0.0.1` означає, що сервіс приймає підключення тільки зсередини самої машини (локально). -
Яка команда покаже вам IP адресу домену в максимально короткому вигляді?
Відповідь
`dig +short назва-домену`.
Практична вправа: Мережевий детектив
Розділ «Практична вправа: Мережевий детектив»Завдання: Перевірити зв’язок та інфраструктуру свого середовища.
- Перевірте затримку до Google:
Terminal window ping -c 5 8.8.8.8 - Подивіться на HTTP заголовки будь-якого сайту:
Terminal window curl -I https://google.com - Дізнайтеся, яка IP-адреса у
ukr.net:Terminal window host ukr.net - Перевірте, які порти зараз відкриті на вашій машині:
Terminal window sudo ss -tulpn - Прослідкуйте шлях пакета до сервера DNS 1.1.1.1:
Terminal window traceroute 1.1.1.1
Критерії успіху: Ви вмієте користуватися основними утилітами для діагностики мережі.
Підсумок
Розділ «Підсумок»- ping — перевірка “чи живий хост”.
- curl — взаємодія з вебсервісами та API.
- ss — перевірка “чи відкритий порт на моїй машині”.
- dig — правда про налаштування DNS.
- traceroute — карта шляху в інтернеті.
- sha256sum — гарантія безпеки завантажень.
Що далі?
Розділ «Що далі?»Вітаємо! Ви завершили серію «Щоденне використання». Тепер ви впевнено почуваєтеся в терміналі й маєте всі інструменти для щоденної роботи DevOps інженера.
Час зануритися глибше. У наступному розділі «Основи системи» ми розберемося, як Linux працює “під капотом”: ядро, системні виклики та архітектура, що робить усе це можливим.