|
|
# Руководство для преподавателя. Подготовка среды проведения лабораторных работ
|
|
|
|
|
|
Лабораторные проводятся на виртуальных машинах в системе виртуализации Proxmox. Задания выкладываются в публичный git репозиторий. Для получения новых заданий студенты первоначально скачивают их по ссылке командой `git clone`, а затем в начале каждого урок обновляют их командой `git pull`.
|
|
|
|
|
|
Будем считать, что `N` - количество студентов умноженное на `1.5`, округлённое в большую сторону. X - идентификатор студента от `1` до `N`.
|
|
|
|
|
|
Создайте `N` пользователей в Proxmox с именами `studX` (`stud1`, `stud2`, ...). Используйте Realm "Proxmox VE authentication server".
|
|
|
|
|
|
Загрузите образ `debian-11.4.0-amd64-netinst.iso` в Proxmox хранилище.
|
|
|
|
|
|
Для массового создания виртуальных машин рекомендуется использовать возможность Proxmox конвертации виртуальной машины в шаблон. Из шаблона копия создаётся на порядки быстрее по времени, чем при полном клонировании. Следуйте следующим шагам:
|
|
|
1. настройте машину с общими для всех копий настройками,
|
|
|
2. преобразуйте её в шаблон (template),
|
|
|
3. создайте клоны из шаблона и донастройте, если необходимо,
|
|
|
4. сделайте snapshot с именем `initial` основных машин, чтобы вы и студенты имели возможность отката до рабочего состояния.
|
|
|
|
|
|
Список шаблонов виртуальных машин:
|
|
|
- `stud0-tabularasa-template`
|
|
|
- `stud0-template`
|
|
|
- `stud0-net-[1-2]-template`
|
|
|
- `stud0-troublesome-[1-6]-template`
|
|
|
|
|
|
(TODO Написать скрипт для создания шаблонов.)
|
|
|
(TODO Написать скрипт для создания учётки и виртуалок для студента на основе шаблонов.)
|
|
|
|
|
|
При наличии нескольких дисков рекомендуется RAID оптимизирующий производительность. Неправильный raid или медленный тип диска может привести к существенному замедлению работы во время установки ОС или пакетов.
|
|
|
|
|
|
|
|
|
## 1. Подготовка виртуальной машины к занятиям `01`, `02`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`.
|
|
|
|
|
|
Создайте vlan с доступом в интернет. Например, `bond0.499` и мост `vmbr499` с параметрами:
|
|
|
- Bridge ports: `bond0.499`,
|
|
|
- VLAN aware: `false`,
|
|
|
- IPv4/CIDR: `10.160.179.254/24`,
|
|
|
- Gateway (IPv4): `10.160.179.1`.
|
|
|
|
|
|
До начала занятий создайте N виртуальных машин со следующими характеристиками:
|
|
|
- 1 сокет с 4 ядрами,
|
|
|
- 8 Гб оперативной памяти,
|
|
|
- 16 Гб дискового пространства.
|
|
|
|
|
|
Каждой виртуальной машине назначьте статический IPv4 адрес `10.160.179.10 + X` (`10.160.179.11`, `10.160.179.12`, ...). Используйте инструкцию из задания про настройку сети данного учебного модуля.
|
|
|
|
|
|
Установите минимальный дистрибутив debian на каждую. Установите пакеты:
|
|
|
```
|
|
|
apt install man-db ssh vim tree jq lsof git mc fail2ban
|
|
|
```
|
|
|
|
|
|
Удалите пакет `ifupdown`, так как настройка сети будет производится средствами `systemd-networkd`.
|
|
|
```
|
|
|
apt remove ifupdown
|
|
|
```
|
|
|
|
|
|
Пробросьте порты: `22`, `80`, `443`.
|
|
|
|
|
|
Организуйте удалённый доступ к машинам по `ssh` ключу. Запретите доступ по ssh через пароль.
|
|
|
|
|
|
## 2. Подготовка виртуальной машины к занятиям `00`.
|
|
|
|
|
|
Данные виртуальные машины предназначены для тренировки в установке debian в уроке `00`.
|
|
|
|
|
|
До начала занятий создайте N виртуальных машин со следующими характеристиками:
|
|
|
- 1 сокет с 4 ядрами,
|
|
|
- 8 Гб оперативной памяти,
|
|
|
- 32 Гб дискового пространства,
|
|
|
- сетевой интерфейс `vmbr499` с доступом в интернет.
|
|
|
|
|
|
Студенты могут назначить статический IPv4: `10.160.179.10 + N + X`, Gateway (IPv4): `10.160.179.1`.
|
|
|
|
|
|
Подключите cdrom с образом `debian-11.4.0-amd64-netinst.iso`.
|
|
|
|
|
|
## 3. Подготовка виртуальной машины к занятиям `03`.
|
|
|
|
|
|
Данные виртуальные машины предназначены для настройки сетевого интерфейса в конфигурациях `systemd` в уроке `03`. Студентам необходимо работать в индивидуальных vlan для настройки по DHCP и снижению вероятности ошибок при назначении статического адреса.
|
|
|
|
|
|
Создайте `N` vlan без доступа в интернет. Например, `bond0.X` и мост `vmbrX` с параметрами:
|
|
|
- Bridge ports: `bond0.X`,
|
|
|
- VLAN aware: `false`.
|
|
|
|
|
|
Создайте `N` виртуальных машин `studX-net1` и `N` виртуальных машин `studX-net2` для `vmbrX`. Удалите пакет `ifupdown`.
|
|
|
|
|
|
## 4. Подготовка виртуальной машины к занятиям `12`.
|
|
|
|
|
|
Данные виртуальные
|
|
|
|
|
|
Создайте `N` vlan без доступа в интернет: `bond0.N+X` и мост `vmbrN+X` с параметрами:
|
|
|
- Bridge ports: `bond0.N+X`,
|
|
|
- VLAN aware: `false`.
|
|
|
|
|
|
Создайте `N` виртуальных машин `troublesome-gwX`, играющих роль шлюза для `vmbrN+X`. Установите минимальный образ debian. Удалите пакет `ifupdown`. Каждой виртуальной машине назначьте добавьте два сетевых интерфейса. Для первого интерфейса назначьте IPv4 адрес `10.160.179.100 + X` (`10.160.179.101`, `10.160.179.102`, ...). Для второго интерфейса назначьте IPv4 адрес `192.168.0.1`.
|
|
|
|
|
|
Создайте виртуальную машину `troublesome`. Установите минимальный образ debian. Скопируйте скрипты, приведенные ниже в `/sbin/`. Превратите машину в шаблон Proxmox.
|
|
|
|
|
|
Для каждого из 6 заданий создайте виртуальную машину из шаблона `troublesome`: `troublesomeX-task1`, `troublesomeX-task2`, ..., `troublesomeX-task6`. Каждой виртуальной машине назначьте статический IPv4 адрес `192.168.0.1 + номер задания`. Для 6 задания настройте беспарольный доступ по ssh от пользователя stud к пользователю mike. Команда `ssh localhost -l mike` должна отработать без ввода пароля. Внесите неисправности, активируя скрипты. Превратите машины в шаблоны.
|
|
|
|
|
|
Создайте N виртуальных машин для каждого задания из шаблонов: `troublesomeX-task1`, `troublesomeX-task2`, ..., `troublesomeX-task6`.
|
|
|
|
|
|
Скрипты для внесения неисправностей для заданий.
|
|
|
|
|
|
#### 1.
|
|
|
```bash
|
|
|
#!/bin/bash
|
|
|
# task 1
|
|
|
systemctl disable systemd-networkd
|
|
|
systemctl stop systemd-networkd
|
|
|
```
|
|
|
|
|
|
#### 2.
|
|
|
```bash
|
|
|
#!/bin/bash
|
|
|
# task 2
|
|
|
sed 's/^Gateway=.*$//' -i /etc/systemd/network/ens18.network
|
|
|
networkctl reload
|
|
|
```
|
|
|
|
|
|
#### 3.
|
|
|
```bash
|
|
|
#!/bin/bash
|
|
|
# task 3
|
|
|
sed 's/DNS/#DNS/' -i /etc/systemd/resolved.conf
|
|
|
systemctl restart systemd-resolved
|
|
|
```
|
|
|
|
|
|
#### 4.
|
|
|
```bash
|
|
|
#!/bin/bash
|
|
|
# task 4
|
|
|
sed 's/192\.168/172\.16/' -i /etc/systemd/network/ens18.network
|
|
|
networkctl reload
|
|
|
```
|
|
|
|
|
|
#### 5.
|
|
|
```bash
|
|
|
#!/bin/bash
|
|
|
# task 5
|
|
|
# ping gateway
|
|
|
ping 192.168.0.1 -c 1 2> /dev/null 1> /dev/null
|
|
|
gateway_mac=$(arp -n | grep 192.168.0.1 | awk '{ print $3 }')
|
|
|
ip link set address "$(gateway_mac)" dev ens18
|
|
|
```
|
|
|
|
|
|
Активируйте следующий сервис:
|
|
|
|
|
|
```bash
|
|
|
# /etc/systemd/system/network-problem.service
|
|
|
[Unit]
|
|
|
After=network.target
|
|
|
|
|
|
[Service]
|
|
|
Type=oneshot
|
|
|
ExecStart=/sbin/task5.sh
|
|
|
|
|
|
[Install]
|
|
|
WantedBy=multi-user.target
|
|
|
```
|
|
|
|
|
|
#### 6.
|
|
|
```bash
|
|
|
#!/bin/bash
|
|
|
# task 6
|
|
|
chmod 777 /home/stud/.ssh
|
|
|
```
|
|
|
|
|
|
## 5. Подготовка к экзамену
|
|
|
|
|
|
До начала занятий создайте N виртуальных машин со следующими характеристиками:
|
|
|
- 1 сокет с 4 ядрами,
|
|
|
- 8 Гб оперативной памяти,
|
|
|
- 6 Гб дискового пространства,
|
|
|
- сетевой интерфейс vmbr499.
|
|
|
|
|
|
Подключите cdrom с образом `debian-11.4.0-amd64-netinst.iso`. |