Skip to content

Практическая работа по теме: "Сетевая подсистема Linux"

Цель работы: Освоить базовые навыки работы с сетевой подсистемой Linux, закрепить знания о логической организации передачи данных, адресации, маршрутизации и взаимодействии удаленных процессов через практические примеры.


Блок теории

Перед выполнением работы кратко вспомним ключевые концепции, изученные на теоретическом занятии:

  1. Многоуровневая модель OSI/TCP-IP
    — Сетевая подсистема Linux реализует уровни модели TCP/IP (физический, канальный, сетевой, транспортный, прикладной).
    — Пример: команда ping работает на сетевом уровне (ICMP), а netcat — на транспортном (TCP/UDP).

  2. Адресация и маршрутизация
    — IP-адреса идентифицируют узлы в сети, MAC-адреса — устройства на канальном уровне.
    — Таблица маршрутизации определяет путь пакетов к целевому узлу (команда ip route).

  3. Логические соединения и передача данных
    — TCP обеспечивает надежную передачу с установлением соединения («рукопожатие»).
    — UDP передает данные без подтверждения (сообщения).
    — Пример: веб-сервер использует TCP, а VoIP-приложения — UDP.

  4. Синхронизация процессов
    — Удаленные процессы синхронизируются через механизмы вроде сокетов, сигналов или временных меток.

  5. Протоколы
    — Набор правил для передачи данных (HTTP, DNS, SSH). В Linux протоколы реализованы через сокеты и демоны (например, sshd для SSH).


Практическая часть

Преподаватель демонстрирует команды, студенты повторяют их в терминале Linux (рекомендуется использовать Ubuntu/Debian в виртуальной машине или WSL).


Задание 1. Проверка сетевых интерфейсов и настройка IP-адреса

Цель: Изучить структуру сетевых интерфейсов и работу с IP-адресацией.

  1. Просмотр активных интерфейсов:

    bash
    ip link show

    — Обратите внимание на интерфейсы lo (loopback), eth0/ens33 (физический интерфейс).
    Связь с теорией: Интерфейсы соответствуют канальному уровню модели OSI.

  2. Просмотр IP-адресов:

    bash
    ip addr show

    — Найдите IPv4-адрес (например, 192.168.1.10/24).
    Связь с теорией: IP-адрес относится к сетевому уровню.

  3. Временная настройка IP-адреса (на интерфейсе eth0):

    bash
    sudo ip addr add 10.0.0.10/24 dev eth0

    — Проверьте изменения: ip addr show eth0.
    Важно: Адрес сбросится после перезагрузки (для постоянной настройки используется файл /etc/network/interfaces).


Задание 2. Анализ таблицы маршрутизации

Цель: Понять, как система определяет путь для отправки пакетов.

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

    bash
    ip route show

    Пример вывода:

    default via 192.168.1.1 dev eth0 
    192.168.1.0/24 dev eth0 proto kernel scope link

    default — маршрут по умолчанию (шлюз).
    Связь с теорией: Маршрутизация решает задачу доставки пакетов между сетями.

  2. Добавление статического маршрута (к сетке 10.0.1.0/24 через шлюз 192.168.1.1):

    bash
    sudo ip route add 10.0.1.0/24 via 192.168.1.1 dev eth0

    — Убедитесь, что маршрут добавлен: ip route show.


Задание 3. Проверка активных соединений

Цель: Исследовать установленные логические соединения.

  1. Просмотр TCP/UDP-соединений:

    bash
    ss -tuln

    — Флаги: -t (TCP), -u (UDP), -l (прослушивание), -n (отображать номера портов).
    — Пример вывода:

    LISTEN 0 50  *:22   *:*    # SSH-сервер слушает порт 22

    Связь с теорией: Порты (например, 22 для SSH) относятся к транспортному уровню.

  2. Анализ соединения с удаленным сервером:

    bash
    ping google.com

    — Нажмите Ctrl+C, чтобы остановить.
    Связь с теорией: ping использует ICMP (сетевой уровень) для проверки доступности узла.


Задание 4. Установка соединения между процессами (TCP/UDP)

Цель: Продемонстрировать передачу данных между удаленными процессами.

Сценарий для двух терминалов (или двух машин в локальной сети)

  1. На машине-сервере (слушает порт 5000):

    bash
    nc -l -p 5000

    -l — режим прослушивания, -p — указание порта.

  2. На машине-клиенте (подключается к серверу):

    bash
    nc <IP_сервера> 5000

    — Введите текст в одном терминале — он появится в другом.
    Связь с теорией: Это пример передачи данных через TCP-соединение (транспортный уровень). Для UDP добавьте флаг -u.

  3. Завершение работы: Нажмите Ctrl+C в обоих терминалах.


Задание 5. Анализ сетевого трафика с помощью tcpdump

Цель: Увидеть, как данные передаются на уровне пакетов.

  1. Запуск сниффера на интерфейсе eth0:

    bash
    sudo tcpdump -i eth0 -n port 5000

    -n — не разрешать имена хостов, port 5000 — фильтр по порту.

  2. Повторите Задание 4 (соединение через nc на порту 5000).
    — В терминале с tcpdump вы увидите «сырые» пакеты TCP (SYN, ACK, данные).
    Связь с теорией: Демонстрация работы протокола TCP (трехэтапное «рукопожатие»).


Вопросы для самопроверки

  1. Какая команда показывает таблицу маршрутизации в современных дистрибутивах Linux?
  2. Почему при использовании nc для передачи данных важно указывать протокол (TCP/UDP)?
  3. Какой уровень модели OSI отвечает за адресацию через IP-адреса?
  4. Что означает запись 192.168.1.0/24 в таблице маршрутизации?
  5. Как проверить, какие процессы используют сетевые порты?

Отчет по работе

Студенты должны:

  1. Приложить скриншоты выполнения ключевых команд (например, вывод ip addr, ss -tuln, tcpdump).
  2. Ответить на вопросы для самопроверки.
  3. Написать вывод: как теоретические концепции (маршрутизация, протоколы) проявляются в практических примерах.

Примечание для преподавателя:

  • Перед работой убедитесь, что у студентов есть доступ к Linux (виртуальная машина, WSL, или лабораторный стенд).
  • Для безопасности рекомендуется использовать локальную сеть или localhost в заданиях 4–5.
  • Акцентируйте внимание на связи каждой команды с теорией (например: «Команда ip route решает проблему маршрутизации, о которой мы говорили на лекции»).

Контакты: bystrovno@basealt.ru