Модули обучения

В этом модуле рассматриваются фундаментальные команды Linux для получения информации о сетевом оборудовании, интерфейсах и управления сетевыми службами в системе с помощью `systemd`.

Для корректной идентификации устройств в локальной сети лабораторного стенда необходимо установить соответствующие имена хостов (hostname) для каждой виртуальной машины. Используйте команду hostnamectl, после чего обновите сессию терминала с помощью exec bash.

ISP
bash
$hostnamectl set-hostname isp.au-team.irpo; exec bash
HQ-RTR
bash
$hostnamectl set-hostname hq-rtr.au-team.irpo; exec bash
HQ-SRV
bash
$hostnamectl set-hostname hq-srv.au-team.irpo; exec bash
HQ-CLI
bash
$hostnamectl set-hostname hq-cli.au-team.irpo; exec bash
BR-RTR
bash
$hostnamectl set-hostname br-rtr.au-team.irpo; exec bash
BR-SRV
bash
$hostnamectl set-hostname br-srv.au-team.irpo; exec bash
Настройка сетевых интерфейсов
ISP
1. Создание директорий конфигурации для enp7s2 и enp7s3:
bash
$mkdir -p /etc/net/ifaces/enp7s{2,3}
2. Указание типа интерфейса (Ethernet) для обоих адаптеров:
bash
$echo 'TYPE=eth' | tee /etc/net/ifaces/enp7s{2,3}/options
3. Назначение IP-адреса на интерфейс enp7s2 (сеть к штаб-квартире):
bash
$echo '172.16.1.1/28' > /etc/net/ifaces/enp7s2/ipv4address
4. Назначение IP-адреса на интерфейс enp7s3 (сеть к филиалу):
bash
$echo '172.16.2.1/28' > /etc/net/ifaces/enp7s3/ipv4address
5. Перезапуск сетевой службы для применения новой конфигурации:
bash
$systemctl restart network
6. Проверка состояния интерфейсов и назначенных адресов:
bash
$ip -c --br a
BR-RTR
1. Создание директорий интерфейсов enp7s1, enp7s2 и gre1 (туннель):
bash
$mkdir -p /etc/net/ifaces/{enp7s{1,2},gre1}
2. Указание типа интерфейса (Ethernet) для enp7s1 и enp7s2:
bash
$echo 'TYPE=eth' | tee /etc/net/ifaces/enp7s{1,2}/options
3. Назначение внешнего IP-адреса на интерфейс enp7s1 (к провайдеру):
bash
$echo '172.16.2.2/28' > /etc/net/ifaces/enp7s1/ipv4address
4. Настройка шлюза по умолчанию через ISP:
bash
$echo 'default via 172.16.2.1' > /etc/net/ifaces/enp7s1/ipv4route
5. Указание DNS-сервера (Google DNS):
bash
$echo 'nameserver 8.8.8.8' > /etc/net/ifaces/enp7s1/resolv.conf
6. Назначение внутреннего IP-адреса на интерфейс enp7s2 (локальная сеть филиала):
bash
$echo '192.168.0.1/28' > /etc/net/ifaces/enp7s2/ipv4address
7. Открытие системного sysctl.conf для редактирования (включение IP forwarding):
bash
$vim /etc/net/sysctl.conf
8. Перезапуск сетевой службы для применения настроек:
bash
$systemctl restart network
9. Проверка состояния сетевых адаптеров:
bash
$ip -c --br a
BR-SRV
1. Указание типа интерфейса (Ethernet) для enp7s1:
bash
$echo 'TYPE=eth' > /etc/net/ifaces/enp7s1/options
2. Назначение IP-адреса на интерфейс enp7s1:
bash
$echo '192.168.0.2/28' > /etc/net/ifaces/enp7s1/ipv4address
3. Настройка основного шлюза по умолчанию через BR-RTR:
bash
$echo 'default via 192.168.0.1' > /etc/net/ifaces/enp7s1/ipv4route
4. Настройка DNS-резолвера и локального домена поиска:
bash
$echo $'search au-team.irpo\nnameserver 192.168.100.2' > /etc/net/ifaces/enp7s1/resolv.conf
5. Перезапуск сетевой службы для применения новой схемы:
bash
$systemctl restart network
6. Проверка краткого статуса интерфейсов:
bash
$ip -c --br a
HQ-RTR
1. Создание директорий для интерфейсов enp7s1, enp7s2, vlan100, vlan200, vlan999 и gre1:
bash
$mkdir -p /etc/net/ifaces/{enp7s{1,2},vlan{100,200,999},gre1}
2. Указание типа интерфейса (Ethernet) для физических адаптеров enp7s1 и enp7s2:
bash
$echo 'TYPE=eth' | tee /etc/net/ifaces/enp7s{1,2}/options
3. Назначение внешнего IP-адреса на enp7s1 (сеть к ISP):
bash
$echo '172.16.1.2/28' > /etc/net/ifaces/enp7s1/ipv4address
4. Настройка шлюза по умолчанию через ISP:
bash
$echo 'default via 172.16.1.1' > /etc/net/ifaces/enp7s1/ipv4route
5. Указание внешнего DNS-сервера (Google DNS):
bash
$echo 'nameserver 8.8.8.8' > /etc/net/ifaces/enp7s1/resolv.conf
6. Генерация файлов настроек для vlan100, vlan200 и vlan999 на интерфейсе enp7s2:
bash
$echo $'100\n200\n999' | xargs -i bash -c 'echo -e "TYPE=vlan\nHOST=enp7s2\nVID={}" > /etc/net/ifaces/vlan{}/options'
7. Проверка конфигурации vlan999 для контроля корректности параметров:
bash
$cat /etc/net/ifaces/vlan999/options
8. Назначение IP-адреса для VLAN 100 (сеть серверов):
bash
$echo '192.168.100.1/27' > /etc/net/ifaces/vlan100/ipv4address
9. Назначение IP-адреса для VLAN 200 (сеть клиентов):
bash
$echo '192.168.200.1/24' > /etc/net/ifaces/vlan200/ipv4address
10. Назначение IP-адреса для VLAN 999 (сеть управления):
bash
$echo '192.168.99.1/29' > /etc/net/ifaces/vlan999/ipv4address
11. Открытие sysctl.conf для редактирования (включение IP forwarding):
bash
$vim /etc/net/sysctl.conf
12. Перезапуск сетевой службы для применения новой схемы:
bash
$systemctl restart network
13. Проверка краткого статуса всех физических и vlan-интерфейсов:
bash
$ip -c --br a
HQ-SRV
1. Указание типа интерфейса (Ethernet) для enp7s1:
bash
$echo 'TYPE=eth' > /etc/net/ifaces/enp7s1/options
2. Назначение IP-адреса на интерфейс enp7s1:
bash
$echo '192.168.100.2/27' > /etc/net/ifaces/enp7s1/ipv4address
3. Настройка шлюза по умолчанию через HQ-RTR:
bash
$echo 'default via 192.168.100.1' > /etc/net/ifaces/enp7s1/ipv4route
4. Указание внешнего DNS-сервера (Google DNS) для выхода в интернет:
bash
$echo 'nameserver 8.8.8.8' > /etc/net/ifaces/enp7s1/resolv.conf
5. Перезапуск сетевой службы:
bash
$systemctl restart network
6. Проверка краткого статуса сетевых адаптеров:
bash
$ip -c --br a
Данные команды выполняются только на маршрутизаторе ISP
1. Открываем редактор vim для редактирования системных параметров:
bash
$vim /etc/net/sysctl.conf
2. Включение IP forwarding в vim:

Найдите строку net.ipv4.ip_forward.

