Перейти к содержимому

Практика 4. Сетевая диагностика и конфигурация


Цель работы

Освоить инструменты сетевой диагностики в Linux, научиться анализировать сетевую конфигурацию, рассчитывать подсети.


Часть 1. Сетевые интерфейсы

Задание 1.1. Просмотр интерфейсов

  1. Выведите информацию о сетевых интерфейсах:

    Окно терминала
    ip addr show
    ip -4 addr show # Только IPv4
    ip -6 addr show # Только IPv6
  2. Выведите информацию о состоянии интерфейсов:

    Окно терминала
    ip link show

    Найдите интерфейс lo (loopback) и основной интерфейс (eth0, ens33, enp0s3 и т.д.). Чем они отличаются?

  3. Сравните с устаревшей командой:

    Окно терминала
    ifconfig # Может потребоваться: sudo apt install net-tools
  4. Для каждого интерфейса запишите:

    • Имя интерфейса
    • MAC-адрес
    • IPv4-адрес и маску
    • IPv6-адрес (если есть)
    • Состояние (UP/DOWN)

Задание 1.2. Маршрутизация

  1. Просмотрите таблицу маршрутов:

    Окно терминала
    ip route show
  2. Определите шлюз по умолчанию:

    Окно терминала
    ip route | grep default
  3. Определите, через какой интерфейс пойдёт пакет к определённому адресу:

    Окно терминала
    ip route get 8.8.8.8
    ip route get 192.168.1.1

Часть 2. Диагностика сети

Задание 2.1. ping

  1. Проверьте доступность локального хоста:

    Окно терминала
    ping -c 4 127.0.0.1
    ping -c 4 localhost
  2. Проверьте доступность шлюза:

    Окно терминала
    ping -c 4 $(ip route | grep default | awk '{print $3}')
  3. Проверьте доступность внешнего сервера:

    Окно терминала
    ping -c 4 8.8.8.8
    ping -c 4 1.1.1.1
  4. Проверьте доступность по доменному имени:

    Окно терминала
    ping -c 4 google.com

    Если шаги 1–3 проходят, а 4 нет — в чём проблема?

  5. Запустите ping с ограничением по времени и размером пакета:

    Окно терминала
    ping -c 10 -i 0.5 -s 1000 8.8.8.8

    Что означают флаги -i и -s?

Задание 2.2. traceroute

  1. Отследите маршрут до внешнего сервера:

    Окно терминала
    traceroute 8.8.8.8

    Или используйте mtr для интерактивного мониторинга:

    Окно терминала
    sudo apt install mtr
    mtr 8.8.8.8
  2. Сравните маршруты до разных серверов:

    Окно терминала
    traceroute 1.1.1.1
    traceroute ya.ru

    Отличаются ли маршруты? На каком хопе они расходятся?

  3. Если какой-то хоп показывает * * *, что это значит?

Задание 2.3. DNS-диагностика

  1. Разрешите доменное имя с помощью nslookup:

    Окно терминала
    nslookup google.com
    nslookup ya.ru
  2. Используйте dig для детального запроса:

    Окно терминала
    dig google.com A
    dig google.com AAAA
    dig google.com MX
    dig google.com NS
    dig google.com TXT

    Для каждого типа записи объясните, что она означает.

  3. Запросите конкретный DNS-сервер:

    Окно терминала
    dig @8.8.8.8 google.com A
    dig @1.1.1.1 google.com A
  4. Просмотрите TTL записи:

    Окно терминала
    dig +nocmd +noall +answer google.com

    Выполните команду несколько раз с интервалом — как меняется TTL?

  5. Изучите файлы DNS-конфигурации:

    Окно терминала
    cat /etc/resolv.conf
    cat /etc/hosts

    Что хранится в каждом файле?

Задание 2.4. ARP-таблица

  1. Просмотрите ARP-таблицу:

    Окно терминала
    ip neigh show
    # или
    arp -a
  2. Выполните ping на несколько адресов в локальной сети и снова проверьте ARP-таблицу. Что изменилось?

  3. Объясните: почему в ARP-таблице содержатся только адреса из локальной сети?


Часть 3. Расчёт подсетей

Задание 3.1. Базовые расчёты

Для каждого из приведённых IP-адресов и масок определите:

  • Адрес сети
  • Широковещательный адрес (broadcast)
  • Диапазон допустимых адресов хостов
  • Количество доступных адресов хостов
IP-адресМаскаАдрес сетиBroadcastДиапазон хостовКол-во хостов
1192.168.1.130/24????
210.0.15.200/16????
3172.16.50.100/20????
4192.168.10.65/26????
510.1.1.1/30????
6172.20.128.50/17????

