Демонстрационный экзамен (ДЭ) — это форма итоговой аттестации в колледжах и вузах, где студенты выполняют практические задания в реальных или смоделированных производственных условиях. Его суть заключается в независимой экспертной оценке профессиональных навыков, где комиссия из работодателей проверяет готовность выпускника к работе, а не только теоретические знания.
Задание демонстрационного экзамена 09.02.06 2026.pdf
Необходимо разработать и настроить инфраструктуру информационно-коммуникационной системы согласно предложенной топологии.

| Host | Link | IPv4 |
|---|---|---|
| ISP | NAT | |
| ISP → HQ-RTR | 1.1.1.1/30 |
|
| ISP → BR-RTR | 2.2.2.1/30 |
|
| HQ-RTR | ISP → HQ-RTR | 1.1.1.2/30 |
| HQ-RTR → HQ-SRV | 192.168.100.62/26 |
|
| HQ-RTR → HQ-CLI | 192.168.0.1/24 |
|
| Tun | 172.16.100.1/24 |
|
| BR-RTR | ISP → BR-RTR | 2.2.2.2/30 |
| BR-RTR → BR-SRV | 192.168.200.14/28 |
|
| Tun | 172.16.100.2/24 |
|
| HQ-SRV | HQ-RTR → HQ-SRV | 192.168.100.1/26 |
| HQ-CLI | HQ-RTR → HQ-CLI | 192.168.0.2/24 |
| BR-SRV | BR-RTR → BR-SRV | 192.168.200.1/28 |
Добавление пользователя в файл sudoers для выполнения команд от имени супер пользователя (команда sudo)
заходим под пользователем rootsu rootВводим пароль пользователя root его не будет видно это нормально
nano /etc/sudoersВнутри открывшегося файла пишем на новой строке (вместо alt пишем логин своего пользователя которое указывали при установке)
alt ALL=(ALL:ALL) ALLНажимаем сочетание клавиш Ctr+S (сохранить) затем Ctr+X (выйти) Ctr+D (выйти из под пользователя) дальше я прописывать такие моменты не буду
Видим на скрине ниже подчеркнутое это имя устройства его необходимо изменить

sudo hostnamectl set-hostname ISP; exec bash
Видим что имя изменилось

Точно также необходимо сделать на всех машинах
Вместо ISP название устройства HQ-RTR BR-RTR и так далее
Для настройки сети необходимо заполнить таблицу с учетом своих данных это упростит, ускорит и поможет избежать ошибки при настройки сети на устройствах
Что бы заполнить столбец ens в таблице используем команду
ip -c a
| Host | Link | IPv4 | MAC | ens |
|---|---|---|---|---|
| ISP | NAT | |||
| ISP → HQ-RTR | 1.1.1.1/30 |
|||
| ISP → BR-RTR | 2.2.2.1/30 |
|||
| HQ-RTR | ISP → HQ-RTR | 1.1.1.2/30 |
||
| HQ-RTR → HQ-SRV | 192.168.100.62/26 |
|||
| HQ-RTR → HQ-CLI | 192.168.0.1/24 |
|||
| Tun | 172.16.100.1/24 |
|||
| BR-RTR | ISP → BR-RTR | 2.2.2.2/30 |
||
| BR-RTR → BR-SRV | 192.168.200.14/28 |
|||
| Tun | 172.16.100.2/24 |
|||
| HQ-SRV | HQ-RTR → HQ-SRV | 192.168.100.1/26 |
||
| HQ-CLI | HQ-RTR → HQ-CLI | 192.168.0.2/24 |
||
| BR-SRV | BR-RTR → BR-SRV | 192.168.200.1/28 |
Настраиваем IPv4 и Forwarding:
sudo nano /etc/net/sysctl.conf
Меняем 0 на 1 и выходим

Создадим скрипт для автоматической настройки
nano src
И вписываем внутрь свои данные интерфейсов
(И вписываем внутрь вместо 19 и 20 пишем номера своих интерфейсов)
#! /bin/bash
for i in 19 20; do
mkdir /etc/net/ifaces/ens$i
cat <<EOF > /etc/net/ifaces/ens$i/options
TYPE=eth
DISABLED=no
NM_CONTROLLED=no
BOOTPROTO=static
CONFIG_IPV4=YES
EOF
done
echo 1.1.1.1/30 > /etc/net/ifaces/ens19/ipv4address
echo 2.2.2.1/30 > /etc/net/ifaces/ens20/ipv4address
systemctl restart network
выдаем права на выполнение созданного скрипта
chmod +x src
и выполняем скрипт
sudo bash src
проверяем и видим ip адреса
ip -c a

можно еще проверить через
ping ya.ru