По умолчанию там стоит значение 0. Измените его на 1.

Для начала редактирования нажмите клавишу i (режим Insert). Убедитесь, что активна английская раскладка клавиатуры.

3. Сохранение изменений и выход из редактора vim:

Нажмите клавишу Esc, введите команду ниже и нажмите Enter:

bash
$:wq
4. Перезапуск сетевой службы для применения настроек forwarding:
bash
$systemctl restart network
5. Обновление пакетной базы и установка nftables и текстового редактора nano:
bash
$apt-get update && apt-get install nftables nano -y
6. Открытие файла конфигурации nftables для редактирования:
bash
$nano /etc/nftables/nftables.nft
7. Наполнение файла правилами NAT (Masquerade):

Удалите всё содержимое файла и вставьте следующие строки:

bash
$#!/usr/sbin/nft -f flush ruleset table ip nat { chain postrouting { type nat hook postrouting priority srcnat; oifname "enp7s1" masquerade } }

После вставки сохраните файл: нажмите Ctrl + X, затем Y и подтвердите клавишей Enter.

8. Добавление nftables в автозагрузку и немедленный запуск службы:
bash
$systemctl enable --now nftables
9. Запуск службы nftables:
bash
$systemctl start nftables
10. Очистка текущих правил фаервола:
bash
$nft flush ruleset
11. Применение созданных правил NAT из конфигурационного файла:
bash
$nft -f /etc/nftables/nftables.nft
12. Просмотр активного набора правил nftables (вывод должен соответствовать содержимому файла):
bash
$nft list ruleset
13. Проверка успешного включения форвардинга пакетов:
bash
$sysctl net.ipv4.ip_forward
14. Проверка доступности внешних ресурсов интернета:
bash
$ping -c4 ya.ru

Для обеспечения безопасности и администрирования необходимо создать локальные учетные записи пользователей на узлах лабораторной работы, настроить для них пароли и права выполнения команд суперпользователя через sudo.

HQ-SRV
1. Создание пользователя sshuser с UID 2026:
bash
$useradd -u 2026 sshuser
2. Установка пароля P@ssw0rd для созданного пользователя:
bash
$echo "sshuser:P@ssw0rd" | chpasswd
3. Добавление пользователя sshuser в привилегированную группу wheel:
bash
$usermod -aG wheel sshuser
4. Разрешение пользователям группы wheel использовать sudo без ввода пароля:
bash
$echo "WHEEL_USERS ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/sshuser
5. Вход в интерактивную сессию под именем sshuser:
bash
$su -l sshuser
6. Проверка возможности повышения прав через sudo (должен вернуться root):
bash
$sudo id
7. Выход из сессии пользователя sshuser назад в сессию root:
bash
$exit
BR-SRV
1. Создание пользователя sshuser с UID 2026:
bash
$useradd -u 2026 sshuser
2. Установка пароля P@ssw0rd для созданного пользователя:
bash
$echo "sshuser:P@ssw0rd" | chpasswd
3. Добавление пользователя sshuser в привилегированную группу wheel:
bash
$usermod -aG wheel sshuser
4. Разрешение пользователям группы wheel использовать sudo без ввода пароля:
bash
$echo "WHEEL_USERS ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/sshuser
5. Вход в интерактивную сессию под именем sshuser:
bash
$su -l sshuser
6. Проверка возможности повышения прав через sudo (должен вернуться root):
bash
$sudo id
7. Выход из сессии пользователя sshuser назад в сессию root:
bash
$exit
HQ-RTR
1. Создание пользователя net_admin для управления сетью:
bash
$useradd net_admin
2. Установка пароля P@ssw0rd для созданного пользователя:
bash
$echo "net_admin:P@ssw0rd" | chpasswd
3. Добавление пользователя net_admin в привилегированную группу wheel:
bash
$usermod -aG wheel net_admin
4. Обновление репозиториев и установка утилиты sudo:
bash
$apt-get update && apt-get install sudo -y
5. Разрешение пользователям группы wheel использовать sudo без ввода пароля:
bash
$echo "WHEEL_USERS ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/net_admin
6. Вход в интерактивную сессию под именем net_admin:
bash
$su -l net_admin
7. Проверка прав суперпользователя через sudo:
bash
$sudo id
8. Выход из сессии пользователя net_admin назад в сессию root:
bash
$exit
BR-RTR
1. Создание пользователя net_admin для управления сетью:
bash
$useradd net_admin
2. Установка пароля P@ssw0rd для созданного пользователя:
bash
$echo "net_admin:P@ssw0rd" | chpasswd
3. Добавление пользователя net_admin в привилегированную группу wheel:
bash
$usermod -aG wheel net_admin
4. Обновление репозиториев и установка утилиты sudo (с подтверждением):
bash
$apt-get update && apt-get install sudo
5. Разрешение пользователям группы wheel использовать sudo без ввода пароля:
bash
$echo "WHEEL_USERS ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/net_admin
6. Вход в интерактивную сессию под именем net_admin:
bash
$su -l net_admin
7. Проверка прав суперпользователя через sudo:
bash
$sudo id

Для настройки сетевой коммутации в сегменте штаб-квартиры (HQ) необходимо выдать соответствующие VLAN Tag виртуальным хостам в панели управления гипервизором Proxmox VE. Это обеспечит логическую изоляцию сетевых сегментов.

Шаг 1. Настройка VLAN Tag для HQ-SRV (VLAN 100)

1. В веб-интерфейсе Proxmox VE выберите виртуальную машину HQ-SRV в левом меню.

2. Перейдите во вкладку Hardware (Оборудование).

3. Выберите сетевой адаптер Network Device (net0) и дважды кликните по нему для редактирования:

Выбор сетевого устройства в Proxmox

4. В открывшемся окне параметров найдите поле VLAN Tag и укажите значение 100.

5. Нажмите кнопку OK для применения настроек.

Настройка VLAN Tag в Proxmox
Шаг 2. Настройка VLAN Tag для HQ-CLI (VLAN 200)

1. Перейдите к виртуальной машине HQ-CLI в панели Proxmox VE.

2. Перейдите во вкладку Hardware → выберите Network Device (net0).

3. Выполните аналогичные шаги редактирования сетевых настроек, но укажите значение VLAN Tag равным 200.

4. Нажмите кнопку OK для завершения.

Для обеспечения безопасного удаленного управления серверами необходимо настроить службу SSH-доступа (sshd) на нестандартный порт, ограничить список разрешенных пользователей, установить лимит попыток аутентификации и настроить баннер предупреждения при подключении.

HQ-SRV
1. Открытие конфигурационного файла SSH-сервера в редакторе vim:
bash
$vim /etc/openssh/sshd_config
2. Редактирование конфигурации в vim:

Впишите в самое начало файла следующие строки:

Port 2026
AllowUsers sshuser
MaxAuthTries 2
Banner /etc/openssh/ssh_banner

Для начала редактирования нажмите клавишу i (режим Insert). Убедитесь, что активна английская раскладка клавиатуры.

3. Сохранение изменений и выход из редактора vim:

Нажмите клавишу Esc, введите команду ниже и нажмите Enter:

bash
$:wq
4. Создание файла приветственного баннера безопасности:
bash
$echo "Authorized access only" | tee /etc/openssh/ssh_banner
5. Перезапуск службы sshd для применения новых настроек:
bash
$systemctl restart sshd
6. Проверка соединения (выполняется с маршрутизатора HQ-RTR):

Попробуйте подключиться к HQ-SRV по настроенному порту под созданным пользователем:

bash
$ssh -p 2026 sshuser@192.168.100.2

После проверки авторизации выйдите из удаленной сессии:

bash
$exit
BR-SRV
1. Открытие конфигурационного файла SSH-сервера в редакторе vim:
bash
$vim /etc/openssh/sshd_config
2. Редактирование конфигурации в vim:

Впишите в самое начало файла следующие строки:

Port 2026
AllowUsers sshuser
MaxAuthTries 2
Banner /etc/openssh/ssh_banner

Для начала редактирования нажмите клавишу i (режим Insert). Убедитесь, что активна английская раскладка клавиатуры.

3. Сохранение изменений и выход из редактора vim:

Нажмите клавишу Esc, введите команду ниже и нажмите Enter:

bash
$:wq
4. Создание файла приветственного баннера безопасности:
bash
$echo "Authorized access only" | tee /etc/openssh/ssh_banner
5. Перезапуск службы sshd для применения новых настроек:
bash
$systemctl restart sshd
6. Проверка соединения (выполняется с маршрутизатора BR-RTR):

Попробуйте подключиться к BR-SRV по настроенному порту под созданным пользователем:

bash
$ssh -p 2026 sshuser@192.168.0.2

После проверки авторизации выйдите из удаленной сессии:

bash
$exit

Для объединения локальных сетей штаб-квартиры (HQ) и филиала (BR) на маршрутизаторах настраивается туннель GRE (Generic Routing Encapsulation). Это создаст виртуальный интерфейс gre1, поверх которого будет происходить передача трафика между площадками.

BR-RTR
1. Открытие конфигурационного файла туннеля в редакторе vim:
bash
$vim /etc/net/ifaces/gre1/options
2. Редактирование конфигурации в vim:

Впишите в файл следующие строки:

TYPE=iptun
TUNTYPE=gre
TUNLOCAL=172.16.2.2
TUNREMOTE=172.16.1.2
TUNTTL=64
TUNOPTIONS='ttl 64'

Для начала редактирования нажмите клавишу i (режим Insert). Убедитесь, что активна английская раскладка клавиатуры.

3. Сохранение изменений и выход из редактора vim:

Нажмите клавишу Esc, введите команду ниже и нажмите Enter:

bash
$:wq
4. Назначение IP-адреса на интерфейс gre1:
bash
$echo "10.10.10.2/30" > /etc/net/ifaces/gre1/ipv4address
5. Перезапуск сетевой службы для применения настроек:
bash
$systemctl restart network
6. Проверка состояния сетевых интерфейсов:
bash
$ip -br -c a
HQ-RTR
1. Открытие конфигурационного файла туннеля в редакторе vim:
bash
$vim /etc/net/ifaces/gre1/options
2. Редактирование конфигурации в vim:

Впишите в файл следующие строки:

TYPE=iptun
TUNTYPE=gre
TUNLOCAL=172.16.1.2
TUNREMOTE=172.16.2.2
TUNTTL=64
TUNOPTIONS='ttl 64'

Для начала редактирования нажмите клавишу i (режим Insert). Убедитесь, что активна английская раскладка клавиатуры.

3. Сохранение изменений и выход из редактора vim:

Нажмите клавишу Esc, введите команду ниже и нажмите Enter:

bash
$:wq
4. Назначение IP-адреса на интерфейс gre1:
bash
$echo "10.10.10.1/30" > /etc/net/ifaces/gre1/ipv4address
5. Перезапуск сетевой службы для применения настроек:
bash
$systemctl restart network
6. Проверка состояния сетевых интерфейсов:
bash
$ip -br -c a
7. Проверка доступности противоположной стороны туннеля (ping на адрес BR-RTR):

Отправьте ICMP-запросы для верификации работоспособности канала:

bash
$ping 10.10.10.2 -c 3

Для автоматического обмена маршрутной информацией между сетями офисов настраивается динамическая маршрутизация. В качестве протокола используется OSPF (Open Shortest Path First) на базе пакета FRRouting (FRR).

HQ-RTR
1. Обновление пакетной базы и установка службы FRRouting:
bash
$apt-get update && apt-get install frr -y
2. Включение службы ospfd в файле демонов FRR и проверка корректности:
bash
$sed -i 's/ospfd=no/ospfd=yes/' /etc/frr/daemons ; grep ospf /etc/frr/daemons
3. Открытие основного конфигурационного файла FRR в редакторе vim:
bash
$vim /etc/frr/frr.conf
4. Редактирование конфигурации в vim:

Впишите в файл следующие строки для настройки OSPF:

interface gre
 no ip ospf passive
exit
!
interface gre1
 ip ospf area 0
 ip ospf authentication
 ip ospf authentication-key P@ssw0rd
 no ip ospf passive
exit
!
interface vlan100
 ip ospf area 0
exit
!
interface vlan200
 ip ospf area 0
exit
!
interface vlan999
 ip ospf area 0
exit
!
router ospf
 passive-interface default
exit

Для начала редактирования нажмите клавишу i (режим Insert). Убедитесь, что активна английская раскладка клавиатуры.

5. Сохранение изменений и выход из редактора vim:

Нажмите клавишу Esc, введите команду ниже и нажмите Enter:

bash
$:wq
6. Добавление службы frr в автозагрузку и ее запуск:
bash
$systemctl enable --now frr
7. Перезапуск сетевой службы:
bash
$systemctl restart network
BR-RTR
1. Обновление пакетной базы и установка службы FRRouting:
bash
$apt-get update && apt-get install frr -y
2. Включение службы ospfd в файле демонов FRR и проверка корректности:
bash
$sed -i 's/ospfd=no/ospfd=yes/' /etc/frr/daemons ; grep ospf /etc/frr/daemons
3. Открытие основного конфигурационного файла FRR в редакторе vim:
bash
$vim /etc/frr/frr.conf
4. Редактирование конфигурации в vim:

Впишите в файл следующие строки для настройки OSPF:

interface gre
 no ip ospf passive
exit
!
interface gre1
 ip ospf area 0
 ip ospf authentication
 ip ospf authentication-key P@ssw0rd
 no ip ospf passive
exit
!
interface enp7s2
 ip ospf area 0
exit
!
router ospf
 passive-interface default
exit

Для начала редактирования нажмите клавишу i (режим Insert). Убедитесь, что активна английская раскладка клавиатуры.

5. Сохранение изменений и выход из редактора vim:

Нажмите клавишу Esc, введите команду ниже и нажмите Enter:

bash
$:wq
6. Добавление службы frr в автозагрузку и ее запуск:
bash
$systemctl enable --now frr
7. Перезапуск сетевой службы:
bash
$systemctl restart network

Для обеспечения доступа клиентов локальной сети к глобальной сети Интернет на пограничных маршрутизаторах настраивается динамическая трансляция сетевых адресов (NAT/Masquerade) с использованием службы nftables.

HQ-RTR
1. Обновление пакетной базы и установка nftables и редактора nano:
bash
$apt-get install nftables nano -y
2. Открытие конфигурационного файла nftables в редакторе nano:
bash
$nano /etc/nftables/nftables.nft
3. Наполнение файла правилами NAT (Masquerade):

Удалите всё содержимое файла и вставьте следующие строки:

bash
$#!/usr/sbin/nft -f flush ruleset table ip nat { chain postrouting { type nat hook postrouting priority srcnat; oifname "enp7s1" masquerade } }

После вставки сохраните файл: нажмите Ctrl + X, затем Y и подтвердите клавишей Enter.

4. Добавление nftables в автозагрузку и запуск службы:
bash
$systemctl enable --now nftables
5. Перезапуск службы nftables для применения новых правил:
bash
$systemctl restart nftables.service
BR-RTR
1. Обновление пакетной базы и установка nftables и редактора nano:
bash
$apt-get install nftables nano -y
2. Открытие конфигурационного файла nftables в редакторе nano:
bash
$nano /etc/nftables/nftables.nft
3. Наполнение файла правилами NAT (Masquerade):

