Необходимо развернуть три виртуальные машины, согласно схеме:
Для построения и реализации поставленной задачи был использован сервис Play-with-docker.com, который позволяет подключаться удалённо к виртуальным машинам.
Первым этапом было создание виртуальных машин:
Теперь необходимо настроить машину А (Сервер). Настройка заключается в создание ssh-ключа, создании адаптера для задания маршрутов.
Шаг №1. Генерация ssh-ключа.
Подключение к виртуальной машине А происходит по команде: ssh ip172-18-0-34-conq0rgl2o9000dchcq0@direct.labs.play-with-docker.com
Шаг №2. Создание адаптера на машине А.
Шаг №3. Создание маршрута на машине А между А и С
Следующим этапом будет настройка машины Б, которая выступает связующим звеном между А и С.
Шаг №1. Генерация ssh-ключа
Подключение к виртуальной машине А происходит по команде: ssh ip172-18-0-75-conq0rgl2o9000dchcq0@direct.labs.play-with-docker.com
Шаг №2. Создание адаптера на виртуалке Б
Создадим 1-ый маршрут 192.168.24.1/24
Создадим 2-ой маршрут 192.168.2.1/24
На данном этапе настройка машины Б завершается. Приступим к настройке машины С.
Настройка виртуальной машины С заключается в созданиие ssh-ключа, адаптера.
Шаг №1. Генерация ssh-ключа
Подключение к виртуальной машине C происходит по команде: ssh ip172-18-0-122-conq0rgl2o9000dchcq0@direct.labs.play-with-docker.com
Шаг №2. Создание адаптера на виртуалке С и добавление маршрута между С и А
Настройка машины С завершено
Шаг №1. Установка модуля Flask на машине А
Шаг №2. Создание файла app.py
Шаг №3. Разворачивание hhtp-сервера на 5000 порту на виртуалке А
Шаг №4. Отправка запроса с машины С на 5000 порт машины А
Машина С:
Машина А:
Также в рамках задания необходимо было прописать bash-скрипт для каждой виртуалки, который позволит в дальнейшим упростить запуска наших машин.
Виртуалка А.
#!/bin/bash
echo "Adapter for A"
ip link add macvlan1 link eth0 type macvlan mode bridge
ip address add dev macvlan1 192.168.24.10/24
ip link set macvlan1 up
ip route add 192.168.2.0/24 via 192.168.24.1
pip install flask
touch app.py
from flask import Flask, request
app = Flask(__name__)
@app.route('/', methods=['GET'])
def get_request():
return 'GET request'
@app.route('/', methods=['POST'])
def post_request():
data = request.get_json()
return f'POST request with data: {data}'
@app.route('/', methods=['PUT'])
def put_request():
data = request.get_json()
return f'PUT request with data: {data}'
app.run(host='0.0.0.0', port=5000)
python app.py
Виртуалка Б.
#!/bin/bash
echo "Configuring adapter for A"
ip link add macvlan1 link eth0 type macvlan mode bridge
ip address add dev macvlan1 192.168.24.1/24
ip link set macvlan1 up
echo "Adapter for A - ready\n"
echo "Configuring adapter for C"
ip link add macvlan2 link eth0 type macvlan mode bridge
ip address add dev macvlan2 192.168.2.1/24
ip link set macvlan2 up
echo "Adapter for C - ready\n"
Виртуалка С.
#!/bin/bash
echo "Configuring adapter for subnet C"
ip link add macvlan1 link eth0 type macvlan mode bridge
ip address add dev macvlan1 192.168.2.10/24
ip link set macvlan1 up
ip route add 192.168.24.0/24 via 192.168.2.1
echo "Adapter for C - ready"
printf "Sending request"
curl "http://192.168.28.10:5000"