меняем ens18 на интерфейс который смотрит в сторону интернета (NAT)
sudo iptables -t nat -A POSTROUTING -s 1.1.1.0/30 -o ens18 -j MASQUERADE
sudo iptables -t nat -A POSTROUTING -s 2.2.2.0/30 -o ens18 -j MASQUERADE
sudo iptables-save | sudo tee -a /etc/sysconfig/iptables
sudo systemctl enable --now iptables.service
для проверки вводим команду
sudo iptables -t nat -L -n -v
и видим наши правила

Настраиваем IPv4 и Forwarding:
sudo nano /etc/net/sysctl.conf
Меняем 0 на 1 и выходим

Создадим скрипт для автоматической настройки
nano src
И вписываем внутрь свои данные интерфейсов
(И вписываем внутрь вместо 18 19 и 20 пишем номера своих интерфейсов )
#! /bin/bash
for i in 18 19 20; do
mkdir /etc/net/ifaces/ens$i
cat <<EOF > /etc/net/ifaces/ens$i/options
TYPE=eth
DISABLED=no
NM_CONTROLLED=no
BOOTPROTO=static
CONFIG_IPV4=YES
EOF
done
echo 1.1.1.2/30 > /etc/net/ifaces/ens20/ipv4address
echo default via 1.1.1.1 > /etc/net/ifaces/ens20/ipv4route
echo nameserver 77.88.8.8 > /etc/net/ifaces/ens20/resolv.conf
echo 192.168.0.1/24 > /etc/net/ifaces/ens19/ipv4address
echo 192.168.100.62/26 > /etc/net/ifaces/ens18/ipv4address
systemctl restart network
выдаем права на выполнение созданного скрипта
chmod +x src
и выполняем скрипт
sudo bash src
проверяем и видим ip адреса
ip -c a

проверяем доступ в интернет
ping ya.ru

sudo iptables -t nat -A POSTROUTING -s 192.168.100.0/26 -o ens20 -j MASQUERADE
sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ens20 -j MASQUERADE
sudo iptables-save | sudo tee -a /etc/sysconfig/iptables
sudo systemctl enable --now iptables.service
для проверки вводим команду
sudo iptables -t nat -L -n -v
и видим наши правила

Аналогично настраиваем устройство BR-RTR, изменяя параметры, номера интерфейсов и IP-адреса.
изменяя в этой строке ip-адрес
1.1.1.1на адрес ISP который смотрит в сторону BR-RTR (данная команда задает шлюз по умолчанию) то есть 2.2.2.1echo default via 1.1.1.1 > /etc/net/ifaces/ens20/ipv4route
также при настройке динамической маршрутизации меняем подсеть
192.168.100.0/26на посдеть192.168.200.0/28для сети BR иens20на интерфейс который смотрит в сторонуISPsudo iptables -t nat -A POSTROUTING -s 192.168.100.0/26 -o ens20 -j MASQUERADE
Настраиваем IPv4
Создадим скрипт для автоматической настройки
nano src
И вписываем внутрь свои данные интерфейсов
(И вписываем внутрь вместо 20 пишем номер своего интерфейса )
#! /bin/bash
mkdir /etc/net/ifaces/ens20
cat <<EOF > /etc/net/ifaces/ens20/options
TYPE=eth
DISABLED=no
NM_CONTROLLED=no
BOOTPROTO=static
CONFIG_IPV4=yes
EOF
echo 192.168.100.1/26 > /etc/net/ifaces/ens20/ipv4address
echo default via 192.168.100.62 > /etc/net/ifaces/ens20/ipv4route
echo nameserver 77.88.8.8 > /etc/net/ifaces/ens20/resolv.conf
systemctl restart network
выдаем права на выполнение созданного скрипта
chmod +x src
и выполняем скрипт
sudo bash src
проверяем и видим ip адреса
ip -c a

проверяем доступ в интернет
ping ya.ru

алогично настраиваем устройство BR-SRV, изменяя параметры, номера интерфейсов и IP-адреса.
изменяя в этой строке ip-адрес
192.168.100.62на адрес который смотрит в сторону BR-RTR (данная команда задает шлюз по умолчанию) то есть 192.168.200.14echo default via 192.168.100.62 > /etc/net/ifaces/ens20/ipv4route
Что бы создать учетную запись пользователя используем команду
sudo useradd sshuser -u 2026
а установить пароль можно командой
sudo passwd sshuser
пароль видно не будет это нормально просто вводим P@ssw0rd так как такой пароль определен заданием

Добавляем пользователя в группу wheel
sudo usermod -aG wheel sshuser
Создадим файл конфигурации что бы использовать sudo без пароля
sudo nano /etc/sudoers.d/sshuser
и пишем туда
sshuser ALL=(ALL:ALL) NOPASSWD: ALL
Проверяем
su - sshuser
id -u
sudo -i