Удалите всё содержимое файла и вставьте следующие строки:

bash
$#!/usr/sbin/nft -f flush ruleset table ip nat { chain postrouting { type nat hook postrouting priority srcnat; oifname "enp7s1" masquerade } }

После вставки сохраните файл: нажмите Ctrl + X, затем Y и подтвердите клавишей Enter.

4. Добавление nftables в автозагрузку и запуск службы:
bash
$systemctl enable --now nftables
5. Перезапуск службы nftables для применения новых правил:
bash
$systemctl restart nftables.service

Для автоматической выдачи IP-адресов и параметров сети клиенту HQ-CLI на маршрутизаторе HQ-RTR настраивается DHCP-сервер с использованием легковесной службы dnsmasq. Также производится перенос конфигурации DNS на интерфейс VLAN 100.

HQ-RTR
Шаг 1. Перенос настроек DNS
1. Установка пакета dnsmasq:
bash
$apt-get install dnsmasq -y
2. Удаление старого конфигурационного файла resolv.conf с внешнего интерфейса enp7s1:
bash
$rm -f /etc/net/ifaces/enp7s1/resolv.conf
3. Создание конфигурации DNS-резолвера для интерфейса vlan100:
bash
$echo $'search au-team.irpo\nnameserver 192.168.100.2' > /etc/net/ifaces/vlan100/resolv.conf
Шаг 2. Настройка DHCP-сервера
4. Отключение встроенного локального резолвера dnsmasq для исключения конфликтов:
bash
$sed -i 's/AUTO_LOCAL_RESOLVER=yes/AUTO_LOCAL_RESOLVER=no/' /etc/sysconfig/dnsmasq ; grep AUTO_LOCAL_RESOLVER /etc/sysconfig/dnsmasq
5. Открытие конфигурационного файла dnsmasq в редакторе nano:
bash
$nano /etc/dnsmasq.conf
6. Наполнение файла конфигурации dnsmasq:

В начало файла добавьте следующие строки:

bash
$port=0 interface=vlan200 listen-address=192.168.200.1 dhcp-authoritative dhcp-range=interface:vlan200,192.168.200.2,192.168.200.2,255.255.255.240,6h dhcp-option=3,192.168.200.1 dhcp-option=6,192.168.100.2 leasefile-ro

После вставки сохраните файл: нажмите Ctrl + X, затем Y и подтвердите клавишей Enter.

7. Добавление dnsmasq в автозагрузку, его запуск и проверка порта 67 (DHCP):
bash
$systemctl enable --now dnsmasq ; ss -lun | grep 67
8. Перезапуск сетевой службы для применения настроек резолверов:
bash
$systemctl restart network
9. Проверка итогового файла resolv.conf:
bash
$cat /etc/resolv.conf

Для настройки локального DNS-сервера в зоне au-team.irpo и обратной зоны 168.192.in-addr.arpa на сервере HQ-SRV устанавливается и настраивается служба DNS-сервера bind (named).

HQ-SRV
1. Обновление пакетной базы и установка службы bind, утилит bind-utils и текстового редактора nano:
bash
$apt-get update && apt-get install bind bind-utils nano -y
2. Перенаправление резолвера сетевого интерфейса enp7s1 на локальный адрес 127.0.0.1:
bash
$echo $'search au-team.irpo\nnameserver 127.0.0.1' > /etc/net/ifaces/enp7s1/resolv.conf
3. Генерация ключа rndc для управления DNS-сервером:
bash
$rndc-confgen -a -c /etc/bind/rndc.key
4. Открытие файла глобальной конфигурации bind в редакторе nano:
bash
$nano /etc/bind/options.conf
5. Редактирование options.conf (Замените всё содержимое файла следующим текстом):
bash
$options { listen-on { 127.0.0.1; 192.168.100.2; }; forwarders { 77.88.8.7; 77.88.8.3; }; recursion yes; allow-recursion { any; }; allow-query { any; }; dnssec-validation no; directory "/etc/bind/zone"; dump-file "/var/run/named/named_dump.db"; statistics-file "/var/run/named/named.stats"; pid-file "/var/run/named/named.pid"; }; logging { category default { default_syslog; }; }; zone "au-team.irpo" { type master; file "au-team.irpo"; }; zone "168.192.in-addr.arpa" { type master; file "168.192.in-addr.arpa"; };

После вставки сохраните файл: нажмите Ctrl + X, затем Y и подтвердите клавишей Enter.

6. Копирование шаблона зоны обратного просмотра в качестве основы для зоны au-team.irpo:
bash
$cp -r /etc/bind/zone/127.in-addr.arpa /etc/bind/zone/au-team.irpo
7. Открытие конфигурационного файла зоны au-team.irpo в редакторе nano:
bash
$nano /etc/bind/zone/au-team.irpo
8. Редактирование файла зоны au-team.irpo (Замените всё содержимое файла следующим текстом):
bash
$$TTL 1D @ IN SOA au-team.irpo. root.au-team.irpo. ( 2025020600 12H 1H 1W 1H ) @ IN NS hq-srv.au-team.irpo. hq-rtr IN A 192.168.100.1 hq-srv IN A 192.168.100.2 hq-cli IN A 192.168.200.2 br-rtr IN A 192.168.0.1 br-srv IN A 192.168.0.2 docker IN A 172.16.1.1 web IN A 172.16.2.1

После вставки сохраните файл: нажмите Ctrl + X, затем Y и подтвердите клавишей Enter.

9. Копирование шаблона зоны обратного просмотра в качестве основы для обратной зоны 168.192.in-addr.arpa:
bash
$cp -r /etc/bind/zone/127.in-addr.arpa /etc/bind/zone/168.192.in-addr.arpa
10. Открытие файла обратной зоны в редакторе nano:
bash
$nano /etc/bind/zone/168.192.in-addr.arpa
11. Редактирование файла обратной зоны (Замените всё содержимое файла следующим текстом):
bash
$$TTL 1D @ IN SOA au-team.irpo. root.au-team.irpo. ( 2025020600 12H 1H 1W 1H ) @ IN NS au-team.irpo. 1.100 IN PTR hq-rtr.au-team.irpo. 2.100 IN PTR hq-srv.au-team.irpo. 2.200 IN PTR hq-cli.au-team.irpo.

После вставки сохраните файл: нажмите Ctrl + X, затем Y и подтвердите клавишей Enter.

12. Установка группы-владельца named для созданных файлов зон:
bash
$chown :named /etc/bind/zone/au-team.irpo /etc/bind/zone/168.192.in-addr.arpa
13. Добавление службы bind в автозагрузку и ее запуск:
bash
$systemctl enable --now bind
14. Перезапуск сетевой службы для применения нового резолвера:
bash
$service network restart
15. Перезапуск службы bind для применения файлов зон:
bash
$systemctl restart bind.service
16. Проверка корректности разрешения имен:

Проверка прямого разрешения (получение IP по доменному имени):

bash
$host br-rtr

Проверка обратного разрешения (получение имени по IP-адресу):

bash
$host -t PTR 192.168.100.2
Данные команды выполняются на всех хостах

Для обеспечения синхронизации логов и корректной работы планировщиков задач необходимо настроить единый часовой пояс Asia/Novosibirsk на всех виртуальных машинах лабораторного стенда.

Настройка часового пояса
1. Обновление пакетной базы и установка пакета tzdata для работы с часовыми поясами:
bash
$apt-get update && apt-get install tzdata -y
2. Установка часового пояса Asia/Novosibirsk:
bash
$timedatectl set-timezone Asia/Novosibirsk
3. Проверка текущих настроек системного времени и часового пояса:
bash
$timedatectl

