Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions app/app.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from flask import Flask, request

app = Flask(__name__)

@app.route('/get', methods=['GET'])
def get_route():
return "route get is working!\n"

@app.route('/post', methods=['POST'])
def post_route():
return f"route post is working!: {request.json}\n"

@app.route('/put', methods=['PUT'])
def put_route():
return f"route put is working!: {request.json}\n"

if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000)
9 changes: 9 additions & 0 deletions configs/A.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
network:
ethernets:
enp0s3:
dhcp4: true
enp0s8:
dhcp4: no
addresses: [192.168.7.10/24]
gateway4: 192.168.7.1
version: 2
11 changes: 11 additions & 0 deletions configs/B.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
network:
ethernets:
enp0s3:
dhcp4: true
enp0s8:
dhcp4: no
addresses: [192.168.7.1/24]
enp0s9:
dhcp4: no
addresses: [192.168.1.1/24]
version: 2
9 changes: 9 additions & 0 deletions configs/C.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
network:
ethernets:
enp0s3:
dhcp4: true
enp0s8:
dhcp4: no
addresses: [192.168.1.10/24]
gateway4: 192.168.1.1
version: 2
Binary file added pics/curl.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pics/iptables.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pics/netplan_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pics/netplan_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pics/netplan_3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pics/py.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pics/py_in_work.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pics/tcpdump_get.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pics/tcpdump_post.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pics/tcpdump_put.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
54 changes: 54 additions & 0 deletions report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
Отчет по практической работе с виртуальными машинами на ОС Linux Ubuntu 24.04.2

---

Для начала создаём и настраиваем виртуальные машины A,B,C: из образа Ubuntu Server создаём машину A, а затем дважды клонируем её. После создания виртуальных машин необходимо добавить им соответствующие сетевые адаптеры (внутренняя сеть) для подсетей servernet и clientnet, а также заменить NAT на сетевой мост (по заданию). После этого на каждой машине вручную задаем новый hostname и user.
- Для машины A это - user (milekhin_1) и hostname (milekhin_server)
- Для машины B это - user (milekhin_2) и hostname (milekhin_gateway)
- Для машины C это - user (milekhin_3) и hostname (milekhin_client)

---

После настройки виртуальных машин переходим к конфигурации сети. Меняем конфиги netplan на каждой машине по заданию. Для применения новых сетевых настроек используем команду `sudo netplan apply`. День рождения: 07.01.2003.
- Для машины A это - 'enp0s8' - "192.168.7.10/24"
- Для машины B это - 'enp0s8' - "192.168.7.1/24", а для enp0s9 - "192.168.1.1/24"
- Для машины C это - 'enp0s8' - "192.168.1.1/24".

![Netplan A](pics/netplan_1.png)
![Netplan B](pics/netplan_2.png)
![Netplan C](pics/netplan_3.png)

---

ИНДИВИДУАЛЬНАЯ НАСТРОЙКА ВИРТУАЛЬНЫХ МАШИН

---

Перейдем к написанию веб-приложения (для использования Flask его необходимо скачать) на машине A. Реализуем программу с тремя базовыми эндпоинтами.
После реализации программы создаем сервис, которые будет запускать приложение при запуске системы. Весь код приложен ниже:

![app](pics/py.png)

---

Далее настроим на машине B iptables для маршрутизации пакетов от машины A до машины C. Также необходимо реализовать фильтрацию пакетов по порту 5000. Помимо этого для работы шлюза нужно выставить ip_forward=1 в настройках системы в файле /etc/sysctl.conf. Настройки iptables приложены ниже:

![iptables](pics/iptables.png)

---

ТЕСТИРОВАНИЕ

---

- На машине A: запустим приложение на Flask
- На машине B: запустим tcpdump, чтобы можно было отслеживать пересылку пакетов между машинами A и C
- На машине С: начнём отправлять поочередно три запроса через curl:

![py](pics/py_in_work.png)
![curl](pics/curl.png)
![tcpGET](pics/tcpdump_get.png)
![tcpPOST](pics/tcpdump_post.png)
![tcpPUT](pics/tcpdump_put.png)

Всё безотказно работает, система полностью настроена согласно изначальному заданию.