Точно так же делаем на BR-SRV
Что бы создать учетную запись пользователя используем команду
sudo useradd net_admin
а установить пароль можно командой
sudo passwd net_admin
пароль видно не будет это нормально просто вводим P@ssw0rd так как такой пароль определен заданием

Добавляем пользователя в группу wheel
sudo usermod -aG wheel net_admin
Создадим файл конфигурации что бы использовать sudo без пароля
sudo nano /etc/sudoers.d/net_admin
и пишем туда
net_admin ALL=(ALL:ALL) NOPASSWD: ALL
Проверяем
su - net_admin
sudo -i
Точно так же делаем на BR-RTR
Настройте безопасный удаленный доступ на серверах HQ-SRV и BR-SRV
Заходим в файл, чтобы сконфигурировать ssh-server
sudo nano /etc/openssh/sshd_config
вписываем в файл следующие параметры
Port 2026
AllowUsers sshuser
MaxAuthTries 2
Banner /etc/openssh/banner
создадим бенер «Authorized access only»
sudo echo "Authorized access only" | sudo tee /etc/openssh/banner
перезапустим ssh server что бы настройки применились
sudo systemctl restart sshd
проверяем
ssh sshuser@127.0.0.1 -p 2026
и видим наш банер Authorized access only, вход по порту 2026, 2 попытки авторизации, вход только пользователем sshuser

абсолютно точно также делаем на BR-SRV
Между офисами HQ и BR, на маршрутизаторах HQ-RTR и BR-RTR необходимо сконфигурировать ip туннель
Настройка gre:
создаем новый виртуальный интерфейс
sudo mkdir /etc/net/ifaces/gre1
и настроим его
sudo nano /etc/net/ifaces/gre1/options
вписываем в файл, меняя номер ens на свой, который смотрит в сторону ISP.
TYPE=iptun
TUNTYPE=gre
TUNLOCAL=1.1.1.2
TUNREMOTE=2.2.2.2
TUNOPTIONS='ttl 64'
HOST=ens20
sudo echo "172.16.100.1/24" | sudo tee /etc/net/ifaces/gre1/ipv4address
перезапускаем сеть
sudo systemctl restart network
Проверяем, должен появиться новый интерфейс с IP-адресом
ip -c a

Настройка gre:
создаем новый виртуальный интерфейс
sudo mkdir /etc/net/ifaces/gre1
и настроим его
sudo nano /etc/net/ifaces/gre1/options
вписываем в файл, меняя номер ens на свой, который смотрит в сторону ISP.
TYPE=iptun
TUNTYPE=gre
TUNLOCAL=2.2.2.2
TUNREMOTE=1.1.1.2
TUNOPTIONS='ttl 64'
HOST=ens20
sudo echo "172.16.100.2/24" | sudo tee /etc/net/ifaces/gre1/ipv4address
перезапускаем сеть
sudo systemctl restart network
Проверяем теперь вес туннель должный идти пинги
ping 172.16.100.1

Обеспечьте динамическую маршрутизацию на маршрутизаторах HQ-RTR и BR-RTR
Чтобы установить пакет frr, обновляем зависимости
sudo apt-get update
и устанавливаем пакет frr
sudo apt-get install frr -y
Настраиваем ospf:
sudo nano /etc/frr/daemons
находим ospfd=no и меняем на ospfd=yes
Запускаем и ставим в автозапуск
sudo systemctl enable --now frr
Заходим в frr
sudo vtysh
Зайдя, мы видим интерфейс, похожий на интерфейс настройки любого маршрутизатора в CLI.
Настраиваем динамическую маршрутизацию.
HQ-RTR# configure terminal
HQ-RTR(config)# router ospf
HQ-RTR(config-router)# network 172.16.100.0/24 area 0
HQ-RTR(config-router)# network 192.168.100.0/26 area 0
HQ-RTR(config-router)# network 192.168.0.0/24 area 0
HQ-RTR(config-router)# passive-interface default
HQ-RTR(config-router)# exit
HQ-RTR(config)# interface gre1
HQ-RTR(config-if)# no ip ospf passive
HQ-RTR(config-if)# ip ospf authentication message-digest
HQ-RTR(config-if)# ip ospf message-digest-key 1 md5 Passw0rd
HQ-RTR(config-if)# ip ospf mtu-ignore
HQ-RTR(config-if)# exit
HQ-RTR(config)# end
HQ-RTR# write memory
Что бы установить пакет frr, обновляем зависимости
sudo apt-get update
и устанавливаем пакет frr
sudo apt-get install frr -y
Настраиваем ospf:
sudo nano /etc/frr/daemons
находим ospfd=no и меняем на ospfd=yes
Запускаем и ставим в автозапуск
sudo systemctl enable --now frr
Заходим в frr
sudo vtysh
Настраиваем динамическую маршрутизацию
BR-RTR# configure terminal
BR-RTR(config)# router ospf
BR-RTR(config-router)# network 172.16.100.0/24 area 0
BR-RTR(config-router)# network 192.168.200.0/28 area 0
BR-RTR(config-router)# passive-interface default
BR-RTR(config-router)# exit
BR-RTR(config)# interface gre1
BR-RTR(config-if)# no ip ospf passive
BR-RTR(config-if)# ip ospf authentication message-digest
BR-RTR(config-if)# ip ospf message-digest-key 1 md5 Passw0rd
BR-RTR(config-if)# ip ospf mtu-ignore
BR-RTR(config-if)# exit
BR-RTR(config)# end
BR-RTR# write memory
Проверить
sudo vtysh
BR-RTR# show ip ospf neighbor
BR-RTR# show ip route ospf
BR-RTR# show ip ospf interface

