Шаблон для выполнения работы

Для выполнения работы создайте новый файла в Obsidian, назовите его “Фамилия Имя Отчество Группа”, скопируйте и вставьте представленный ниже шаблон:

# Лабораторная работа №1

## Создание виртуальных машин в virtualbox

### Создание сети

```bash
$ VBoxManage natnetwork add --netname natnet1 --network "10.0.x.0/24" --enable --dhcp on
$ VBoxManage list natnetworks
```

<Тут должен быть скриншот выполненых выше команд>

### Создание машин

<Тут должны быть скриншоты, со всеми этапами создания и настройки обоих машин в virtualbox>

## Установка ubuntu server

<Тут должны быть скриншоты настройки ubuntu server для обоих машин>

## Установка необходимого софта

<Тут должны быть скриншоты вывода команд apt update/install>

## Ручная настройка сети на ubuntu server

```bash
# Вставьте сюда вывод команд ip a и cat /etc/netplan/50-cloud-init.yaml
# !!!! ДО ТОГО, КАК ВЫ ИЗМЕНИТЕ НАСТРОЙКИ СЕТИ !!!!
```

```bash
# После изменений настроек сети вставьте вывод команд ip a и cat /etc/netplan/50-cloud-init.yaml
```

## Проверка сетевой доступности двух машин

1. Ваш ответ на вопрос, в свободной форме
2. Ваш ответ на вопрос, в свободной форме
3. Ваш ответ на вопрос, в свободной форме

## Самоконтроль

1. Ваш ответ на вопрос, в свободной форме
2. Ваш ответ на вопрос, в свободной форме
3. Ваш ответ на вопрос, в свободной форме

Теоретическая часть

Модель OSI

Модель OSI (Open Systems Interconnection) — это сетевая модель, разработанная Международной организацией по стандартизации (ISO) для описания и стандартизации коммуникационных процессов в компьютерных сетях. Модель OSI состоит из семи уровней, каждый из которых выполняет определённые функции для обеспечения передачи данных между устройствами в сети.

1. Физический уровень (Physical Layer)

  • Отвечает за передачу необработанных битов данных (нулей и единиц) по физическому средству передачи (кабели, радиоволны и т.д.).
  • Осуществляет электрические, механические и процедурные функции, такие как электрические сигналы, частота, напряжение.
  • Примеры устройств: сетевые адаптеры, кабели, повторители.
  • Отвечает за надежную передачу данных между двумя узлами, находящимися в пределах одной сети.
  • Уровень управляет доступом к среде передачи и обнаруживает и исправляет ошибки.
  • Включает в себя два подуровня: управление логическим каналом (LLC) и управление доступом к среде (MAC).
  • Примеры протоколов: Ethernet, Wi-Fi, PPP.

3. Сетевой уровень (Network Layer)

  • Отвечает за маршрутизацию данных между различными сетями. Он определяет путь от отправителя до получателя через несколько сетей.
  • Осуществляет логическую адресацию (например, IP-адреса) и маршрутизацию пакетов.
  • Примеры протоколов: IP (Internet Protocol), ICMP.

4. Транспортный уровень (Transport Layer)

  • Отвечает за надежную доставку данных от одного хоста к другому. Этот уровень обеспечивает корректную передачу данных и контроль потока.
  • Использует механизмы управления ошибками и разделение данных на сегменты.
  • Примеры протоколов: TCP (Transmission Control Protocol), UDP (User Datagram Protocol).

5. Сеансовый уровень (Session Layer)

  • Управляет установкой, поддержанием и завершением сеансов связи между приложениями. Сеанс — это длительное взаимодействие между двумя устройствами.
  • Управляет синхронизацией и организацией обмена данными.
  • Примеры: протоколы RPC (Remote Procedure Call), SMB (Server Message Block).

6. Представительский уровень (Presentation Layer)

  • Отвечает за преобразование данных в формат, удобный для использования приложениями. Он занимается шифрованием, дешифрованием, сжатием и преобразованием кодировок данных.
  • Пример: преобразование текстов в различные кодировки (ASCII, UTF-8), SSL/TLS для шифрования.

7. Прикладной уровень (Application Layer)

  • Отвечает за взаимодействие с конечными приложениями пользователя. Здесь происходят все операции, связанные с передачей данных между программами.
  • Примеры протоколов: HTTP, FTP, SMTP, DNS.

