inspared by https://github.com/valeriar23/DEMO2022
Топология сети
- 1 Модуль
- Базовая настройка сетевых устройств
- Настройка внутренней маршрутизации
- Настройка DHCP
- Настройка локальных учетных записей
- Проверка пропускной способности
- Написание backup скрипта
- Настройка SSH
- Настройка контроль доступ по SSH
- 2 Модуль
- Настройка DNS сервера
- Настройка NTP
- Настройка выбора сервера домена
- Реализация файлового сервера
- Конфигурация веб-севера LMS Apache
- Запуск сервиса MediaWiki используя docker
В связи с отсутствием конкретных данных, относящихся к IP адресации в сети (за исключением необходимого количества хостов для каждого офиса см. Пункт 1 Модуль 1). Было решено взять в качестве образца:
-
ISP:CLI - 1.1.10.0/24
-
ISP:BR-R - 5.5.5.0/28
-
ISP:HQ-R - 4.4.4.0/26
-
BR-R:BR-SRV - 172.16.100.0/28
-
HQ-R:HQ-SRV - 192.168.100.0/26
На самом экзамене IP адресация 100% будет другая
"Составьте backup скрипты для сохранения конфигурации сетевых устройств, а именно HQ-R BR-R. Продемонстрируйте их работу"
- Создайте файл backup.bash в домашней директории пользователя
touch /root/backup.bash
- Откройте его с помшью любого текстового редактора, в моём случае - VIM
vim /root/backup.bash
- В начале создания bash скрипта, необходимо указать
#!/bin/bash
#!/bin/bash - это шебанг (shebang) или интерпретаторная строка, которая используется в начале исполняемых сценариев в операционной системе Linux и других подобных системах Unix. Эта строка указывает на то, какую программу использовать для интерпретации и выполнения содержимого файла. В данном случае #!/bin/bash означает, что файл должен быть выполнен с использованием оболочки Bash (Bourne-again shell).
- Следующей строкой укажем путь к файлу конфигурации, резервное копирование которой мы хотим сделать
CONFIG_FILE="/etc/network/interfaces"
- Создаём имя файла для резервной копии, добавив текущую дату и время
BACKUP_FILE="/root/interfaces_backup_$(date +%Y%m%d%H%M%S)"
- Создаём резервную копию файла конфигурации
cp $CONFIG_FILE $BACKUP_FILE- Для того, чтобы пользователь понимал, что bash скрипт выполнение успешно, добавим вывод строки с помощью echo c указанием созданных раннее переменных
echo "Backup of $CONFIG_FILE saved to $BACKUP_FILE"Настройка домена на Debian реализуется с помощью FreeIPA.
FreeIPA — это решение для управления идентификацией с открытым исходным кодом для операционных систем Linux/Unix. Это дочерний проект RedHat Identity Management System, который предоставляет решения для аутентификации и авторизации для систем Linux/Unix.
Перед настройкой, убедитесь, что вы выполнили 1 и 2 задания 2 модуля, ибо без корректно натсроенных службы NTP и DNS могут возникунть ошибки.
Сначала введите следующую команду apt, чтобы установить основные зависимости.
sudo apt install curl gnupg git lsb-releaseЗатем добавьте и загрузите ключ GPG репозитория Docker CE.
sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgПосле добавления ключа GPG введите следующую команду, чтобы добавить репозиторий Docker CE.
echo
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullТеперь запустите приведенную ниже команду «apt update», чтобы обновить индекс вашего пакета Debian.
sudo apt updateЗатем установите пакеты Docker CE, введя команду «apt install» ниже. Введите y для подтверждения при появлении запроса и нажмите ENTER, чтобы продолжить.
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginЕсли Docker CE установлен, он также автоматически запускается и включается. выполните команду systemctl ниже, чтобы проверить службу Docker.
sudo systemctl is-enabled docker
sudo systemctl status dockerНаконец, если вы планируете запускать приложение Docker от пользователя без полномочий root, вам необходимо добавить своего пользователя в группу «docker». Введите следующую команду, чтобы добавить пользователя в группу «docker». В этом примере вы добавите пользователя «user» в группу «docker».
sudo usermod -aG docker userТеперь выполните следующую команду git, чтобы загрузить репозиторий freeipa-container в вашу систему. Затем переместите в него свой рабочий каталог.
git clone https://github.com/freeipa/freeipa-container.git
cd freeipa-containerТеперь запустите приведенную ниже команду «ls», чтобы проверить список файлов и каталогов в репозитории «freeipa-container». Вы должны увидеть несколько файлов Dockerfile, которые вы можете использовать для настройки сервера FreeIPA в вашей системе Debian.
lsЗатем введите следующую команду, чтобы создать новый образ Docker сервера FreeIPA. В этом примере вы создадите образ Docker-сервера FreeIPA на основе «AlmaLinux 9» и будет называться «freeipa-almalinux9».
docker build -t freeipa-almalinux9 -f Dockerfile.almalinux-9 .После выполнения команды docker build вы должны увидеть процесс сборки образа Docker для сервера FreeIPA.
Выполните следующую команду, чтобы проверить список образов Docker, доступных в вашей системе. Вы должны увидеть образ Docker под названием «freeipa-almalinux9», созданный и доступный в вашей системе.
docker imagesВначале установим на каждом сервере необходимые компонент
- Установите и настройте Samba на сервере HQ-SRV, если он еще не установлен. Выполните команду для установки Samba (если она еще не установлена):
Установите на HQ-SRV пакет nfs-kernel-server, которы позволит вам предоставлять доступ к вашим каталогам. Поскольку это первая операция, которую вы выполняете с помощью apt в этом сеансе, обновите индекс локальных пакетов перед установкой:
sudo apt update
sudo apt install nfs-kernel-serverПосле установки пакетов переключитесь на клиентский сервер
На клиенте необходимо установить пакет nfs-common, обеспечивающий функции NFS без добавления каких-либо серверных компонентов. Обновите индекс локальных пакетов перед установкой, чтобы гарантированно использовать актуальную информацию:
sudo apt update
sudo apt install nfs-commonДля начала создайте каталоги на HQ-SRV:
mkdir /shares/network -p
mkdir /shares/branch_files -p
mkdir /shares/admin_files -pДля монтирования на клиенте также создайте каталоги:
mkdir /mnt/network -p
mkdir /mnt/admin_files -p
mkdir /mnt/branch_files -pДля настройки экспорта каталога, откройте следующие записи:
/share/network client_ip(rw,sync,no_roo_squash)
/share/branch_files client_ip(rw,sync,no_roo_squash)
/share/admin_files client_ip(rw,sync,no_roo_squash)Здесь мы используем для обоих каталогов одинаковые параметры конфигурации, за исключением no_root_squash. Посмотрим, что означают эти опции:
rw: эта опция дает клиенту доступ к чтению и записи на соответствующем томе. sync: эта опция принудительно заставляет NFS записывать изменения на диске, прежде чем отправлять ответ. В результате мы получаем более стабильную и согласованную среду, поскольку в ответе отражается фактическое состояние удаленного тома. Однако при этом снижается скорость операций с файлами. no_subtree_check: данная опция предотвращает проверку вложенного дерева, когда хост проверяет фактическую доступность файла в экспортированном дереве при каждом запросе. Это может вызвать много проблем в случае переименования файла, когда он открыт на клиентской системе. Проверку вложенного дерева в большинстве случаев лучше отключить. no_root_squash: по умолчанию NFS преобразует запросы удаленного пользователя root в запросы пользователя без привилегий на сервере. Это предназначено для обеспечения безопасности, чтобы пользователь root клиентской системы не мог использовать файловую систему хоста с правами root. Опция no_root_squash отключает такое поведение для определенных общих ресурсов. Нам нужно создать строку для каждого каталога, к которым мы планируем предоставить общий доступ. Обязательно замените сокращение client_ip своим реальным IP-адресом:
Для безопасности NFS преобразует любые операции root на клиенте в операции с учетными данными nobody:nogroup. В связи с этим, нам необходимо изменить владельца каталога для соответствия этим учетным данным.
sudo systemctl restart nfs-kernel-serverКогда вы закончите внесение изменений, сохраните и закройте файл. Чтобы сделать общие ресурсы доступными для настроенных клиентов, перезапустите сервер NFS с помощью следующей команды:
chown nobody:nogroup /shares/network
chown nobody:nogroup /shares/branch_files
chown nobody:nogroup /shares/admin_filesВеб-сервер Apache доступен в репозитории Debian и может быть установлен через менеджер пакетов apt, выполнив следующую команду:
sudo apt install apache2Добавьте Apache2 в автозапуск.
sudo systemctl enable apache2Для провекра первичной работоспособности яндекс зайдите в браузер и в поисковой строке введите ваш IP-адрес.
http://your-IP-addressДля установки PHP для Moodle, скачиваем пакеты.
sudo apt install php libapache2-mod-php php-iconv php-intl php-soap php-zip php-curl php-mbstring php-mysql php-gd php-xml php-pspell php-json php-xmlrpcПроверить наличие PHP можно командой:
php -vВы должны получить такой ответ:
Output: PHP 7.4.28 (cli) (built: Feb 17 2022 16:17:19) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.28, Copyright (c), by Zend TechnologiesУстановка Базы Данных MariaDB осуществляется следующей командой:
sudo apt install mariadb-server mariadb-clientДобавьте MariaDB в автозагрузку.
sudo systemctl enable mariadbДля дальнейшей работы, нужно отредактировать конфигурационный файл MariaDB.
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Добавьте следующие строки:
default_storage_engine = innodb
innodb_file_per_table = 1
innodb_file_format = BarracudaПерезапустите службу
sudo systemctl restart mariadbДля создания базы данных в MariaDB, сначала войдите в неё.
sudo mysql -u rootЧтобы создать базу данных, пользователя базы данных и выдать все привелегии, нужно прописать:
MariaDB [(none)]> CREATE DATABASE moodledb;
MariaDB [(none)]> CREATE USER 'moodle_user'@'localhost' IDENTIFIED BY 'Moodle_Passw0rd!';
MariaDB [(none)]> GRANT ALL ON moodledb.* TO 'moodle_user'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXITУстановка Moodle производится с помощью команды:
sudo wget https://download.moodle.org/download.php/direct/stable400/moodle-4.0.1.zipПосле загрузки, распакуйте скаченные файлы и сохраните их в директорию для html.
sudo unzip moodle-4.0.1.zip -d /var/www/html/Создайте директорию для Moodle.
sudo mkdir /var/www/html/moodledataНастройте права доступа для созданной диреткории.
sudo chown -R www-data:www-data /var/www/html/moodle/
sudo chmod -R 755 /var/www/html/moodle/
sudo chown -R www-data:www-data /var/www/html/moodledata/Создайте конфигурационный файл Apache для сайта.
nano /etc/apache2/sites-available/moodle.confФайл должен выглядить следующим образом:
<VirtualHost *:80>
ServerAdmin webmaster@your-domain.com
ServerName your-domain.com
ServerAlias www.your-domain.com
DocumentRoot /var/www/html/moodle
<Directory /var/www/html/moodle/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/your-domain.com_error.log
CustomLog ${APACHE_LOG_DIR}/your-domain.com_access.log combined
</VirtualHost>Активируйте виртуальный хост Apache.
sudo a2ensite moodle.confПерезапустите службу.
sudo systemctl restart apache2Чтобы получить доступ к веб-установки, открой браузер и перейдите по IP-адресу/DNS имени на ваш хост.
http://your-domain.comВ появившемся окне, выберите язык
Настройте URL-адрес, корневой веб-каталог и каталог данных, а затем нажмите «Далее»
Настройте «драйвер базы данных», используйте сервер базы данных MariaDB и нажмите «Далее»
Введите информацию о базе данных и нажмите «Далее», чтобы продолжить
Примите Соглашение об авторском праве и нажмите «Продолжить»
Система проверяет конфигурацию сервера и все расширения PHP, необходимые для Moodle
Если все требования выполнены, нажмите «Продолжить»
Убедитесь, что все результаты «Success». Затем снова нажмите «Продолжить»
Заполните информацию об администраторе и нажмите «Обновить профиль»
Вы будете перенаправлены на панель администратора
-
Установите службы Docker и Docker-compose
-
Создайте файл wiki.yml
touch wiki.yml- Отредактируйте созданный файл
vim wiki.yml- Приведите его к следующему виду
# MediaWiki with MariaDB
#
# Access via "http://localhost:8080"
# (or "http://$(docker-machine ip):8080" if using docker-machine)
version: '3'
services:
mediawiki:
image: mediawiki
restart: always
ports:
- 8080:80
links:
- database
volumes:
- images:/var/www/html/images
# After initial setup, download LocalSettings.php to the same directory as
# this yaml and uncomment the following line and use compose to restart
# the mediawiki service
# - ./LocalSettings.php:/var/www/html/LocalSettings.php
# This key also defines the name of the database host used during setup instead of the default "localhost"
database:
image: mariadb
restart: always
environment:
# @see https://phabricator.wikimedia.org/source/mediawiki/browse/master/includes/DefaultSettings.php
MYSQL_DATABASE: mediawiki
MYSQL_USER: wiki
MYSQL_PASSWORD: DEP@ssw0rd
MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
volumes:
- db:/var/lib/mysql
volumes:
images:
db:
- Запустите docker контейнеры
docker-compose -f wiki.yml up -d- Проверьте запуск контейнеров
docker ps- Если вы всё сделали правильно, то при переходе на адрес хоста, на котором запущены контейнеры вас будет ждать следующая веб-страниа
Нажимамем "Please set up the wiki first."
- Выбираем язык
- Приступаем к настройке базы данных
10 Для того, чтобы узнать хост базы данных, пропишем
docker exec -it root-database-1 bashГде "root-database-1" - имя запущенного контейнера, чтобы его уточнить, можно прописать
docker psА после того, как вам удалось войти в контейнер БД, нужно прописать команду
hostname -iВ результате чего, БД выдаст вам желаемый хост базы данных
- Заполняем таблицу основываясь на wiki.yml файле и полученном хосте
- Создаём учетную запись
- После проделанных манипуляций, сайт Mediawiki предложит вам скачать файл LocalSettings.php, который нужно скопировать в одну директорию с wiki.yml
cp /home/user/Downloads/LocalSettings.php /root/- Снимаем комментарий со строчки в wiki.yml
./LocalSettings.php:/var/www/html/LocalSettings.php- Перезапускаем контейнеры
docker-compose -f wiki.yml up -d- Mediawiki должно работать