Скачиваем образ по ссылке и устанавливаем виртуальную машину HQ-CLI
https://download.basealt.ru/pub/distributions/ALTLinux/p11/images/workstation/x86_64/alt-workstation-11.1-x86_64.iso
| RAM | CPU | HDD |
|---|---|---|
| 3072mb | 2 | 20gb |
Сетевой адаптерe усанавливаем тип LAN сегмет и выбираем HQ-RTR → HQ-CLI
Не добавляем новый, а изменяем свой существующий уже.
Сразу поменяйте имя машины на HQ-CLI
Устанавливаем пакет dhcp-server
sudo apt-get update && sudo apt-get install dhcp-server -y
Заходим в файл /etc/sysconfig/dhcpd и напротив параметра DHCPDARGS= пишем свой интерфейс который смотрит в сторону HQ-CLI
Открываем файл на редактирование /etc/dhcp/dhcpd.conf и вписываем внутрь
option domain-name "au-team.irpo";
option domain-name-servers 192.168.100.1;
default-lease-time 600;
max-lease-time 7200;
authoritative;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.1 192.168.0.254;
option routers 192.168.0.1;
}
Запустить службу
sudo systemctl enable --now dhcpd
Проверяем получение ip адресса машиной HQ-CLI
ip -c --br a

Настройте инфраструктуру разрешения доменных имён для офисов HQ и BR
| Устройство | Запись | Тип |
|---|---|---|
| HQ-RTR | hq-rtr.au-team.irpo | A,PTR |
| BR-RTR | br-rtr.au-team.irpo | A |
| HQ-SRV | hq-srv.au-team.irpo | A,PTR |
| HQ-CLI | hq-cli.au-team.irpo | A,PTR |
| BR-SRV | br-srv.au-team.irpo | A |
| ISP (интерфейс направленный в сторону HQ-RTR) | docker.au-team.irpo | A |
| ISP (интерфейс направленный в сторону BR-RTR) | web.au-team.irpo | A |
DNS (Domain Name System) — распределенная система, обеспечивающая преобразование доменных имен в IP-адреса. Работает по принципу клиент-серверной архитектуры с использованием иерархической структуры зон.
Процесс разрешения имени включает цепочку запросов:
.)..ru, .com и т.д.).| Тип записи | Название | Назначение | Пример использования |
|---|---|---|---|
| A | Address | Привязка домена к IPv4 | site.ru -> 1.2.3.4 |
| AAAA | IPv6 Address | Привязка домена к IPv6 | site.ru -> 2001:db8::1 |
| CNAME | Canonical Name | Псевдоним (alias) другого имени | www.site.ru -> site.ru |
| MX | Mail Exchanger | Указывает серверы почты | 10 mail.site.ru |
| TXT | Text record | Текстовые данные (SPF, DKIM) | v=spf1 a mx ~all |
| NS | Name Server | Указывает на держателя зоны | ns1.provider.net |
| SRV | Service Record | Порт и адрес конкретной службы | 5 25565 mc.site.ru |
| PTR | Pointer | Обратный поиск (IP в домен) | 1.2.3.4 -> host.site.ru |
| SOA | Start of Authority | Метаданные о зоне и TTL | ns1.dns.ru. admin.site.ru |
Зная это мы можем приступить к настройке
Устанавливаем пакет dnsmasq
sudo apt-get update && sudo apt-get install dnsmasq -y
Заходим в файл /etc/dnsmasq.conf
и вводим
no-hosts
server=77.88.8.8
cache-size=1000
all-servers
no-negcache
interface=*
host-record=hq-rtr.au-team.irpo,192.168.100.62
host-record=hq-rtr.au-team.irpo,192.168.0.1
host-record=hq-srv.au-team.irpo,192.168.100.1
host-record=hq-cli.au-team.irpo,192.168.0.2
address=/br-rtr.au-team.irpo/192.168.200.14
address=/br-srv.au-team.irpo/192.168.200.1
address=/docker.au-team.irpo/1.1.1.1
address=/web.au-team.irpo/2.2.2.1
и включаем службу
sudo systemctl enable --now dnsmasq
Открываем терминал и пишем команды
host hq-rtr.au-team.irpo
host hq-srv.au-team.irpo
host hq-cli.au-team.irpo
host 192.168.100.62
host 192.168.100.1
host 192.168.0.2
host br-rtr.au-team.irpo
host br-srv.au-team.irpo
host docker.au-team.irpo
host web.au-team.irpo
Должный получить вот такой вывод