Модель TCP/IP

Модель TCP/IP (Transmission Control Protocol/Internet Protocol) — это сетевая модель, которая описывает, как данные передаются через Интернет и другие компьютерные сети. В отличие от модели OSI, которая состоит из семи уровней, модель TCP/IP включает четыре уровня, более приближённых к реальным сетевым архитектурам и протоколам, использующимся в Интернете.

1. Уровень доступа к сети (Network Access Layer)

  • Этот уровень объединяет физический и канальный уровни модели OSI.
  • Отвечает за физическую передачу данных по сети, взаимодействие с сетевыми интерфейсами и управляет доступом к физической среде передачи данных (например, Ethernet, Wi-Fi).
  • Включает в себя работу с MAC-адресами, создание кадров (frames) и управление доступом к сети.
  • Примеры технологий: Ethernet, Wi-Fi, PPP.

2. Интернет-уровень (Internet Layer)

  • Этот уровень аналогичен сетевому уровню в модели OSI. Он занимается маршрутизацией пакетов через различные сети и обеспечивает возможность доставки данных между хостами, находящимися в разных сетях.
  • Основной протокол на этом уровне — это IP (Internet Protocol), который обеспечивает логическую адресацию и маршрутизацию пакетов данных.
  • Примеры протоколов: IP (IPv4, IPv6), ICMP (Internet Control Message Protocol), ARP (Address Resolution Protocol).

3. Транспортный уровень (Transport Layer)

  • Этот уровень аналогичен транспортному уровню в модели OSI. Он отвечает за надежную передачу данных от одного узла к другому, сегментацию данных и контроль ошибок.
  • В модели TCP/IP существует два основных транспортных протокола:
    • TCP (Transmission Control Protocol) — обеспечивает надежную передачу данных с подтверждением получения, контроль потока, восстановление утерянных сегментов. Подходит для приложений, где важна надежность (например, веб-браузинг, электронная почта).
    • UDP (User Datagram Protocol) — более быстрый, но ненадежный протокол, который не обеспечивает подтверждения доставки. Подходит для приложений, где важна скорость, а потеря данных не критична (например, видеостриминг, VoIP).
  • Примеры протоколов: TCP, UDP.

4. Прикладной уровень (Application Layer)

  • Этот уровень объединяет три верхних уровня модели OSI: прикладной, сеансовый и представительский. Он отвечает за взаимодействие с конечными приложениями, передавая данные в нужных форматах и обеспечивая управление соединениями.
  • Протоколы прикладного уровня напрямую взаимодействуют с пользователем или приложениями. Примеры таких протоколов:
    • HTTP (Hypertext Transfer Protocol) — для веб-браузеров.
    • FTP (File Transfer Protocol) — для передачи файлов.
    • SMTP (Simple Mail Transfer Protocol) — для отправки электронной почты.
    • DNS (Domain Name System) — для разрешения доменных имен в IP-адреса.

Ключевые различия между моделями OSI и TCP/IP:

  • Количество уровней: OSI имеет 7 уровней, а TCP/IP — 4 уровня.
  • Стандартизация: Модель OSI носит больше теоретический характер, её уровни строго разделены. Модель TCP/IP более практична и приближена к тому, как реально работают сети.
  • Прикладной уровень: В модели OSI прикладной, сеансовый и представительский уровни разделены, тогда как в TCP/IP они объединены в один.

DHCP

DHCP (Dynamic Host Configuration Protocol) — это сетевой протокол, который используется для автоматической настройки сетевых параметров на устройствах (клиентах) в сети. DHCP упрощает управление IP-адресами, автоматически предоставляя устройствам (например, компьютерам, смартфонам, принтерам и т.д.) IP-адреса и другие параметры сети, необходимые для их работы.

Основные функции DHCP:

  1. Автоматическое назначение IP-адресов. DHCP-сервер динамически выделяет IP-адреса устройствам, когда они подключаются к сети.
  2. Выдача других сетевых параметров. Помимо IP-адреса, DHCP может предоставлять маску подсети, шлюз по умолчанию (gateway), адреса DNS-серверов и другие параметры.
  3. Управление временем аренды IP-адреса. DHCP назначает IP-адрес устройству на определённый период времени (время аренды), после чего устройство должно либо запросить продление аренды, либо получить новый адрес.

