diff --git a/application/app.py b/application/app.py new file mode 100644 index 0000000..e69de29 diff --git a/configs/vmA.yaml b/configs/vmA.yaml new file mode 100644 index 0000000..e69de29 diff --git a/configs/vmB.yaml b/configs/vmB.yaml new file mode 100644 index 0000000..e69de29 diff --git a/configs/vmC.yaml b/configs/vmC.yaml new file mode 100644 index 0000000..e69de29 diff --git a/pictures/flaskapp.png b/pictures/flaskapp.png new file mode 100644 index 0000000..9cfceaf Binary files /dev/null and b/pictures/flaskapp.png differ diff --git a/pictures/iptables.png b/pictures/iptables.png new file mode 100644 index 0000000..138ee74 Binary files /dev/null and b/pictures/iptables.png differ diff --git a/pictures/net1.png b/pictures/net1.png new file mode 100644 index 0000000..8420662 Binary files /dev/null and b/pictures/net1.png differ diff --git a/pictures/net2.png b/pictures/net2.png new file mode 100644 index 0000000..4ba147d Binary files /dev/null and b/pictures/net2.png differ diff --git a/pictures/net3.png b/pictures/net3.png new file mode 100644 index 0000000..6307e96 Binary files /dev/null and b/pictures/net3.png differ diff --git a/pictures/responses.png b/pictures/responses.png new file mode 100644 index 0000000..d24391d Binary files /dev/null and b/pictures/responses.png differ diff --git a/pictures/tcpdump_get.png b/pictures/tcpdump_get.png new file mode 100644 index 0000000..4c1824c Binary files /dev/null and b/pictures/tcpdump_get.png differ diff --git a/pictures/tcpdump_post.png b/pictures/tcpdump_post.png new file mode 100644 index 0000000..6f6c720 Binary files /dev/null and b/pictures/tcpdump_post.png differ diff --git a/pictures/tcpdump_put.png b/pictures/tcpdump_put.png new file mode 100644 index 0000000..a429b76 Binary files /dev/null and b/pictures/tcpdump_put.png differ diff --git a/pictures/user1.png b/pictures/user1.png new file mode 100644 index 0000000..40c9fe9 Binary files /dev/null and b/pictures/user1.png differ diff --git a/pictures/user2.png b/pictures/user2.png new file mode 100644 index 0000000..ba042aa Binary files /dev/null and b/pictures/user2.png differ diff --git a/pictures/user3.png b/pictures/user3.png new file mode 100644 index 0000000..c30ce21 Binary files /dev/null and b/pictures/user3.png differ diff --git a/report.md b/report.md new file mode 100644 index 0000000..6f47bc9 --- /dev/null +++ b/report.md @@ -0,0 +1,55 @@ +# Отчёт по работе №1: Практика Linux (VirtualBox) + +## Создание виртуальной машины +1. Создаём виртуальную машину на основе образа Ubuntu Server. +2. Клонируем её дважды и настраиваем сетевые адаптеры согласно заданию. +3. Запускаем все три машины и меняем на них hostname и user согласно заданию: +```shell + 1. user=pasenko_1, hostname=pasenkoserver для vmA (server); + 2. user=pasenko_2, hostname=pasenkogateway для vmB (gateway); + 3. user=pasenko_3, hostname=pasenkoclient для vmC (client); +``` + +## Настройка netplan конфигов +1. Меняем netplan конфиги согласно заданию. +2. Применяем их при помощи: +```shell +sudo netplan apply +``` +3. После настройки получаем: + +![Netplan конфиг для vmA](pictures/net1.png) +![Netplan конфиг для vmB](pictures/net2.png) +![Netplan конфиг для vmC](pictures/net3.png) + +Сами конфиги находятся в configs/, а скриншоты со всех VM в pictures/. + +## Настройка VMs по отдельности +1. Начнём с vmA: + 1. В app.py *(код приложен в application/)* создаём Flask приложение с тремя эндпоинтами (/get, /post, /put). + 2. Под приложение пишем сервис, который будет запускать его через автозагрузку. + +![Flask приложение и сервис для его запуска](pictures/flaskapp.png) + +2. Перейдем к vmB: +Настраиваем iptables для маршрута пакетов от vmA до vmC и фильтрации пакетов по порту 5000. + +![Настроенный iptables](pictures/iptables.png) + +## Тестирование +1. Запустим приложение на vmA *(важно проверить, на каких адресах оно работает)*: +```shell +python3 app.py +``` +2. Попробуем отправить запрос с vmC по всем роутам для проверки: + +![Тестирование приложения с vmC](pictures/responses.png) + +Как можно увидеть, vmA успешно отправляет ответ по всем видам запросов. +Дополнительно проверим логи передачи пакетов с vmC на vmA при помощи tcpdump: + +![Логи по tcpdump, роут get](pictures/tcpdump_get.png) +![Логи по tcpdump, роут post](pictures/tcpdump_post.png) +![Логи по tcpdump, роут put](pictures/tcpdump_put.png) + +Представленные скриншоты подтверждают работоспособность системы: все виртуальные машины успешно настроены, связь и фильтрация пакетов налажена, а Flask приложение отрабатывает все запросы. \ No newline at end of file