Настройте часовой пояс на всех устройствах (за исключением
виртуального коммутатора, в случае его использования) согласно месту
проведения экзамена
Делается это очень просто, буквально 2 командами.
Первая задаём зону времени
sudo timedatectl set-timezone Europe/Moscow
Проверяем и видим нашу зону
sudo timedatectl

Точно также деалем на всех остальных машинах ISP, HQ-RTR, HQ-SRV, HQ-CLI, BR-RTR, BR-SRV.
P.S.
Проблема в том, что на всё, что мы запланировали, у нас всего полтора часа.Мы абсолютно не уложились в это время.
Не знаю, успеем ли мы рассмотреть второй модуль в этом году. Зачёт будет по первому модулю. Я спрошу теорию: что это за команда и зачем она нужна. Также попрошу выполнить задания из первого модуля.
Задание Модуля 2 содержит развёртывание доменной инфраструктуры, внедрение и настройку ansible как инфраструктуры на основе открытых ключей, установку и настройку отказоустойчивого дискового массива, установку и настройку файловых служб, службы сетевого времени, настройки веб серверов, установку приложения.
Настройте контроллер домена Samba DC на сервере BR-SRV
Устанавливаем пакет task-samba-dc:
sudo apt-get update && sudo apt-get install -y task-samba-dc
удаляем не нужные файлы конфига samba
sudo rm -f /etc/samba/smb.conf
sudo rm -rf /var/lib/samba/
sudo rm -rf /var/cache/samba/
sudo mkdir -p /var/lib/samba/sysvol
запускаем устоновку домена
sudo samba-tool domain provision
В Realm вводим au-team.irpo остальное оставляем по умолчанию
в конце вводим пароль администратора домена например Qwerty123!

Настраиваем Kerberos:
sudo cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
и запускаем Samba
sudo systemctl enable --now samba
пропишем DNS в на DC меняем ens на свой
sudo echo "search au-team.irpo" | sudo tee /etc/net/ifaces/ens18/resolv.conf
sudo echo "nameserver 127.0.0.1" | sudo tee -a /etc/net/ifaces/ens18/resolv.conf
sudo systemctl restart network
Проверит:
sudo samba-tool domain info 127.0.0.1

проверить вход администратора
kinit Administrator
klist

Настраиваем группу и пользователей:
создаем гпурру hq
sudo samba-tool group add hq
создаем пользоваетелей
for i in {1..5}; do
sudo samba-tool user add hquser$i P@ssw0rd;
sudo samba-tool user setexpiry hquser$i --noexpiry;
sudo samba-tool group addmembers "hq" hquser$i;
done
Проверить
sudo samba-tool group listmembers hq

Меняем выдаваемый DHCP-сервером адрес DNS-сервера:
sudo sed -i "s/option domain-name-servers 192.168.100.1;/option domain-name-servers 192.168.200.1;/g" /etc/dhcp/dhcpd.conf
sudo systemctl restart dhcpd
заходим под root
su -
sudo systemctl restart network
cat /etc/resolv.conf
Проверить:

Устанавливаем пакет task-auth-ad-sssd:
apt-get update && apt-get install -y task-auth-ad-sssd
Используя Центр Управления Системой (ЦУС) вводим HQ-CLI в домен:
раздел "Аутентификация"

Выполнить перезагрузку виртуальной машины HQ-CLI
заходим под root
su -
roleadd hq wheel
echo "Cmnd_Alias SHELLCMD = /bin/cat, /bin/grep, /usr/bin/id" > /etc/sudoers.d/hq
echo "WHEEL_USERS ALL=(ALL:ALL) SHELLCMD" >> /etc/sudoers.d/hq
Проверить, выполнив вход из-под доменно пользователя группы hq:
Сначало надо выйти из локального пользователя HQ-CLI
И войти в доменного пользователя hquser1@au-team.irpo
и в терминале ввести следующее
sudo id
sudo cat /etc/hosts
sudo grep "127.0.0.1" /etc/hosts
sudo ip a