Задание 3.2. Обратные задачи

  1. Вам нужно разделить сеть 192.168.1.0/24 на 4 равные подсети. Определите:

    • Маску для каждой подсети
    • Адреса сетей
    • Диапазоны хостов
    • Broadcast-адреса
  2. В организации 100 хостов. Какую минимальную маску подсети нужно использовать? Какой блок адресов из 10.0.0.0/8 подойдёт?

  3. Определите, находятся ли следующие пары адресов в одной подсети:

    • 192.168.1.50/24 и 192.168.1.200/24
    • 10.0.1.100/16 и 10.0.2.100/16
    • 172.16.1.10/20 и 172.16.18.10/20

Задание 3.3. Проверка расчётов утилитой ipcalc

Установите ipcalc и проверьте свои расчёты:

Окно терминала
sudo apt install ipcalc
ipcalc 192.168.10.65/26
ipcalc 172.16.50.100/20

Часть 4. Настройка сети

Задание 4.1. Изучение конфигурации

  1. Определите, какой инструмент управляет сетью в вашей системе:

    Окно терминала
    # Netplan (Ubuntu 18.04+)
    ls /etc/netplan/
    cat /etc/netplan/*.yaml
    # NetworkManager
    nmcli device status
    nmcli connection show
  2. Запишите текущие сетевые параметры (IP, маска, шлюз, DNS).

Задание 4.2. Временное изменение IP (необязательно, только в виртуальной среде)

Внимание: выполняйте только на виртуальной машине, чтобы не потерять сетевое подключение!

Окно терминала
# Добавить временный IP-адрес
sudo ip addr add 192.168.100.10/24 dev eth0
# Проверить
ip addr show eth0
# Удалить
sudo ip addr del 192.168.100.10/24 dev eth0

Мини-проект: диагностический скрипт

Напишите скрипт ~/project/src/main/netcheck.sh, который автоматически проверяет сетевое подключение и выводит отчёт.

Требования:

  1. Проверяет, что основной интерфейс в состоянии UP.
  2. Проверяет, что интерфейсу присвоен IP-адрес.
  3. Проверяет доступность шлюза по умолчанию (ping).
  4. Проверяет работу DNS (резолвинг google.com).
  5. Проверяет доступность интернета (ping 8.8.8.8).
  6. Выводит цветной отчёт с [OK] / [FAIL] для каждой проверки.

Шаблон:

#!/bin/bash
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m'
pass() { echo -e "${GREEN}[OK]${NC} $1"; }
fail() { echo -e "${RED}[FAIL]${NC} $1"; }
echo "=== Диагностика сети ==="
echo "Дата: $(date)"
echo ""
# 1. Определить основной интерфейс
IFACE=$(ip route | grep default | awk '{print $5}' | head -1)
if [ -n "$IFACE" ]; then
pass "Основной интерфейс: $IFACE"
else
fail "Не удалось определить сетевой интерфейс"
exit 1
fi
# 2. Проверить состояние интерфейса
STATE=$(ip link show "$IFACE" | grep -o "state [A-Z]*" | awk '{print $2}')
if [ "$STATE" = "UP" ]; then
pass "Интерфейс $IFACE: $STATE"
else
fail "Интерфейс $IFACE: $STATE"
fi
# 3. Проверить IP-адрес
IP=$(ip -4 addr show "$IFACE" | grep -oP 'inet \K[\d.]+')
if [ -n "$IP" ]; then
pass "IP-адрес: $IP"
else
fail "IP-адрес не присвоен"
fi
# 4. Проверить шлюз
# TODO: реализовать
# 5. Проверить DNS
# TODO: реализовать
# 6. Проверить доступность интернета
# TODO: реализовать
echo ""
echo "=== Проверка завершена ==="

Контрольные вопросы

  1. Перечислите 7 уровней модели OSI. На каком уровне работают IP, TCP, HTTP?
  2. Чем модель TCP/IP отличается от модели OSI?
  3. Что такое MAC-адрес? Чем он отличается от IP-адреса?
  4. Объясните, что такое маска подсети. Как по маске определить количество хостов в сети?
  5. Дано: IP = 172.16.50.200, маска = /20. Определите адрес сети и broadcast.
  6. Что такое шлюз по умолчанию? Что произойдёт, если хост без шлюза попытается обратиться к адресу в другой подсети?
  7. Опишите процесс DHCP (4 этапа DORA). Почему Discover отправляется широковещательно?
  8. Как работает NAT (PAT)? Объясните на примере домашнего роутера.
  9. Как работает ARP? Почему ARP-запрос отправляется широковещательно, а ответ — одноадресно?
  10. Что показывает traceroute? Какой механизм IP позволяет определять промежуточные маршрутизаторы?