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

Модуль 0.5: Щоденні мережеві інструменти

Hands-On Lab Available
Ubuntu intermediate 35 min
Launch Lab ↗

Opens in Killercoda in a new tab

Щоденне використання | Складність: [QUICK] | Час: 45 хв

Перед початком цього модуля:


Що ви зможете робити після цього модуля

Розділ «Що ви зможете робити після цього модуля»

Після завершення цього модуля ви зможете:

  • Діагностувати проблеми з мережевим з’єднанням за допомогою 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 і повідомляє, чи повернулися вони (і як швидко).

Базове використання

Розділ «Базове використання»
Terminal window
# Пінг хоста — натисніть 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=117Time 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 каже “і ось що він відповідає”.

Terminal window
# Простий 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) показує повний діалог між вами та сервером:

Terminal window
curl -v https://httpbin.org/get

Ключова підказка: рядки, що починаються з >, це те, що надіслали ви. Рядки з < — це те, що відповів сервер.


Інструмент 3: Перевірка відкритих портів з ss

Розділ «Інструмент 3: Перевірка відкритих портів з ss»

Команда ss показує, які програми “слухають” мережеві порти на вашій машині. Це заміна старій команді netstat.

Terminal window
# Показати всі порти, що слухають (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»
Terminal window
# Назва -> IP
host google.com
# IP -> Назва (зворотний пошук)
host 8.8.8.8

Детальний аналіз з dig

Розділ «Детальний аналіз з dig»
Terminal window
# Повна інформація про домен
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 каже, яким саме шляхом ідуть пакети й на якому роутері вони застрягають.

Terminal window
# Просте трасування
traceroute google.com
# Через TCP (краще проходить крізь файрволи)
traceroute -T google.com

Якщо ви бачите зірочки * * *, це означає, що конкретний роутер не відповідає на запити трасування (це нормально для безпеки). Хвилюватися варто, якщо зірочки йдуть до самого кінця.


Інструмент 6: Завантаження та перевірка файлів

Розділ «Інструмент 6: Завантаження та перевірка файлів»

В DevOps ви постійно качаєте програми (kubectl, helm тощо). Як знайти, що файл не був підмінений хакерами? Контрольні суми (Checksums).

Стандартний робочий потік

Розділ «Стандартний робочий потік»
  1. Скачати файл.
  2. Скачати файл із контрольною сумою (зазвичай .sha256).
  3. Перевірити їх відповідність.
Terminal window
# Приклад для kubectl
curl -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Ризик встановити вірус замість інструментуЗавжди верифікуйте бінарні файли перед установкою

  1. Ви пінгуєте сервер і бачите ttl=52. Яка це ОС і скільки роутерів пройшов пакет?

    Відповідь Це Linux (стартовий TTL 64). Пакет пройшов через 12 роутерів (64 - 52 = 12).
  2. Що каже статус-код 503 у виводі curl -v?

    Відповідь "Service Unavailable" — сервер живий, але застосунок за ним не може обробити запит прямо зараз (наприклад, він перевантажений або вимкнений).
  3. Ви бачите в ss, що сервіс слухає на 127.0.0.1:3000. Чи зможе ваш колега підключитися до нього зі свого комп’ютера?

    Відповідь Ні. Адреса `127.0.0.1` означає, що сервіс приймає підключення тільки зсередини самої машини (локально).
  4. Яка команда покаже вам IP адресу домену в максимально короткому вигляді?

    Відповідь `dig +short назва-домену`.

Практична вправа: Мережевий детектив

Розділ «Практична вправа: Мережевий детектив»

Завдання: Перевірити зв’язок та інфраструктуру свого середовища.

  1. Перевірте затримку до Google:
    Terminal window
    ping -c 5 8.8.8.8
  2. Подивіться на HTTP заголовки будь-якого сайту:
    Terminal window
    curl -I https://google.com
  3. Дізнайтеся, яка IP-адреса у ukr.net:
    Terminal window
    host ukr.net
  4. Перевірте, які порти зараз відкриті на вашій машині:
    Terminal window
    sudo ss -tulpn
  5. Прослідкуйте шлях пакета до сервера DNS 1.1.1.1:
    Terminal window
    traceroute 1.1.1.1

Критерії успіху: Ви вмієте користуватися основними утилітами для діагностики мережі.


  • ping — перевірка “чи живий хост”.
  • curl — взаємодія з вебсервісами та API.
  • ss — перевірка “чи відкритий порт на моїй машині”.
  • dig — правда про налаштування DNS.
  • traceroute — карта шляху в інтернеті.
  • sha256sum — гарантія безпеки завантажень.

Вітаємо! Ви завершили серію «Щоденне використання». Тепер ви впевнено почуваєтеся в терміналі й маєте всі інструменти для щоденної роботи DevOps інженера.

Час зануритися глибше. У наступному розділі «Основи системи» ми розберемося, як Linux працює “під капотом”: ядро, системні виклики та архітектура, що робить усе це можливим.

Далі: Модуль 1.1: Архітектура ядра