Сконфигурируйте файловое хранилище на сервере HQ-SRV
Перед выполнением данного задания необходимо в натсройках виртуальной машины HQ-SRV создать 2 диска каждый по 1 гб
Настраиваем RAID-массив:
что бы проверить названия дисков в системе
lsblk
создание RAID 0
sudo mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sda /dev/sdb
sudo mdadm --detail --scan --verbose | sudo tee -a /etc/mdadm.conf
Создание ФС
sudo mkfs.ext4 /dev/md0
добовляем авто-монтирование
sudo echo "/dev/md0 /raid ext4 defaults 0 0" | sudo tee -a /etc/fstab
создаем папку raid
sudo mkdir /raid
монтируем принудительно
sudo mount -av
проверяем
lsblk
sudo blkid /dev/md0

Настройте сервер сетевой файловой системы (nfs) на HQ-SRV
Устанавливаем пакет nfs-server:
sudo apt-get install -y nfs-server
Настраиваем NFS-сервер:
sudo mkdir /raid/nfs
sudo chmod -R 777 /raid/nfs
sudo echo "/raid/nfs 192.168.0.0/24(rw,no_root_squash)" | sudo tee /etc/exports
sudo exportfs -arv
sudo systemctl enable --now nfs-server
Заходим под root
su -
и выполняем
mkdir /mnt/nfs
chmod -R 777 /mnt/nfs
echo "192.168.100.1:/raid/nfs /mnt/nfs nfs defaults,_netdev 0 0" >> /etc/fstab
mount -av

Проверить
df -h
echo "Hello" > /mnt/nfs/test.txt
cat /mnt/nfs/test.txt

Настройте службу сетевого времени на базе сервиса chrony на маршрутизаторе ISP
Настраивает NTP-сервер
sudo sed -i 's/^pool/#pool/' /etc/chrony.conf
заходим в файл /etc/chrony.conf и в конце пишем
server ntp0.ntp-servers.net iburst prefer minstratum 4
local stratum 5
allow 0.0.0.0/0
перезапускаем службу
sudo systemctl restart chronyd
Проверить:
chronyc tracking

Настраиваем NTP-клиент:
sudo sed -i "s/^pool/#pool/" /etc/chrony.conf
sudo echo "server 1.1.1.1 iburst" | sudo tee -a /etc/chrony.conf
sudo systemctl restart chronyd
Проверить:
chronyc sources

точно так же делаем на всех устройствах ветки HQ
Настраиваем NTP-клиент:
sudo sed -i "s/^pool/#pool/" /etc/chrony.conf
sudo echo "server 2.2.2.1 iburst" | sudo tee -a /etc/chrony.conf
sudo systemctl restart chronyd
Проверить:
chronyc sources
точно так же делаем на BR-SRV
Сконфигурируйте ansible на сервере BR-SRV
Устанавливаем пакеты ansible и sshpass:
sudo apt-get update && sudo apt-get install -y ansible sshpass
Настраиваем ansible:
заходим в файл /etc/ansible/ansible.cfg и пишем
[defaults]
inventory = /etc/ansible/hosts
host_key_checking = False
заходим в файл /etc/ansible/hosts и пишем
в этих параметрах пишем своих пользователей и пароли от них ansible_user=alt ansible_password=alt
HQ-SRV ansible_host=192.168.100.1 ansible_user=sshuser ansible_password=P@ssw0rd ansible_port=2026
HQ-CLI ansible_host=192.168.0.2 ansible_user=alt ansible_password=alt
HQ-RTR ansible_host=172.16.100.1 ansible_user=alt ansible_password=alt
BR-RTR ansible_host=192.168.200.14 ansible_user=alt ansible_password=alt
[all:vars]
ansible_python_interpreter=/usr/bin/python3
Проверить
cd /etc/ansible/
ansible -m ping all

