NetworkAdmin.ru
رفتن به کانال در Telegram
Авторский блог про сетевое и системное администрирование. Сайт: networkadmin.ru Реклама: @dad_admin Биржа: https://telega.in/c/networkadminru
نمایش بیشتر4 725
مشترکین
اطلاعاتی وجود ندارد24 ساعت
-57 روز
اطلاعاتی وجود ندارد30 روز
آرشیو پست ها
4 724
⚠️ Terraform меняет правила игры в DevOps. Хотите освоить инструмент, с которым инфраструктура развертывается в несколько кликов?
⏰ На открытом вебинаре 20 мая в 20:00 МСК вы узнаете, как Terraform делает инфраструктуру управляемой, прозрачной и масштабируемой. Разберём ключевые понятия: провайдеры, состояние, модули и переменные. Вы узнаете, почему IaC стал золотым стандартом DevOps.
💪 Научитесь автоматизировать развёртывание ресурсов, избавьтесь от рутинной ручной работы и освободите время на действительно важные задачи.
👉 Регистрируйтесь прямо сейчас и получите скидку на программу обучения «DevOps-практики и инструменты»: https://otus.pw/eXNe/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
4 724
Развёртывание Linux по сети с PXE
Когда нужно установить Linux на множество серверов или ПК без USB-флешек и дисков, на помощь приходит PXE (Preboot Execution Environment) - загрузка ОС по сети. PXE позволяет запустить установщик Linux прямо из сети, что особенно удобно в дата-центрах, офисах и лабораториях.
🌟 Как это работает?
Компьютер включается и запрашивает сетевой загрузчик по DHCP. Сервер отвечает и передаёт загрузочный образ через TFTP. Клиент загружает ядро Linux и переходит к установке системы.🌟 Что нужно для развертывания PXE?
DHCP-сервер (для раздачи PXE-загрузчика) TFTP-сервер (для передачи загрузочных файлов) HTTP/NFS-сервер (для хранения установочных файлов)1️⃣ Устанавливаем нужные пакеты. На PXE-сервере установим DHCP, TFTP и Apache (для раздачи образов):
sudo apt update && sudo apt install isc-dhcp-server tftpd-hpa apache2
2️⃣ Настраиваем DHCP для PXE. Редактируем /etc/dhcp/dhcpd.conf:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.1;
next-server 192.168.1.10; # PXE-сервер
filename "pxelinux.0";
}
Перезапускаем DHCP:
sudo systemctl restart isc-dhcp-server
3️⃣ Настраиваем TFTP-сервер. Указываем папку для загрузки PXE-файлов в /etc/default/tftpd-hpa:
TFTP_DIRECTORY="/srv/tftp"
TFTP_OPTIONS="--secure"
Перезапускаем:
sudo systemctl restart tftpd-hpa
4️⃣ Загружаем PXELINUX. Скачиваем файлы для PXE:
sudo mkdir -p /srv/tftp
cd /srv/tftp
sudo apt install syslinux pxelinux
sudo cp /usr/lib/PXELINUX/pxelinux.0 .
sudo cp /usr/lib/syslinux/modules/bios/* .
Создаём каталог для меню:
mkdir -p /srv/tftp/pxelinux.cfg
5️⃣ Создаём загрузочное меню PXE. Создаём файл /srv/tftp/pxelinux.cfg/default:
DEFAULT menu.c32
PROMPT 0
TIMEOUT 100
ONTIMEOUT install
LABEL install
MENU LABEL Install Ubuntu 22.04
KERNEL ubuntu/vmlinuz
APPEND initrd=ubuntu/initrd.gz netboot=http://192.168.1.10/ubuntu/
6️⃣ Готовим установочные файлы. Загружаем образы на веб-сервер:
sudo mkdir -p /var/www/html/ubuntu
cd /var/www/html/ubuntu
wget http://archive.ubuntu.com/ubuntu/dists/jammy/main/installer-amd64/current/images/netboot/netboot.tar.gz
tar -xzf netboot.tar.gz
Перезапускаем Apache:
sudo systemctl restart apache2
7️⃣ Запускаем установку по сети. Теперь включаем клиентский компьютер, в BIOS включаем PXE-загрузку и выбираем сетевой интерфейс в качестве загрузочного устройства.
Клиент загрузится и начнёт установку Linux прямо из сети.
#linux #install
🧑💻 NetworkAdmin4 724
👩💻 Как развернуть Kubernetes-кластер на bare-metal сервере
Если облако не ваш выбор, а хочется полного контроля над железом - Kubernetes на bare-metal отличный вариант. В этом посте будет описан базовый путь, как развернуть свой кластер на физических серверах с нуля.
⭐️ Что потребуется:
Один мастер-узел (control plane) Один или более worker-узлов Ubuntu Server 22.04+ (или другой поддерживаемый дистрибутив) Сеть с доступом между узлами (ssh + порты k8s) root или sudo-доступ1️⃣ Подготовка ОС. На всех узлах:
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl apt-transport-https ca-certificates software-properties-common
Выключаем swap (Kubernetes его не любит):
sudo swapoff -a
sudo sed -i '/swap/d' /etc/fstab
2️⃣ Установка container runtime (например, containerd)
sudo apt install -y containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml > /dev/null
sudo systemctl restart containerd
3️⃣ Установка kubeadm, kubelet и kubectl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo add-apt-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
sudo apt update
sudo apt install -y kubeadm kubelet kubectl
sudo apt-mark hold kubeadm kubelet kubectl
4️⃣Инициализация мастер-узла. На мастер-ноде:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
После успешной инициализации:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
5️⃣ Установка сетевого плагина (например, Flannel)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
6️⃣ Подключение worker-нод. На каждом worker-узле выполните команду, которую выдал kubeadm init, например:
sudo kubeadm join 192.168.0.10:6443 --token abcdef.1234567890abcdef \
--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
▪️ Проверка статуса кластера. На мастер-ноде:
kubectl get nodes
kubectl get pods --all-namespaces
#kubernetes #baremetal
🧑💻 NetworkAdmin4 724
Хотите выйти за рамки формального DevOps и действительно управлять безопасностью? 🔐
Слёрм разработал инструмент, который поможет вам оценить зрелость DevSecOps-процессов и понять, что нужно усилить, чтобы ваша экспертиза выделялась и приносила реальную ценность:
✔️ Самодиагностика по ключевым блокам,
✔️ Чеклист с приоритетными действиями,
✔️ Пошаговый план для усиления процессов.
➡️ Вы не просто пройдёте тест — вы увидите свои зоны роста как инженера и получите инструмент, который поможет стать тем, кто реально влияет на безопасность и стабильность продукта👌
Получить доступ к проверке ТУТ📌
4 724
🗂 Ротационные бэкапы с экономией места: rsync + hardlink
На сервере делаются ежедневные резервные копии, но не хочется тратить кучу места на дублирование одних и тех же файлов? Есть отличный способ - использовать rsync с жёсткими ссылками (hardlinks) для дедупликации. Это позволяет хранить полные снепшоты, при этом экономя место.
🌟 Суть подхода
Бэкапы выглядят как отдельные директории (backup-2025-05-13, backup-2025-05-12), но все неизмененные файлы - это просто ссылки на одни и те же иноды.
Если файл не изменился - он физически не дублируется, а просто переиспользуется в новом бэкапе.
▪️ Структура и логика
Пример каталогов:
/backups/
├── daily.0 ← сегодня
├── daily.1 ← вчера
├── daily.2
└── daily.3
daily.0 - свежий бэкап.
daily.1, daily.2, ... - предыдущие снепшоты.
При каждом новом запуске:
старые бэкапы смещаются на +1 (daily.2 → daily.3)
daily.0 создаётся как --link-dest от daily.1
▪️ Скрипт ротационного бэкапа
#!/bin/bash
SRC="/home/user"
DEST="/backups"
MAX=7 # сколько дней хранить
# Сдвигаем старые бэкапы
for ((i=MAX-1; i>=0; i--)); do
if [ -d "$DEST/daily.$i" ]; then
mv "$DEST/daily.$i" "$DEST/daily.$((i+1))"
fi
done
# Создаём новый бэкап с дедупликацией
LINK=""
if [ -d "$DEST/daily.1" ]; then
LINK="--link-dest=$DEST/daily.1"
fi
rsync -aAX --delete $LINK "$SRC/" "$DEST/daily.0"
⭐️ Преимущества
- Каждый бэкап - полный, можно восстановить всё в конкретном состоянии. - Экономия места - используется только дополнительное место для новых/изменённых файлов. - Простота восстановления: rsync обратно или просто cp.#linux #backup 🧑💻 NetworkAdmin
4 724
▶️ БЕСПЛАТНЫЙ МАСТЕР-КЛАСС «Linux: от основ к профессиональному использованию»
14 мая в 19:00 (МСК) | Онлайн | Бесплатно
✔️Регистрация
Linux уже давно перестал быть инструментом исключительно для системных администраторов. Сегодня это необходимый навык для DevOps-инженеров, специалистов по кибербезопасности и всех, кто работает с IT-инфраструктурой.
На нашем вебинаре мы:
▪️ Развеем мифы о сложности Linux и покажем, как начать работать с ним уверенно
▪️ Продемонстрируем практическое применение в реальных рабочих задачах
▪️ Расскажем о карьерных перспективах для специалистов, владеющих Linux
▪️ Дадим пошаговый алгоритм освоения системы
Особое внимание уделим:
✔ Работе с терминалом (основные команды и их применение)
✔ Решению типовых задач системного администрирования
✔ Возможностям для профессионального роста
Ведущий: Дмитрий Семьянов — действующий специалист по пентесту, куратор курса «Основы Linux».
Не пропустите! Регистрация здесь.
🚀 Трудности с регистрацией? Пишите @Codeby_Academy
4 724
📱 Скрипт для анализа занятости места в Linux
Иногда на сервере внезапно заканчивается свободное место - и начинается беготня по командам du, find, lsof, вспоминание синтаксиса и пляски с пайпами. А можно проще. Сохранить себе в закладки bash-скрипт topdiskconsumer, который соберёт всё нужное за тебя.
🌟 Что делает скрипт?
Он запускается из любой директории и автоматически определяет, с какого тома (mount point) нужно искать.
Далее собирает:
▪ Топ-20 самых крупных файлов
▪ Топ-20 самых "тяжёлых" директорий
▪ Топ-20 больших файлов старше 30 дней
▪ Топ-20 удалённых, но не освобождённых файлов (файлы с открытым дескриптором)
🌟 Как это работает?
Скрипт не требует зависимостей, стороннего ПО или установки. Всё - стандартные утилиты:
find, du, sort, lsof. Примеры:
▪️ Топ-20 директорий:
du -hcx --max-depth=6 / 2>/dev/null | sort -rh | head -n 20
▪️ Топ-20 файлов:
find / -mount -ignore_readdir_race -type f -exec du -h "{}" + 2>&1 \
| sort -rh | head -n 20
▪️ Старые и объёмные:
find / -mount -ignore_readdir_race -type f -mtime +30 -exec du -h "{}" + 2>&1 \
| sort -rh | head -20
🌟 По умолчанию отображается топ-20, но это можно изменить - задать своё значение в переменной intNumFiles в начале скрипта или передать флаг -l.
🌟 Посмотреть доступные опции:
./topdiskconsumer --help
Ссылка на GitHub 📱
#linux #bash
🧑💻 NetworkAdmin4 724
🐳❓ Хотите стать экспертом по Docker и микросервисам? Освойте ключевые навыки для разработки, упаковки и развертывания приложений с Docker-образами!
⏰ На открытом вебинаре 13 мая в 20:00 мск мы разберём, как эффективно использовать Docker для контейнеризации и автоматизации процессов развертывания микросервисов. Вы познакомитесь с принципами создания и оптимизации Docker-образов, а также с лучшими практиками DevOps и CI/CD.
Умение использовать Docker для автоматизации и управления микросервисами сделает вас более конкурентоспособным на рынке труда. Получите знания, которые востребованы в крупных компаниях.
👉 Регистрируйтесь на открытый урок и получите скидку на программу обучения «DevOps-практики и инструменты»: https://otus.pw/LrbAt/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
4 724
🕛 Проблема смены часового пояса в Windows Server 2019/2022
В Windows Server 2019 и 2022 есть неприятная особенность (или всё-таки баг?), из-за которой нельзя изменить часовой пояс через графический интерфейс. Даже с правами администратора попытка изменить настройки через классическую панель (timedate.cpl) или "Параметры" приводит к ошибке о недостатке разрешений.
✅ Решается это просто - через консоль:
С помощью tzutil:
tzutil /s "Russian Standard Time"
Или PowerShell:
Get-TimeZone -ListAvailable | Where-Object DisplayName -like "*Moscow*" | Set-TimeZone
Также можно запустить timedate.cpl с повышенными правами (Run as Administrator) и всё заработает как надо.
#WindowsServer #timezone
🧑💻 NetworkAdmin4 724
💪 Рекомендую качественный контент знакомого ИТ-сообщества с 15-летним стажем:
⌨️ ITKB_channel — бесплатное обучение по Windows, Linux, DevOps, Security, Network, программирование
📚 ITKB_Archive — библиотека (книги, курсы, ИТ литература)
4 724
💬 Что скрывает Linux Kernel: модули ядра и их влияние
Ядро Linux - это не монолит, в котором всё скомпилировано раз и навсегда. Оно устроено куда гибче. Большинство драйверов, подсистем и расширений — это загружаемые модули ядра (kernel modules), которые можно подключать и отключать "на лету", без перезагрузки системы.
🌟 Что такое модуль ядра?
Модуль ядра - это объектный файл (.ko), содержащий часть функциональности, которая может быть подключена к ядру динамически. Это может быть драйвер оборудования, файловая система, сетевая функциональность и даже механизмы безопасности (например, AppArmor или SELinux).
▪️ Как посмотреть, какие модули загружены?
lsmod
Эта команда выведет список активных модулей, сколько раз они используются и какими другими модулями зависят.
▪️ Как загрузить модуль вручную?
modprobe имя_модуля
Если вы знаете, какой драйвер нужен (например, vfat для FAT-файловых систем), вы можете подгрузить его в ядро прямо во время работы.
▪️ Как выгрузить ненужный модуль?
modprobe -r имя_модуля
Не все модули можно выгрузить - если они заняты (используются другими модулями или активными процессами), команда завершится ошибкой.
▪️ Где лежат модули?
Обычно они находятся в /lib/modules/$(uname -r)/kernel/
Можно искать по названию:
find /lib/modules/$(uname -r) -type f -name '*имя*'
▪️ Почему это важно?
Модули ядра напрямую влияют на:
производительность безопасность стабильность системы поддержку "нестандартного" оборудования#linux #kernel #modules 🧑💻 NetworkAdmin
4 724
В России можно посещать IT-мероприятия хоть каждый день: как оффлайн, так и онлайн
Но где их находить? Как узнавать о них раньше, чем когда все начнут выкладывать фотографии оттуда?
Переходите на канал IT-Мероприятия России. В нём каждый день анонсируются мероприятия со всех городов России
📆 в канале размещаются как онлайн, так и оффлайн мероприятия;
👩💻 можно найти ивенты по любому стеку: программирование, frontend-backend разработка, кибербезопасность, дата-аналитика, osint, devops и другие;
🎙 разнообразные форматы мероприятий: митапы с коллегами по цеху, конференции и вебинары с известными опытными специалистами, форумы и олимпиады от важных представителей индустрии и многое другое
А чтобы не искать по разным форумам и чатам новости о предстоящих ивентах:
🚀 IT-мероприятия России — подписывайся и будь в курсе всех предстоящих мероприятий!
4 724
🖥 Быстрый способ получить информацию об оборудовании в Linux
Среди утилит для сбора информации о железе в Linux
dmidecode выделяется особенным подходом:
в отличие от lshw, hwinfo или inxi, она не опрашивает оборудование напрямую, а читает таблицу DMI/SMBIOS, где уже содержится вся нужная информация. Поэтому работает практически мгновенно, без лишней нагрузки.
📦 Часто уже предустановлена во многих дистрибутивах. Устанавливать вручную почти никогда не требуется.
▪️ Как пользоваться. Команда максимально простая. Можно указать тип устройства (по номеру или имени):
# Информация о процессоре
dmidecode -t 4
# или
dmidecode -t processor
📌 Часто используемые ключи:
Тип оборудования Ключ -t BIOS 0 или bios Система 1 или system Материнская плата 2 или baseboard Корпус 3 или chassis Процессор 4 или processor Память 17 или memory Кэш 7 или cache Порты, слоты и т.д. 8–9 и выше▪️ Запрашиваем конкретные параметры. Если нужно получить только конкретные поля - например, модель или частоту процессора:
dmidecode -s processor-version
dmidecode -s processor-frequency
Чтобы увидеть все доступные ключи:
dmidecode -s
🌟 Полезный флаг. Ключ -q (quiet) скрывает лишнюю тех.информацию вроде Handle и мета-описаний:
dmidecode -q -t processor
🌟 Важно: dmidecode корректно работает только на физическом железе. В виртуальных машинах информация может быть неполной или отсутствовать совсем - это зависит от гипервизора и его настроек.
#linux#dmidecode
🧑💻 NetworkAdmin4 724
🗃 Скрываем лишние файлы в SMB
Одна из полезных, но редко используемых функций SMB - Access-Based Enumeration (ABE). Она скрывает файлы и папки, к которым у пользователя нет доступа, делая сетевые шары более удобными и безопасными.
При включении ABE пользователь видит только те файлы и папки, к которым у него есть NTFS-доступ (минимум Read). Всё остальное остаётся скрытым. Это особенно полезно в папках с большим количеством вложенных директорий (например, для отделов компании).
🔘 Включение ABE
Windows Server (SMB):
Get-SmbShare DOCS | Set-SmbShare -FolderEnumerationMode AccessBased
Samba (Linux, FreeBSD). Добавьте в smb.conf:
hide unreadable = Yes
Скрытие самих расшаренных папок:
access based share enum = Yes
#SMB #server
🧑💻 NetworkAdmin4 724
🔗 Как обновляются групповые политики в Windows и как применить их немедленно
По умолчанию настройки GPO (Group Policy Objects) в Windows обновляются в следующих случаях:
📍 при загрузке компьютера,
📍 при входе пользователя в систему,
📍 и в фоновом режиме каждые 90–120 минут с небольшой случайной задержкой.
Обновление происходит только если служба Group Policy Client (gpsvc) обнаружит изменение версии политики. Номер версии хранится в файле:
<Имя_контроллера_домена>\SYSVOL\<домен>\Policies\<GUID>\gpt.ini
Хотите применить изменения немедленно на удалённой машине? Используйте один из способов:
▪️ Через GUI: Откройте gpmc.msc (Group Policy Management Console)
1. Кликните правой кнопкой по нужному OU (организационному подразделению)
2. Выберите "Group Policy Update"
▪️ Через PowerShell:
Invoke-GPUpdate -Computer "PC01" -RandomDelayInMinutes 0
Команда принудительно обновит политики на удалённой системе без задержек.
❗️ Для выполнения PowerShell-команды нужны соответствующие права и разрешённые WinRM-соединения между клиентом и целевой машиной.
#windows #GPO #GroupPolicy
🧑💻 NetworkAdmin4 724
⚡️ Новость молния: хостер раздаёт виртуалки по 100 рублей
Преимущества VPS от DLine Media:
▪️серверное железо
◽️быстрые NVMe диски
▪️неограниченный трафик до 1 GB/s
◽️топовые зарубежные и российские локации
▪️цены в рублях (!)
◽️оплата по договору или картой РФ
▪️собственный ЦОД
◽️выделенный VLAN
▪️поддержка IPv6
◽️VNC доступ из браузера
▪️удобная панель управления
◽️установка любой ОС
▪️низкая стоимость
◽️круглосуточная поддержка
▪️Разрешено для VPN
Раздача продлится до конца апреля ⚠️
Активация за 5 минут на сайте:
https://dline-media.com/vps
4 724
📱 Hadolint - линтер, который реально помогает
Если вы регулярно пишете Dockerfile'ы, следует добавить в свой арсенал Hadolint - это линтер, который проверяет как синтаксис, так и best practices. Он поможет выявить ошибки, неточности и неочевидные нюансы на этапе написания. В том числе - проверит shell-команды с помощью правил из ShellCheck.
Hadolint можно использовать:
Локально (через Docker или бинарник)
Через онлайн-версию
▪️ Пример 1. Go + Alpine
FROM golang:1.22 AS build
WORKDIR /app
COPY . .
RUN go mod tidy && \
CGO_ENABLED=0 GOOS=linux go build -o app .
FROM alpine:3.19
RUN apk add --no-cache ca-certificates
WORKDIR /root/
COPY --from=build /app/app .
CMD ["./app"]
Проверка:
docker run --rm -i hadolint/hadolint < Dockerfile
Вывод Hadolint:
DL3007: Не используйте latest, всегда указывайте версию (например, alpine:3.19)
DL3018: Указывайте конкретные версии пакетов при apk add - это улучшает воспроизводимость сборки
▪️ Пример 2. Debian + Apache
FROM debian:bookworm
RUN apt-get update && \
apt-get install -y --no-install-recommends apache2 && \
apt-get clean && rm -rf /var/lib/apt/lists/*
EXPOSE 80 443
VOLUME ["/var/www", "/var/log/apache2", "/etc/apache2"]
ENTRYPOINT ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
Hadolint замечает:
DL3008: Указывайте точные версии пакетов (например, apache2=2.4.57-1)
DL3009: Чистите списки apt-пакетов после установки
DL3015: Используйте --no-install-recommends, чтобы не тащить лишнее
🌟 Зачем это нужно?
latest, без версий, без очистки - всё это может привести к нестабильной сборке. Особенно при CI/CD. Линтер Hadolint позволяет быстро выявить подобные места, не дожидаясь багов в проде.
⚙️ Установка локально:
brew install hadolint # macOS
sudo apt install hadolint # Ubuntu (через snap или вручную)
Или через Docker:
docker run --rm -i hadolint/hadolint < Dockerfile
Рекомендации Hadolint в большинстве случаев точны, понятны и логичны. Если вы ещё не используете его - самое время начать.
#Docker #Hadolint
🧑💻 NetworkAdmin
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