Как работает DHCP:

  1. Клиентский запрос (DHCP Discovery). Когда устройство (клиент) подключается к сети и не имеет IP-адреса, оно отправляет широковещательное сообщение DHCP Discover с просьбой о назначении IP-адреса.
  2. Ответ сервера (DHCP Offer). DHCP-сервер получает запрос и резервирует для клиента IP-адрес, после чего отправляет ответное сообщение DHCP Offer, в котором содержится предложенный IP-адрес и другие сетевые параметры.
  3. Запрос клиента (DHCP Request). Клиент, получив DHCP Offer, отправляет сообщение DHCP Request, подтверждая, что он согласен принять предложенный IP-адрес и настройки.
  4. Подтверждение сервера (DHCP Acknowledgement). DHCP-сервер подтверждает назначение IP-адреса и отправляет сообщение DHCP Acknowledgement. После этого клиент получает IP-адрес и может использовать его для работы в сети.

Основные компоненты DHCP:

  • DHCP-сервер — устройство, которое управляет выделением IP-адресов и предоставляет другие сетевые параметры клиентам.
  • DHCP-клиент — устройство, которое запрашивает IP-адрес и сетевые параметры от DHCP-сервера.
  • DHCP-ретранслятор (relay agent) — устройство, которое пересылает DHCP-запросы от клиентов в другую подсеть, если DHCP-сервер находится за пределами локальной сети.

Время аренды IP-адреса

DHCP назначает IP-адрес на определённый срок — так называемое время аренды. Когда время аренды подходит к концу, клиент должен запросить продление аренды. Если устройство выходит из сети до окончания аренды, IP-адрес освобождается и может быть назначен другому устройству.

Преимущества использования DHCP:

  1. Автоматизация. DHCP избавляет администратора сети от необходимости вручную назначать IP-адреса каждому устройству, что значительно упрощает администрирование, особенно в крупных сетях.
  2. Избежание конфликтов IP-адресов. DHCP гарантирует, что каждый клиент получает уникальный IP-адрес, избегая конфликтов.
  3. Простота масштабирования. В случае роста сети и добавления новых устройств DHCP автоматически выделяет адреса, не требуя изменения конфигурации существующих устройств.
  4. Гибкость. DHCP позволяет изменять сетевые параметры (например, DNS-серверы, маршрутизаторы) без необходимости ручной настройки каждого устройства.

Проблемы, связанные с DHCP:

  1. Зависимость от сервера. Если DHCP-сервер выходит из строя, новые устройства не смогут получить IP-адреса, и их подключение к сети станет невозможным.
  2. Безопасность. Атаки могут быть нацелены на подмену DHCP-сервера (DHCP spoofing), что позволяет злоумышленникам назначать неправильные сетевые параметры и перенаправлять трафик на вредоносные серверы.

Использование DHCP в реальных сетях

  • DHCP широко используется в домашних и корпоративных сетях. Например, когда вы подключаетесь к домашнему Wi-Fi, ваш маршрутизатор выступает в роли DHCP-сервера, предоставляя вашему устройству IP-адрес.
  • В корпоративных сетях DHCP позволяет управлять тысячами устройств, автоматически распределяя IP-адреса и упрощая настройку и обслуживание сети.

Практическое задание

Создание виртуальных машин в virtualbox

После того, как вы установили virtualbox на свой ПК, нужно создать nat сеть, в которую мы будем добавлять наши вм. Сделать это можно при помощи этой команды:

$ VBoxManage natnetwork add --netname natnet1 --network "10.0.x.0/24" --enable --dhcp on

Где x – ваш номер по списку группы.

Просмотреть информацию по nat сетям можно при помощи следующей команды:

$ VBoxManage list natnetworks

Name:         i-ivanov-nat1
Network:      10.0.1.0/24
Gateway:      10.0.1.1
DHCP Server:  Yes
IPv6:         No
IPv6 Prefix:  fd17:625c:f037:2::/64
IPv6 Default: No

Далее нужно скачать установочный образ ubuntu

Далее нужно создать виртуальную машину в графическом интерфейсе virtualbox:

Name: Ubuntu-server-1

Folder: Путь до папки, где будет хранится сама виртуальная машина

ISO Image: Путь до скаченного ранее iso образа

vbox-ubuntu-install-1

Base Memory: 1024 MB Processors: 1 CPU

vbox-ubuntu-install-2

Create a Virtual Hard Disk Now -> Disk Size: 10.00 GB (Можно больше, меньше не рекомендуется)

vbox-ubuntu-install-3

В настройках машины в пункте System в разделе Boot Order выключить Floppy, включить Network, передвинуть Optical на самый верх.

vbox-ubuntu-install-4

Включить Adapter 1 в настройках машины в пункте Network.

Attached to: Bridged Adapter

Name: <Имя сетевого интерфейса на вашей машине>

vbox-ubuntu-install-5

Включить Adapter 2 в настройках машины в пункте Network.

Attached to: NAT Network Name: <Имя сети, которые вы ввели ранее>

vbox-ubuntu-install-6

(!!!)

По аналогии сделать вторую виртуальную машину со всеми теми же настройками, но именем Ubuntu-server-2

(!!!)

Установка ubuntu server

После запуска виртуальной машины вы увидете следующее окно установки, выбирете English язык.

ubuntu-install-1

В keyboard information так же оставьте English.

ubuntu-install-2

В разметке дисков уберите галочку с set up this disk as an LVM group, и нажмите Done.

ubuntu-install-3

В настройках сети вы можете наблюдать, что dhcp сервера выдали ipv4 адреса для обоих интерфейсов. Здесь ничего менять не требуется, идем дальше.

ubuntu-install-4

Подтверждаем разметку дисков.

ubuntu-install-5

Далее заполняем данные пользователя.

Name: <Первая буква вашего имени>-<ваша фамилия транслитом>

Your servers name: server1

Pick a username: <Первая буква вашего имени>-<ваша фамилия транслитом>

ubuntu-install-6

Данный раздел просто пропускаем.

ubuntu-install-7

Устанавливаем openssh server.

ubuntu-install-8

(!!!)

По аналогии сделать вторую виртуальную машину со всеми теми же настройками, но именем server-2

(!!!)

Установка необходимого софта на сервера

После успешной установки, перезагрузки и входа в систему вы можете при помощи команды sudo su повысить свои привелегии до root пользователя. Далее, от рут пользователя установим необходимый нам софт:

sudo apt update
sudo apt install net-tools nmap traceroute dnsutils arping -y

Ручная настройка сети на ubuntu server

Далее настроим вторую сеть (NAT Network) статически. Чтобы узнать имя сети введите команду ip a

ubuntu-static-network-1

Далее откройте файл /etc/netplan/50-cloud-init.yaml при помощи консольного текстового редактора nano.

Приведите его к следующему виду:

  1. Из вывода команды ip a мы узнали имя интерфейса, в нем и будет производить изменения
  2. dhcp4: false – отключаем dhcp
  3. addresses: [ 10.0.x.151/24 ] – указываем статический ip адрес, где x – ваш номер в списке
  4. routes: - to: default via: 10.0.x.1 – указываем default маршрут, через который будет идти трафик
  5. nameservers – указываем dns сервера для конкретного интерфейса

Чтобы применить измениня, которые мы произвели, нужно ввести следующую команду:

netplan apply

Произвести те же самые действия на Ubuntu-server-2, изменив только addresses с 10.0.x.151/24 на 10.0.x.152/24.

ubuntu-static-network-2

Проверка сетевой доступности двух машин

  1. Что будет, если сделать ping машины Ubuntu-server-1 с Ubuntu-server-2 через bridge интерфейс? (например: ping -c 4 192.168.1.151)
  2. Что будет, если сделать ping машины Ubuntu-server-2 с Ubuntu-server-1 через Nat Network интерфейс? (например: ping -c 4 10.0.1.152)
  3. Что будет, если сделать ping машины Ubuntu-server-2 с вашей хостовой машины через NAT Network интерфейс? (например: ping 10.0.1.151)

Самоконтроль

  1. Сколько уровней в модели OSI?
  2. Каких уровней нет в модели TCP/IP, если сравнивать ее с OSI?
  3. Для чего нужен dhcp?