Разверните веб-приложение testapp с использованием средств контейнеризации на сервере BR-SRV
Устанавливаем пакеты docker-engine и docker-compose-v2:
sudo apt-get update && sudo apt-get install -y docker-engine docker-compose-v2
включаем
sudo systemctl enable --now docker
Eсли образы на флешке
Сначала нужно понять, под каким именем система «увидела» флешку, выполните команду:
lsblkИщем устройство с типом part, которое по размеру совпадает с вашей флешкой. Обычно это /dev/sdb1 или /dev/sdc1
Важно: Не перепутайте с системным диском (sda).В Linux нельзя просто зайти на диск, его нужно «прикрепить» к папке в системе. Создадим временную директорию:
sudo mkdir -p /mnt/usbТеперь связываем устройство с созданной папкой. Если флешка отформатирована в FAT32 или NTFS (что чаще всего), команда будет выглядеть так:
sudo mount /dev/sdb1 /mnt/usbЕсли возникнет ошибка о типе файловой системы, попробуйте явно указать её (например, для NTFS):
sudo mount -t ntfs-3g /dev/sdb1 /mnt/usbТеперь, когда флешка «стала» папкой /mnt/usb, просто копируем туда ваш подготовленный архив:
sudo cp /mnt/usb/mariadb_latest.tar /home/altsudo cp /mnt/usb/site_latest.tar /home/alt
Пропускаем следующий шаг если образы на вм скинули через флешку
Скачиваем файлы
curl -O https://file.games47.ru/site_latest.tarcurl -O https://file.games47.ru/mariadb_latest.tar
загружаем образы в docker
sudo docker load -i mariadb_latest.tar
sudo docker load -i site_latest.tar
Проверяем загруженные образы
sudo docker image ls
Создаем файл конфигурации для docker compose
nano compose.yaml
Пишем внутрь файла
services:
database:
container_name: db
image: mariadb:10.11
restart: always
ports:
- "3306:3306"
environment:
MARIADB_DATABASE: "testdb"
MARIADB_USER: "testc"
MARIADB_PASSWORD: "P@ssw0rd"
MARIADB_ROOT_PASSWORD: "toor"
app:
container_name: tespapp
image: site:latest
restart: always
ports:
- "8080:8000"
environment:
DB_TYPE: "maria"
DB_HOST: "database"
DB_PORT: "3306"
DB_NAME: "testdb"
DB_USER: "testc"
DB_PASS: "P@ssw0rd"
depends_on:
- database
Запускаем контейнеры
sudo docker compose up -d
Проверить работу контейнеров
sudo docker compose ps
Открываем браузер и в адресной строке пишем 192.168.200.1:8080

Разверните веб приложение на сервере HQ-SRV
Устанавливаем пакет lamp-server
sudo apt-get update && sudo apt-get install -y lamp-server
Eсли образы на флешке
Сначала нужно понять, под каким именем система «увидела» флешку, выполните команду:
lsblkИщем устройство с типом part, которое по размеру совпадает с вашей флешкой. Обычно это /dev/sdb1 или /dev/sdc1
Важно: Не перепутайте с системным диском (sda).В Linux нельзя просто зайти на диск, его нужно «прикрепить» к папке в системе. Создадим временную директорию:
sudo mkdir -p /mnt/usbТеперь связываем устройство с созданной папкой. Если флешка отформатирована в FAT32 или NTFS (что чаще всего), команда будет выглядеть так:
sudo mount /dev/sdb1 /mnt/usbЕсли возникнет ошибка о типе файловой системы, попробуйте явно указать её (например, для NTFS):
sudo mount -t ntfs-3g /dev/sdb1 /mnt/usbТеперь, когда флешка «стала» папкой /mnt/usb, просто копируем туда ваш подготовленный архив:
sudo cp /mnt/usb/web/logo.png /var/www/html/sudo cp /mnt/usb/web/index.php /var/www/html/sudo cp /mnt/usb/web/dump.sql /home/alt/
Пропускаем следующий шаг если образы на вм скинули через флешку
Скачиваем файлы
curl -O https://file.games47.ru/web/logo.pngcurl -O https://file.games47.ru/web/index.phpcurl -O https://file.games47.ru/web/dump.sqlТеперь когда файлы скачанны надо их переместить в рабочую деректорию
sudo cp logo.png /var/www/html/sudo cp index.php /var/www/html/
Настраиваем файл index.php
sudo sed -i 's/$username = "user"/$username = "webc"/' /var/www/html/index.php
sudo sed -i 's/$password = "password"/$password = "P@ssw0rd"/' /var/www/html/index.php
sudo sed -i 's/$dbname = "db"/$dbname = "webdb"/' /var/www/html/index.php
Настраиваем MariaDB
sudo systemctl enable --now mariadb
mariadb -u root
Вунтри консоли sql пишем создаем БД и пользавателя
CREATE DATABASE webdb;
CREATE USER 'webc'@'localhost' IDENTIFIED BY 'P@ssw0rd';
GRANT ALL PRIVILEGES ON webdb.* TO 'webc'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
добавляем в нашу БД дамп
mariadb -u webc -p -D webdb < dump.sql
Запускаем веб-сервер Apache2:
sudo systemctl enable --now httpd2
Проверить доступ до веб-сайта по адресу 192.168.100.1

На маршрутизаторах сконфигурируйте статическую трансляцию портов
Настраиваем пробросы портов
пишем ens который смотрит в сторону ISP
sudo iptables -t nat -A PREROUTING -i ens20 -p tcp --dport 2026 -j DNAT --to-destination 192.168.100.1:2026
sudo iptables -t nat -A PREROUTING -i ens20 -p tcp --dport 8080 -j DNAT --to-destination 192.168.100.1:80
sudo iptables-save | sudo tee -a /etc/sysconfig/iptables
sudo systemctl restart iptables
для проверки вводим команду
sudo iptables -t nat -L -n -v