В этом модуле рассматривается настройка контроллера домена Active Directory на базе Samba DC, управление DNS-записями домена, создание пользователей и групп, а также интеграция смежных сетевых сервисов.

Для централизованного управления пользователями и компьютерами на сервере BR-SRV развертывается Samba в роли контроллера домена Active Directory, регистрируются DNS-записи для ключевых хостов и создается тестовая структура пользователей и групп.

BR-SRV
Шаг 1. Подготовка и развертывание Samba DC
1. Добавление IP-адреса DNS-сервера в конфигурацию резолвера сетевого интерфейса enp7s1:
bash
$echo "nameserver 192.168.1.10" >> /etc/net/ifaces/enp7s1/resolv.conf
2. Перезапуск сетевой службы для применения новой конфигурации:
bash
$systemctl restart network
3. Проверка текущих настроек DNS-клиента:
bash
$cat /etc/resolv.conf
4. Проверка доступности внешней сети (двумя ICMP-запросами):
bash
$ping ya.ru -c 2
5. Установка пакета Samba для развертывания контроллера домена:
bash
$apt-get update && apt-get install task-samba-dc -y
6. Удаление предустановленной стандартной конфигурации Samba:
bash
$rm -f /etc/samba/smb.conf
7. Очистка кэша и старых баз данных Samba перед развертыванием:
bash
$rm -rf {/var/lib/samba, /var/cache/samba}
8. Создание каталога системного общего ресурса sysvol:
bash
$mkdir -p /var/lib/samba/sysvol
9. Интерактивный запуск мастера развертывания домена:
bash
$samba-tool domain provision

• Везде соглашаемся со значениями по умолчанию (нажимаем Enter).

• Пароль Администратора задаем: P@ssw0rd

10. Резервное переименование старой конфигурации Kerberos:
bash
$mv /etc/krb5.conf /etc/krb5.conf.back
11. Копирование сгенерированного файла конфигурации Kerberos из Samba:
bash
$cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
12. Добавление службы samba (AD DC) в автозагрузку и ее немедленный запуск:
bash
$systemctl enable --now samba
13. Проверка текущего статуса запущенной службы Samba:
bash
$systemctl status samba
14. Проверка общей информации о развернутом домене на локальном интерфейсе:
bash
$samba-tool domain info 127.0.0.1
Шаг 2. Настройка записей DNS
Добавление А-записей для инфраструктурных узлов в DNS Samba:
15. Запись для HQ-SRV (при запросе введите пароль: P@ssw0rd):
bash
$samba-tool dns add br-srv.au-team.irpo au-team.irpo hq-srv A 192.168.1.10 -U Administrator
16. Запись для HQ-RTR (при запросе введите пароль: P@ssw0rd):
bash
$samba-tool dns add br-srv.au-team.irpo au-team.irpo hq-rtr A 192.168.1.1 -U Administrator
17. Запись для BR-RTR (при запросе введите пароль: P@ssw0rd):
bash
$samba-tool dns add br-srv.au-team.irpo au-team.irpo br-rtr A 192.168.3.1 -U Administrator
18. Запись для web.au-team.irpo (при запросе введите пароль: P@ssw0rd):
bash
$samba-tool dns add br-srv.au-team.irpo au-team.irpo web.au-team.irpo A 172.16.1.1 -U Administrator
19. Запись для docker.au-team.irpo (при запросе введите пароль: P@ssw0rd):
bash
$samba-tool dns add br-srv.au-team.irpo au-team.irpo docker.au-team.irpo A 172.16.2.1 -U Administrator
20. Просмотр всех добавленных DNS-записей зоны для проверки (введите пароль: P@ssw0rd):
bash
$samba-tool dns query br-srv.au-team.irpo au-team.irpo @ ALL -U administrator
21. Перенаправление DNS-клиента enp7s1 на локальную петлю 127.0.0.1:
bash
$sed -i 's/nameserver 192.168.1.10/nameserver 127.0.0.1/' /etc/net/ifaces/enp7s1/resolv.conf
22. Перезапуск сетевой службы для применения изменений:
bash
$systemctl restart network
23. Проверка корректности обновленного файла resolv.conf:
bash
$cat /etc/resolv.conf
24. Инициализация билета Kerberos для Администратора домена (введите пароль: P@ssw0rd):
bash
$kinit administrator@AU-TEAM.IRPO
Шаг 3. Создание групп и пользователей домена
Пакетное создание пользователей:
25. Добавление новой группы безопасности hq:
bash
$samba-tool group add hq
26. Создание пяти пользователей hquser1–hquser5 с паролем P@ssw0rd:
bash
$for i in {1..5}; do samba-tool user add hquser$i P@ssw0rd; done
27. Добавление созданных пользователей в группу hq:
bash
$for i in {1..5}; do samba-tool group addmembers hq hquser$i; done
28. Просмотр списка участников группы hq для проверки добавления:
bash
$samba-tool group listmembers hq
HQ-RTR
1. Замена IP-адреса DNS-сервера в файле конфигурации dnsmasq на новый адрес контроллера домена Samba и перезапуск dnsmasq:
bash
$sed -i 's/192.168.1.10/192.168.3.10/' /etc/dnsmasq.conf; systemctl restart dnsmasq
2. Проверка обновленного конфигурационного файла dnsmasq:
bash
$cat /etc/dnsmasq.conf
HQ-CLI
Шаг 1. Ввод в домен Active Directory (Графическая оболочка)
Работаем в графической оболочке HQ-CLI (под пользователем user)
Графическая оболочка HQ-CLI

1. Перезагрузите сеть на HQ-CLI, проверьте DNS-сервер и убедитесь, что машина готова к вводу в домен:

Перезагрузка сети и проверка DNS
Проверка резолвера DNS
Готовность к вводу в домен

2. Откройте терминал и выполните команду для запуска Центра управления (alterator):

bash
$acc

При запросе пароля введите: toor

Запуск alterator-center
Ввод пароля администратора

3. Перейдите во вкладку Пользователи (Аутентификация). Поставьте галочку Домен Active Directory, нажмите кнопку Применить и введите пароль домена: P@ssw0rd.

Если настройка выполнена верно, отобразится всплывающее окно: Добро пожаловать в домен AU-TEAM.IRPO.

Выбор типа аутентификации
Включение Active Directory
Авторизация администратора домена
Процесс добавления в домен
Успешный ввод в домен

4. Перезагрузите систему через главное меню: Меню → Выйти → Перезагрузить:

Перезагрузка ОС
Подтверждение перезагрузки

5. На экране входа в систему авторизуйтесь под созданным доменным пользователем:

  • Пользователь: hquser1
  • Пароль: P@ssw0rd
Шаг 2. Настройка ролей и sudo (Консольная оболочка root)
Работаем в консольной оболочке HQ-CLI (под пользователем root)
1. Проверка активности переключателя libnss-role (должна выдать enabled):
bash
$control libnss-role
2. Связывание доменной группы hq с системной ролью wheel:
bash
$roleadd hq wheel
3. Предоставление роли wheel прав на выполнение определенных команд (cat, grep, id) без пароля через sudo:
bash
$echo "WHEEL_USERS ALL=(ALL:ALL) /bin/cat, /bin/grep, /usr/bin/id" >> /etc/sudoers
4. Просмотр последних строк конфигурации sudoers для контроля изменений:
bash
$tail /etc/sudoers
Шаг 3. Проверка авторизации и команд sudo (Графическая оболочка)
Работаем в графической оболочке HQ-CLI (под пользователем user)

