
Системный администратор обеспечивает работу сервиса и умеет восстановить его после сбоя. Знание названий команд полезно только вместе с пониманием DNS, адресации, прав, storage, резервирования и журналов. Ниже — практический маршрут для начинающего специалиста: изолированная лаборатория, задачи с проверяемым результатом и правила безопасного изменения. Он подходит для самостоятельной подготовки и вводного обучения сотрудника MSP. Срок освоения зависит от исходных навыков и времени практики; обещание должности или зарплаты по одной статье было бы необоснованным.
Каждую работу оформляйте как короткое обращение: задача, схема, исходное состояние, действия, результат, возврат и оставшиеся вопросы. Портфолио администратора — воспроизводимые процедуры и подтверждённое восстановление, а не screenshots терминала без объяснения.

1. Собрать изолированную лабораторию
Для первого цикла нужны две Linux VM: server-lab и client-lab. Пример — Ubuntu Server 24.04, каждой 2 vCPU, 2 ГБ RAM и 20 ГБ виртуального диска, если хост располагает ресурсами. Для отдельного AD-цикла понадобится Windows Server и Windows-клиент с подходящими лицензиями/оценочными условиями. Не подключайте учебный DHCP или DC к офисному LAN.
На Windows Pro/Enterprise проверьте поддержку Hyper-V по документации; редакция Home имеет другие доступные варианты виртуализации. В Hyper-V Manager создайте virtual switch типа Internal с именем LAB, две generation-2 VM и установите ОС из официального образа. Для первичного обновления допустимо временно использовать Default Switch; перед сетевыми опытами переключите обе VM на LAB. Не добавляйте вторую сетевую карту без понимания маршрутов. Включение Hyper-V.
Лабораторная подсеть 10.77.0.0/24 не имеет gateway в изолированном цикле. Server — 10.77.0.10, client — 10.77.0.20. Проверьте, что диапазон не пересекается с host/VPN; при пересечении выберите другой. При установке используйте имя обычного учебного пользователя labadmin; административные команды выполняйте через sudo из этой учётной записи. Пароль придумайте свой, в документацию его не записывайте. Для работы достаточно VM console, поэтому ошибочная сетевая настройка не отрежет вам единственный доступ.
2. Настроить адреса и объяснить маршрут
До переключения на изолированный switch обновите ОС и установите openssh-server, curl, dnsutils, acl и python3 на server; curl, dnsutils и openssh-client на client. После переключения определите имя NIC через ip -br link. В Ubuntu Server создайте /etc/netplan/99-lab.yaml, подставив своё имя интерфейса. На server:
network:
version: 2
ethernets:
eth0:
dhcp4: false
addresses: [10.77.0.10/24]
На client адрес — 10.77.0.20/24. Перед редактированием сохраните исходную конфигурацию; не оставляйте два конфликтующих netplan файла для одной NIC. Применение выполняйте в console:
sudo cp -a /etc/netplan /root/netplan-before-lab
sudo chmod 600 /etc/netplan/99-lab.yaml
sudo netplan generate
sudo netplan try
ip -br address
ip route
ping -c 4 10.77.0.20
netplan try допускает подтверждение и возврат при потере связи, но резервная копия и console всё равно нужны. В изолированном стенде отсутствие default route нормально: VM не должна выходить в Internet. Задание принято, когда обе VM видят друг друга, а вы объясняете, почему /24 делает адреса соседями и для чего нужен gateway. Сеть Ubuntu Server.
3. Разобрать DNS отдельно от IP-связности
На стадии с временным доступом через Default Switch выполните запрос публичного имени, затем сравните lookup с доступом к IP/порту. В изолированном LAB публичный DNS без маршрута недоступен — это ожидаемый результат, а не причина вставлять случайный resolver.
getent ahosts example.com
nslookup -type=A example.com
nslookup -type=MX example.com
nslookup -type=TXT example.com
ip route
Задание: объяснить A/AAAA, CNAME, NS, MX priority и TTL, а также разницу authoritative и recursive DNS. TXT может содержать SPF, но наличие TXT не подтверждает успешную доставку письма. Команда nslookup -type=ANY не является способом перечислить все поддомены. Для закрепления используйте прикладную инструкцию DNS/nslookup.
Локальное имя server-lab можно временно добавить на client в /etc/hosts: 10.77.0.10 server-lab. Это проверяет local name resolution, но не заменяет DNS-сервер. Всегда указывайте, какой источник дал ответ, иначе рабочий hosts может скрыть неисправность DNS.
4. Настроить SSH и доказать, что доступ работает
На server проверьте службу и listener. Создайте отдельного lab-пользователя согласно правилам стенда. На client генерируйте ключ с passphrase, затем передайте public key штатным способом. Private key остаётся на клиенте.
# Сервер
systemctl status ssh --no-pager
ss -lnt | grep ':22'
# Клиент
ssh-keygen -t ed25519 -f "$HOME/.ssh/lab_ed25519"
ssh-copy-id -i "$HOME/.ssh/lab_ed25519.pub" labadmin@10.77.0.10
ssh -i "$HOME/.ssh/lab_ed25519" labadmin@10.77.0.10
Перед первым доверием сравните fingerprint server host key через console. Нельзя отключать StrictHostKeyChecking, чтобы избавиться от предупреждения после пересоздания VM. После входа проверьте id, hostname и pwd. Ужесточение sshd_config выполняется только после проверки ключевого входа во второй сессии; сохраняйте первую и console. Валидатор sudo sshd -t должен пройти до reload. OpenSSH Ubuntu.
5. Разделить пользователя, группу и доступ к файлам
Права должны давать нужную операцию конкретной группе. Упрощение chmod 777 предоставляет запись всем локальным пользователям и не является исправлением. В лаборатории создайте группу lab-readers и каталог с известными файлами:
sudo groupadd lab-readers
sudo adduser labviewer
sudo mkdir -p /srv/lab-share
printf '%s\n' 'training data' | sudo tee /srv/lab-share/readme.txt > /dev/null
sudo chown -R root:lab-readers /srv/lab-share
sudo chmod 2750 /srv/lab-share
sudo chmod 0640 /srv/lab-share/readme.txt
sudo usermod -aG lab-readers labadmin
id labadmin
namei -l /srv/lab-share/readme.txt
getfacl /srv/lab-share
sudo -u labadmin cat /srv/lab-share/readme.txt
sudo -u labviewer cat /srv/lab-share/readme.txt
Для изменения состава групп нужен новый login session; текущий процесс может сохранить старые supplemental groups. Последняя команда должна дать Permission denied: labviewer не включён в lab-readers. Проверка через sudo -u выполняет чтение от выбранного пользователя, а не от root. Задание принято, когда участник группы читает файл, посторонний пользователь не читает, а никто из них не может менять его без нужных прав. Понимайте execute на каталоге и ACL mask. Возврат — снять только созданное членство/ACL и восстановить исходное состояние, не рекурсивно менять весь /srv.
6. Развернуть небольшой сервис и проверить весь путь
Для первого стенда достаточно простого HTTP-сервера, который не содержит пользовательских данных и не публикуется в Internet. В отдельном терминале server:
mkdir -p "$HOME/lab-web"
cd "$HOME/lab-web"
printf '%s\n' '<h1>server-lab works</h1>' > index.html
python3 -m http.server 8080 --bind 10.77.0.10
С client:
curl --connect-timeout 3 --max-time 5 http://10.77.0.10:8080/
ss -s
Ответ должен содержать известный текст. Остановите сервис и повторите запрос: connection refused/timeout отличайте от HTTP 404/500. Простой python server здесь — учебный инструмент, не production deployment. Следующий уровень — штатный nginx/systemd, config validator, отдельный пользователь и журналы. Критерий работы администратора: определить listener, маршрут, firewall, HTTP status и зависимость, а не только «ping отвечает».
7. Сделать backup и восстановить отдельную копию
Snapshot VM помогает вернуться к точке лаборатории, но не заменяет независимый backup при отказе datastore. Для файлового упражнения создайте архив, checksum и отдельный restore directory. Сначала проверьте место назначения; не пишите backup в тот же единственный аварийный диск.
mkdir -p "$HOME/lab-backup" "$HOME/lab-restore"
tar -C "$HOME" -czf "$HOME/lab-backup/lab-web.tar.gz" lab-web
sha256sum "$HOME/lab-backup/lab-web.tar.gz" > "$HOME/lab-backup/lab-web.sha256"
sha256sum -c "$HOME/lab-backup/lab-web.sha256"
tar -tzf "$HOME/lab-backup/lab-web.tar.gz"
tar -C "$HOME/lab-restore" -xzf "$HOME/lab-backup/lab-web.tar.gz"
cmp "$HOME/lab-web/index.html" "$HOME/lab-restore/lab-web/index.html"
Для этого упражнения архив создан вами и имеет известные относительные пути. Непроверенный чужой архив нельзя распаковывать с повышенными правами поверх системы. Задание принято, когда файл восстановлен и сравнен, а время восстановления измерено. Для БД используйте application-consistent backup и отдельную проверку транзакций; tar живого каталога не гарантирует согласованность. GNU tar.
8. Выполнить Windows/AD цикл в отдельном стенде
После Linux-основ добавьте изолированный Windows Server и поддерживаемый domain-capable Windows-клиент. Официальный evaluation образ используют только в пределах его условий. AD DS разворачивают на отдельном LAB switch, с заранее выбранным именем учебного домена и DNS. Не используйте настоящее имя production forest и не подключайте lab DC к офисному сегменту.
Задания: создать OU Lab, группу доступа и двух пользователей; ввести клиент в учебный домен; выдать доступ через группу; проверить результирующую GPO и контролируемую блокировку. Для команд PowerShell используйте десять задач AD. Начните чтением:
Import-Module ActiveDirectory
Get-ADDomain | Select-Object DNSRoot,DomainSID
Get-ADUser -Filter * -SearchBase 'OU=Lab,DC=lab,DC=example' |
Select-Object SamAccountName,Enabled
whoami /groups
gpresult /r
DN замените реальной OU стенда. Результат — схема group→resource, понятная GPO и тест двух пользователей с разными полномочиями. Создание домена требует отдельной процедуры с DNS, временем и восстановлением; официальное развёртывание AD DS служит источником для этого цикла.
9. Решить неисправность по доказательствам
Попросите коллегу внести один согласованный сбой в лабораторию: остановить HTTP server, изменить только client hosts, убрать membership или заполнить ограниченную учебную файловую систему. Запишите симптом и проверяйте гипотезы последовательно. Не создавайте нагрузку, которая заполнит диск хоста или production storage.
date -Is
ip -br address
ip route
getent ahosts server-lab
ss -lntup
systemctl --failed --no-pager
journalctl --since '-15 minutes' --no-pager
Покажите, какая проверка исключила сеть, DNS, права или службу. «Перезапустил и заработало» не объясняет причину и не предотвращает повторение. После исправления повторите исходную операцию пользователя и сохраните before/after. Для постоянного наблюдения переходите к мониторингу Linux.
10. Подготовить портфолио и выбрать специализацию
Завершённый учебный комплект включает схему IP/VLAN, inventory VM, процедуры SSH, доступ через группы, backup/restore, диагностику инцидента и короткий runbook. В нём нет настоящих паролей, private keys или клиентских персональных данных. Команды должны иметь условия применения и результат: другой человек способен повторить работу в таком же стенде.
После базы выбирайте специализацию через задачи: Windows/AD, Linux/application operations, сети, storage/backup, cloud или security. MSP требует также учёта изменений, коммуникации с пользователем и документированного сопровождения нескольких клиентов. Автоматизацию начинайте с read-only inventory и отчёта, затем добавляйте ограниченное изменение с dry-run, журналом и возвратом. Готовность к первой работе определяется тем, что вы можете поддерживать понятный сервис, диагностировать сбой и восстановить его, а не количеством просмотренных курсов.