Настраиваем пробросы портов
пишем ens который смотрит в сторону ISP
sudo iptables -t nat -A PREROUTING -i ens20 -p tcp --dport 2026 -j DNAT --to-destination 192.168.200.1:2026
sudo iptables -t nat -A PREROUTING -i ens20 -p tcp --dport 8080 -j DNAT --to-destination 192.168.200.1:8080
sudo iptables-save | sudo tee -a /etc/sysconfig/iptables
sudo systemctl restart iptables
для проверки вводим команду
sudo iptables -t nat -L -n -v

Проверить функциональность проброса портов
ssh -p 2026 sshuser@1.1.1.2
ssh -p 2026 sshuser@2.2.2.2

curl http://1.1.1.2:8080 | head

curl http://2.2.2.2:8080 | head

Настройте веб-сервер nginx как обратный прокси-сервер на ISP
Устанавливаем пакет nginx
sudo apt-get update && sudo apt-get install -y nginx
открываем файл
sudo nano /etc/nginx/sites-available.d/default.conf
Удаляем все и пишем конфиг нашего обратного прокси сервера
server {
listen 80;
server_name web.au-team.irpo;
location / {
proxy_pass http://1.1.1.2:8080;
}
}
server {
listen 80;
server_name docker.au-team.irpo;
location / {
proxy_pass http://2.2.2.2:8080;
}
}
созадем символическую ссылку
sudo ln -s /etc/nginx/sites-available.d/default.conf /etc/nginx/sites-enabled.d/
Включаем nginx
sudo systemctl enable --now nginx
заходим под root
su -
Настраиваем файл /etc/hosts
echo "1.1.1.1 web.au-team.irpo" >> /etc/hosts
echo "2.2.2.1 docker.au-team.irpo" >> /etc/hosts
Зоходим в баузер и роверяем доступность веб-ресурсов по требуемым именам http://web.au-team.irpo http://docker.au-team.irpo


На маршрутизаторе ISP настройте web-based аутентификацию
Устанавливаем пакет apache2-htpasswd
sudo apt-get update && sudo apt-get install -y apache2-htpasswd
Настраиваем аутентификацию вводим пароль по типу P@ssw0rd
sudo htpasswd -c /etc/nginx/.htpasswd WEB
в файле /etc/nginx/sites-available.d/default.conf в блоке
server {
listen 80;
server_name web.au-team.irpo;
location / {
proxy_pass http://1.1.1.2:8080;
}
}
после строки proxy_pass http://1.1.1.2:8080; до первой скобки } добавляем
auth_basic "Restricted area";
auth_basic_user_file /etc/nginx/.htpasswd;
перезапускаем nginx
sudo systemctl restart nginx
Проверить
Заходим на сайт http://web.au-team.irpo и видим окно авторизации вводим Имя пользователя WEB и пароль который задавали авторизируемся и видим наш сайт

Удобным способом установите приложение Яндекс Браузер на HQ-CLI
Устанавливаем пакет yandex-browser-stable
заходим под root
su -
Устанавливаем
apt-get update && apt-get install -y yandex-browser-stable
Проверяем

«Администрирование — это искусство заставить хаос работать по правилам. Если ты не понимаешь, как работает сеть, ты не админ, ты — уверенный пользователь ПК».
Если ты дошел до этого этапа и у тебя всё пингуется, резолвится и открывается — мое уважение. Ты только что своими руками собрал инфраструктуру корпоративного уровня. Чтобы ты осознал масштаб проделанной работы, давай посмотрим на чек-лист того, что ты реализовал.
Посмотри на этот список. На демо-экзамене всё это нужно развернуть с нуля.
sshuser (с sudo) и net_admin.2026, ограничением попыток входа и баннером безопасности.au-team.irpo).au-team.irpo), заведены пользователи и настроены права через sudo-группы.md0) на ext4 с автомонтированием.chrony) на 5-м стратуме для всех узлов.ping с BR-SRV.8080.web и docker), закрыт базовой аутентификацией (.htpasswd).Сейчас ты мог потратил на этот стенд много времени, пытаясь понять, почему не работает. И это нормально для процесса обучения.
Но на реальном экзамене время — твой главный враг:
iptables -t nat... и конфиги Nginx. Если подсматриваешь каждую команду — сбрось виртуалки и пройди всё заново.systemctl status <сервис> или journalctl -xe. Система всегда пишет, почему ей плохо.iptables ничего не стоит, если после перезагрузки стенда правила слетят. Проверяй персистентность.Я ценю тех, кто доводит дело до конца, а не бросает на полпути. Если твоя инфраструктура (HQ-RTR ↔ HQ-SRV ↔ HQ-CLI и ветка BR) полностью функционирует, сайты открываются, а пинги ходят туда и обратно:
curl, как открываются сайты через reverse-proxy, продемонстрируй туннель. Ответишь на пару вопросов по топологии — зачёт твой.Удачи на экзамене! Пусть пакеты не теряются, а сервисы стартуют с первой попытки. 🚀