1. Снова перезагрузите машину: Меню → Выйти → Перезагрузить.

2. Логинимся под доменным пользователем:

  • Пользователь: hquser1
  • Пароль: P@ssw0rd

3. Откройте терминал на рабочем столе и выполните проверочные команды:

Проверка id (при запросе вводим пароль пользователя):
bash
$sudo id
Проверка чтения файла resolv.conf (при запросе вводим пароль пользователя):
bash
$sudo cat /etc/resolv.conf
Проверка работы утилиты grep (при запросе вводим пароль пользователя):
bash
$sudo grep

Для создания производительного и надежного хранилища данных на сервере HQ-SRV настраивается программный RAID-массив уровня 0 (Striping) из нескольких доступных дисков, форматируется в файловую систему ext4 и монтируется в систему с настройкой автоматического подключения.

HQ-SRV
1. Проверка доступных дисков и разделов в системе:
bash
$lsblk
Ожидаемый вывод (в системе должно присутствовать 3 диска по 1 ГБ):
sdb 8:16 0 1G 0 disk
sdc 8:32 0 1G 0 disk
sdd 8:48 0 1G 0 disk
2. Интерактивная разметка дисков в утилите parted:
bash
$parted /dev/sdb

После входа в интерактивный режим parted выполните следующие команды поочередно для разметки sdb и sdc:

mklabel msdos
mkpart primary 1MiB 100%
set 1 raid on
print
select /dev/sdc
mklabel msdos
mkpart primary 1MiB 100%
set 1 raid on
print
quit
3. Создание программного RAID-0 массива (md0) из двух размеченных разделов:
bash
$mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1
4. Сохранение конфигурации RAID-массива в конфигурационный файл для автосборки при загрузке:
bash
$mdadm --detail --scan >> /etc/mdadm.conf
5. Проверка текущей конфигурации RAID-массива в системе:
bash
$mdadm --detail --scan
6. Форматирование созданного RAID-массива в файловую систему ext4:
bash
$mkfs.ext4 /dev/md0
7. Создание точки монтирования для RAID-массива:
bash
$mkdir /raid
8. Создание резервной копии конфигурационного файла fstab:
bash
$cp /etc/fstab /etc/fstab.back
9. Добавление записи монтирования RAID-массива в автозагрузку (/etc/fstab):
bash
$echo "/dev/md0 /raid ext4 defaults 0 0 " >> /etc/fstab
10. Монтирование всех файловых систем, описанных в fstab:
bash
$mount -av
11. Проверка типов и статуса смонтированных разделов:
bash
$df -T

Для организации сетевого файлового хранилища настраивается служба NFS (Network File System). Общий каталог на сервере HQ-SRV предоставляется в пользование клиенту HQ-CLI с настройкой автоматического монтирования при загрузке.

HQ-SRV
1. Установка пакетов NFS-сервера и вспомогательных утилит:
bash
$apt-get update && apt-get install nfs-server nfs-utils -y
2. Создание сетевой папки на RAID-массиве:
bash
$mkdir /raid/nfs
3. Установка полных прав доступа на созданную папку:
bash
$chmod 777 /raid/nfs
4. Резервное копирование конфигурационного файла экспорта NFS:
bash
$cp /etc/exports /etc/exports.back
5. Разрешение доступа к папке для подсети клиентов с правами записи:
bash
$echo "/raid/nfs 192.168.2.0/27(rw,no_subtree_check,no_root_squash)" >> /etc/exports
6. Добавление службы nfs-server в автозагрузку и ее запуск:
bash
$systemctl enable --now nfs-server
HQ-CLI
Работаем в консольной оболочке HQ-CLI (под пользователем root)
1. Создание точки монтирования для сетевого хранилища:
bash
$mkdir /mnt/nfs
2. Установка полных прав доступа на точку монтирования:
bash
$chmod -R 777 /mnt/nfs
3. Проверка доступных для монтирования NFS-ресурсов на сервере HQ-SRV:
bash
$showmount -e hq-srv
4. Резервное копирование файла конфигурации fstab:
bash
$cp /etc/fstab /etc/fstab.back
5. Настройка автоматического монтирования сетевой папки при загрузке системы (/etc/fstab):
bash
$echo "192.168.1.10:/raid/nfs /mnt/nfs nfs rw,soft,_netdev 0 0 " >> /etc/fstab
6. Монтирование файловых систем для проверки внесенной конфигурации:
bash
$mount -av
7. Проверка успешности монтирования и параметров сетевого диска:
bash
$df -T
Верификация совместного доступа
Шаг 1. Действия на клиенте HQ-CLI:

Создайте тестовый файл на примонтированном сетевом диске и проверьте права:

bash
$touch /mnt/nfs/test_file
bash
$ls -l /mnt/nfs/test_file
Шаг 2. Действия на сервере HQ-SRV:

Убедитесь, что созданный клиентом файл отображается на локальном RAID-массиве сервера:

bash
$ls -l /raid/nfs

Для обеспечения точной синхронизации времени в локальной сети настраивается служба NTP-клиентов и серверов на базе chrony. Пограничный маршрутизатор ISP настраивается в качестве локального источника точного времени (Stratum 5), а остальные хосты синхронизируются с ним.

ISP
1. Разрешение работы chrony в качестве NTP-сервера в системе:
bash
$control chrony server
2. Корректировка параметров пулов времени в файле /etc/chrony.conf:
bash
$sed -i 's/pool pool.ntp.org iburst/pool pool.ntp.org iburst prefer minstratum 4/' /etc/chrony.conf | grep pool /etc/chrony.conf
3. Активация локального stratum 5 для работы без внешнего интернета:
bash
$sed -i 's/\#local stratum 10/local stratum 5/' /etc/chrony.conf | grep "local stratum" /etc/chrony.conf
4. Перезапуск службы chronyd для применения настроек:
bash
$systemctl restart chronyd
Клиенты синхронизации (HQ-SRV, BR-RTR, BR-SRV)
1. Перенаправление пула времени на локальный адрес ISP (172.16.1.1) и перезапуск службы chronyd:
bash
$sed -i 's/pool pool.ntp.org iburst/server 172.16.1.1 iburst/' /etc/chrony.conf && systemctl restart chronyd
2. Проверка источников времени (выполняется через 10 секунд после перезапуска):
bash
$chronyc sources
Ожидаемый вывод команды (в качестве активного источника должен определиться ISP):
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 172.16.1.1                    5   6    17     1  +1438ns[  +43us] +/-   38ms
HQ-CLI
1. Добавление локального NTP-сервера ISP в конец файла конфигурации и перезапуск chronyd:
bash
$echo "server 172.16.1.1 iburst" >> /etc/chrony.conf && systemctl restart chronyd
2. Проверка источников синхронизации времени (выполняется через 10 секунд):
bash
$chronyc sources
Ожидаемый вывод:
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^? 192.168.1.1                   0   6    0      -     +0ns[  +0us]  +/-    0ms
^* 172.16.1.1                    5   6    17     1  +1438ns[  +43us] +/-   38ms

Для автоматизации управления конфигурациями и удаленного администрирования узлов на сервере BR-SRV настраивается система управления конфигурациями Ansible. Настраивается файл инвентаря с реквизитами доступа к остальным узлам лабораторного стенда и отключается строгая проверка SSH-ключей.

BR-SRV
1. Установка Ansible и sshpass (для аутентификации по паролю):
bash
$apt-get install ansible sshpass -y
2. Резервное копирование оригинального файла конфигурации Ansible:
bash
$cp -r /etc/ansible/ansible.cfg /etc/ansible/ansible.cfg.back
3. Удаление дефолтного конфигурационного файла для создания чистого:
bash
$rm -rf /etc/ansible/ansible.cfg
4. Открытие нового файла конфигурации Ansible в редакторе vim:
bash
$vim /etc/ansible/ansible.cfg
5. Редактирование конфигурации в vim:

Впишите в самое начало файла следующие строки:

[defaults]
host_key_checking = False
interpreter_python=/usr/bin/python3
inventory       = /etc/ansible/hosts

Для начала редактирования нажмите клавишу i (режим Insert). Убедитесь, что активна английская раскладка клавиатуры.

6. Сохранение изменений и выход из редактора vim:

Нажмите клавишу Esc, введите команду ниже и нажмите Enter:

bash
$:wq
7. Открытие файла инвентаря hosts в редакторе vim:
bash
$vim /etc/ansible/hosts
8. Редактирование конфигурации в vim:

Впишите в самое начало файла следующие строки:

HQ-SRV ansible_user=user ansible_password=resu ansible_port=2026
HQ-RTR ansible_user=net_admin ansible_password=P@ssw0rd ansible_port=2026
BR-RTR ansible_user=net_admin ansible_password=P@ssw0rd ansible_port=2026
HQ-CLI ansible_user=user ansible_password=resu ansible_port=2026

Для начала редактирования нажмите клавишу i (режим Insert). Убедитесь, что активна английская раскладка клавиатуры.

9. Сохранение изменений и выход из редактора vim:

Нажмите клавишу Esc, введите команду ниже и нажмите Enter:

bash
$:wq
10. Проверка доступности и состояния SSH-службы на всех настроенных хостах:

Запустите команду пингования всех хостов из инвентаря через Ansible:

bash
$ansible all -m ping
Ожидаемый ответ от всех хостов (каждый хост должен успешно ответить "pong"):
HQ-SRV | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
HQ-RTR | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
BR-RTR | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
HQ-CLI | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Для развертывания веб-приложения на сервере BR-SRV используется технология контейнеризации Docker. Устанавливается Docker Engine, монтируется дистрибутив с архивами образов, загружаются Docker-образы приложения и базы данных, а затем запускается стек через Docker Compose с обеспечением постоянного хранения данных.

BR-SRV
1. Установка Docker Engine и плагина Docker Compose:
bash
$apt-get install docker-engine docker-compose-v2 -y
2. Добавление службы Docker в автозагрузку и ее запуск:
bash
$systemctl enable --now docker.service
3. Монтирование ISO-образа/диска для доступа к архивам Docker-образов:
bash
$mount -o loop /dev/sr0 /mnt/ -v
4. Просмотр содержимого каталога с Docker-образами:
bash
$ls -l /mnt/docker/
5. Просмотр файла инструкций readme.txt:
bash
$cat /mnt/docker/readme.txt
6. Импорт Docker-образа веб-приложения из архива:
bash
$docker load < /mnt/docker/site_latest.tar
7. Импорт Docker-образа СУБД MariaDB из архива:
bash
$docker load < /mnt/docker/mariadb_latest.tar
8. Просмотр списка импортированных Docker-образов в системе:
bash
$docker image ls
9. Создание конфигурационного файла docker-compose.yml:
bash
$cat << EOF > docker-compose.yml services: database: container_name: db image: mariadb:latest restart: always ports: - "3306:3306" environment: MARIADB_DATABASE: testdb MARIADB_USER: testc MARIADB_PASSWORD: P@ssw0rd MARIADB_ROOT_PASSWORD: P@ssw0rd volumes: - db_data:/var/lib/mysql app: container_name: tespapp image: site:latest restart: always ports: - "8080:8000" environment: DB_HOST: database DB_PORT: 3306 DB_NAME: testdb DB_USER: testc DB_PASS: P@ssw0rd DB_TYPE: maria depends_on: - database volumes: db_data: EOF
10. Проверка конфигурации docker-compose на наличие синтаксических ошибок:
bash
$docker compose config
11. Фоновый запуск сервисов приложения и базы данных:
bash
$docker compose up -d
12. Проверка состояния запущенных контейнеров:
bash
$docker ps
13. Проверка прослушивания порта 8080 сетевой службой:
bash
$ss -ltnp4 | grep 8080
Верификация веб-приложения с клиента HQ-CLI
Работаем в графической оболочке HQ-CLI (под пользователем user)
Шаг 1. Первичный доступ к веб-странице:

Откройте веб-браузер и перейдите по IP-адресу сервера на порт 8080: http://192.168.3.10:8080/

Пометка: По заданию мы должны попадать на сайт через домен docker.au-team.irpo, но мы пока этого сделать не можем, так как у нас не настроен реверс-прокси на ISP (nginx) (выполняется в задании №9).
Первый запуск приложения
Шаг 2. Создание записи в базе данных:

Заполните форму на сайте произвольными текстовыми данными и сохраните запись:

Заполнение формы
Подтверждение сохранения
Созданная запись
Шаг 3. Симуляция сбоя и удаления контейнеров:

На сервере BR-SRV принудительно остановите и удалите все активные контейнеры:

bash
$docker rm -f $(docker ps -qa)

Обновите страницу в браузере на клиенте HQ-CLI и проверьте, что сайт перестал работать:

Сайт недоступен
Шаг 4. Восстановление работы и проверка сохранности данных:

Заново разверните стек Docker Compose на сервере BR-SRV:

bash
$docker compose up -d

Обновите страницу в веб-клиенте. Сайт должен успешно загрузиться, а созданная вами ранее запись должна остаться на месте благодаря примонтированному тому базы данных:

Сайт восстановлен, данные сохранены

Для развертывания веб-приложения на сервере HQ-SRV настраивается классический LAMP-стек (Linux, Apache, MariaDB, PHP). Веб-приложение копируется со смонтированного диска, разворачивается локальная база данных из дампа SQL, настраиваются параметры подключения в конфигурации PHP и запускается веб-сервер Apache.

HQ-SRV
1. Монтирование ISO-образа/диска для доступа к исходным файлам сайта:
bash
$mount -o loop /dev/sr0 /mnt/ -v
2. Установка серверного веб-стека (Apache, MariaDB, PHP):
bash
$apt-get install lamp-server -y
3. Копирование PHP-файла приложения в корневой каталог веб-сервера:
bash
$cp /mnt/web/index.php /var/www/html
4. Копирование логотипа веб-приложения:
bash
$cp /mnt/web/logo.png /var/www/html
5. Включение в автозагрузку и немедленный запуск СУБД MariaDB:
bash
$systemctl enable --now mariadb
6. Создание пустой базы данных webdb для приложения:
bash
$mariadb -e "CREATE DATABASE webdb;"
7. Создание пользователя БД web с паролем P@ssw0rd и предоставление прав:
bash
$mariadb -e " CREATE USER 'web'@'localhost' IDENTIFIED BY 'P@ssw0rd'; GRANT ALL PRIVILEGES ON webdb.* TO 'web'@'localhost'; "
8. Развертывание таблиц и структуры базы данных из дампа SQL:
bash
$mariadb webdb < /mnt/web/dump.sql
9. Проверка успешности импорта и списка таблиц в базе данных:
bash
$mariadb -e "USE webdb; SHOW TABLES;"
10. Открытие файла конфигурации index.php in редакторе vim:
bash
$vim /var/www/html/index.php
11. Редактирование конфигурации подключения к СУБД в vim:

Найдите переменные подключения и впишите следующие параметры:

$servername = "localhost";
$username = "web";
$password = "P@ssw0rd";
$dbname = "webdb";

Для начала редактирования нажмите клавишу i (режим Insert). Убедитесь, что активна английская раскладка клавиатуры.

12. Сохранение изменений и выход из редактора vim:

Нажмите клавишу Esc, введите команду ниже и нажмите Enter:

bash
$:wq
13. Включение в автозагрузку и немедленный запуск веб-сервера Apache (httpd2):
bash
$systemctl enable --now httpd2.service
Верификация веб-сайта с клиента HQ-CLI
Работаем в графической оболочке HQ-CLI (под пользователем user)
Шаг 1. Проверка доступности веб-сервера:

Откройте веб-браузер и введите IP-адрес сервера: http://192.168.1.10/

Пометка: По заданию мы должны попадать на сайт через домен web.au-team.irpo с аутентификацией по паролю, но мы пока этого сделать не можем, так как у нас не настроен реверс-прокси на ISP (nginx) (выполняется в задании №9).
Развернутый веб-сайт

Для обеспечения доступа к внутренним веб-сервисам и службам из внешней сети на маршрутизаторах HQ-RTR и BR-RTR настраивается статическая трансляция портов (DNAT) с помощью межсетевого экрана nftables. Это перенаправит входящие запросы на соответствующие порты внутренних серверов.

HQ-RTR
1. Добавление цепочки prerouting в таблицу nat для обработки входящего DNAT:
bash
$nft add chain nat prerouting { type nat hook prerouting priority dstnat \; }
2. Проброс SSH-порта 2026 на внутренний сервер HQ-SRV:
bash
$nft add rule nat prerouting iif "enp7s1" tcp dport 2026 dnat to 192.168.1.10
3. Проброс веб-порта 8080 на внутренний веб-сервер HQ-SRV (порт 80):
bash
$nft add rule nat prerouting iif "enp7s1" tcp dport 8080 dnat to 192.168.1.10:80
4. Просмотр текущего набора правил nftables для проверки:
bash
$nft list ruleset
5. Сохранение конфигурации nftables в файл для автозапуска при загрузке:
bash
$nft list ruleset > /etc/nftables/nftables.nft
6. Перезапуск службы nftables для проверки корректности сохраненной конфигурации:
bash
$systemctl restart nftables
7. Финальная проверка примененных правил nftables:
bash
$nft list ruleset
BR-RTR
1. Добавление цепочки prerouting в таблицу nat для обработки входящего DNAT:
bash
$nft add chain nat prerouting { type nat hook prerouting priority dstnat \; }
2. Проброс портов 8080 (веб) и 2026 (SSH) на внутренний сервер BR-SRV (192.168.3.10):
bash
$nft add rule nat prerouting iif "enp7s1" tcp dport { 8080, 2026 } dnat to 192.168.3.10
3. Просмотр текущего набора правил nftables для проверки:
bash
$nft list ruleset
4. Сохранение конфигурации nftables в файл для автозапуска при загрузке:
bash
$nft list ruleset > /etc/nftables/nftables.nft
5. Перезапуск службы nftables для проверки корректности сохраненной конфигурации:
bash
$systemctl restart nftables
6. Финальная проверка примененных правил nftables:
bash
$nft list ruleset

Для маршрутизации веб-запросов к внутренним сервисам через доменные имена на пограничном маршрутизаторе ISP настраивается веб-сервер Nginx в режиме обратного прокси-сервера (reverse proxy). Создаются виртуальные хосты для доменов web.au-team.irpo и docker.au-team.irpo, перенаправляющие трафик на соответствующие внутренние порты.

ISP
1. Обновление пакетной базы и установка веб-сервера Nginx:
bash
$apt-get update && apt-get install nginx -y
2. Открытие нового конфигурационного файла виртуального хоста в редакторе vim:
bash
$vim /etc/nginx/sites-available.d/r-proxy.conf
3. Редактирование конфигурации обратного прокси в vim:

Вставьте в файл следующие настройки для перенаправления доменных имен:

server {
  listen 80;
  server_name web.au-team.irpo;
  location / {
    proxy_pass http://172.16.1.10:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/.htpasswd;
  }
}
server {
  listen 80;
  server_name docker.au-team.irpo;
  location / {
    proxy_pass http://172.16.2.10:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}

Для начала редактирования нажмите клавишу i (режим Insert). Убедитесь, что активна английская раскватка клавиатуры.

4. Сохранение конфигурации виртуального хоста и выход из vim:

Нажмите клавишу Esc, введите команду ниже и нажмите Enter:

bash
$:wq

Для ограничения неавторизованного доступа к внутреннему веб-ресурсу на пограничном маршрутизаторе ISP настраивается базовая HTTP-аутентификация (Basic Auth). Создается символическая ссылка для активации виртуального хоста, генерируется хэш пароля пользователя WEBc в файле htpasswd и перезапускается служба Nginx.

ISP
1. Активация конфигурации обратного прокси через создание символической ссылки:
bash
$ln -s /etc/nginx/sites-available.d/r-proxy.conf /etc/nginx/sites-enabled.d/
2. Тестирование синтаксической корректности конфигурационных файлов Nginx:
bash
$nginx -t
3. Добавление веб-сервера Nginx в автозагрузку и его запуск:
bash
$systemctl enable --now nginx
4. Проверка текущего статуса запущенного веб-сервера Nginx:
bash
$systemctl status nginx
5. Установка утилиты htpasswd для генерации паролей:
bash
$apt-get install apache2-htpasswd -y
6. Создание файла паролей и добавление пользователя WEBc:
bash
$htpasswd -c /etc/nginx/.htpasswd WEBc
При запросе утилиты введите пароль: P@ssw0rd (потребуется ввести дважды).
7. Проверка содержимого сгенерированного файла паролей (просмотр хэша):
bash
$cat /etc/nginx/.htpasswd
8. Повторная валидация конфигурации перед перезапуском:
bash
$nginx -t
9. Перезапуск веб-сервера Nginx для применения настроек авторизации:
bash
$systemctl restart nginx
Верификация доступа и авторизации с клиента HQ-CLI
Работаем в графической оболочке HQ-CLI (под пользователем user)
Шаг 1. Доступ к защищенному сайту web.au-team.irpo:

Откройте браузер и перейдите по доменному адресу: http://web.au-team.irpo/. Должно появиться окно ввода логина и пароля.

Используйте учетные данные:

  • Логин: WEBc
  • Пароль: P@ssw0rd
Окно HTTP Basic Auth
Успешный вход на сайт
Шаг 2. Доступ к сайту docker.au-team.irpo:

Перейдите по доменному адресу: http://docker.au-team.irpo/. Сайт должен открываться без требования авторизации:

Успешный вход на docker-сайт

Для обеспечения веб-серфинга и работы с сетевыми ресурсами на клиентской машине HQ-CLI устанавливается отечественный веб-браузер Яндекс Браузер. Выполняется установка пакета, запуск браузера из графического интерфейса и фиксация установленной версии программы.

HQ-CLI (Установка)
Работаем в консольной оболочке HQ-CLI (под пользователем root)
1. Обновление пакетной базы и установка Yandex Browser:
bash
$apt-get update && apt-get install yandex-browser-stable -y
Запуск и верификация в графическом интерфейсе
Работаем в графической оболочке HQ-CLI (под пользователем user)
Шаг 1. Запуск браузера:

После успешной установки ярлык программы появится в основном меню приложений:

Меню → Интернет → Yandex Browser

Ярлык запуска Яндекс Браузера
Шаг 2. Проверка установленной версии:

В открывшемся браузере перейдите в раздел информации о программе:

Три полоски (Настройки) → Помощь → О браузере

Переход к разделу О Браузере
Версия в левом верхнем углу

Сделайте финальный скриншот окна информации (на котором четко видна версия сборки) и занесите его в отчет.