en
Feedback
NetworkAdmin.ru

NetworkAdmin.ru

Open in Telegram

Авторский блог про сетевое и системное администрирование. Сайт: networkadmin.ru Реклама: @dad_admin Биржа: https://telega.in/c/networkadminru

Show more
4 725
Subscribers
No data24 hours
-57 days
No data30 days
Posts Archive
⚠️ Terraform меняет правила игры в DevOps. Хотите освоить инструмент, с которым инфраструктура развертывается в несколько кли
⚠️ Terraform меняет правила игры в DevOps. Хотите освоить инструмент, с которым инфраструктура развертывается в несколько кликов? ⏰ На открытом вебинаре 20 мая в 20:00 МСК вы узнаете, как Terraform делает инфраструктуру управляемой, прозрачной и масштабируемой. Разберём ключевые понятия: провайдеры, состояние, модули и переменные. Вы узнаете, почему IaC стал золотым стандартом DevOps. 💪 Научитесь автоматизировать развёртывание ресурсов, избавьтесь от рутинной ручной работы и освободите время на действительно важные задачи. 👉 Регистрируйтесь прямо сейчас и получите скидку на программу обучения «DevOps-практики и инструменты»: https://otus.pw/eXNe/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Развёртывание 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 🧑‍💻 NetworkAdmin

👩‍💻 Как развернуть 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 🧑‍💻 NetworkAdmin

Хотите выйти за рамки формального DevOps и действительно управлять безопасностью? 🔐 Слёрм разработал инструмент, который пом
Хотите выйти за рамки формального DevOps и действительно управлять безопасностью? 🔐 Слёрм разработал инструмент, который поможет вам оценить зрелость DevSecOps-процессов и понять, что нужно усилить, чтобы ваша экспертиза выделялась и приносила реальную ценность:  ✔️ Самодиагностика по ключевым блокам, ✔️ Чеклист с приоритетными действиями, ✔️ Пошаговый план для усиления процессов. ➡️ Вы не просто пройдёте тест — вы увидите свои зоны роста как инженера и получите инструмент, который поможет стать тем, кто реально влияет на безопасность и стабильность продукта👌 Получить доступ к проверке ТУТ📌

Интимная обстановка 🔞 #юмор 🧑‍💻 NetworkAdmin
Интимная обстановка 🔞 #юмор 🧑‍💻 NetworkAdmin

🗂 Ротационные бэкапы с экономией места: 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

▶️ БЕСПЛАТНЫЙ МАСТЕР-КЛАСС «Linux: от основ к профессиональному использованию» 14 мая в 19:00 (МСК) | Онлайн | Бесплатно ✔️Ре
▶️ БЕСПЛАТНЫЙ МАСТЕР-КЛАСС «Linux: от основ к профессиональному использованию» 14 мая в 19:00 (МСК) | Онлайн | Бесплатно ✔️Регистрация Linux уже давно перестал быть инструментом исключительно для системных администраторов. Сегодня это необходимый навык для DevOps-инженеров, специалистов по кибербезопасности и всех, кто работает с IT-инфраструктурой.   На нашем вебинаре мы: ▪️ Развеем мифы о сложности Linux и покажем, как начать работать с ним уверенно ▪️ Продемонстрируем практическое применение в реальных рабочих задачах ▪️ Расскажем о карьерных перспективах для специалистов, владеющих Linux ▪️ Дадим пошаговый алгоритм освоения системы Особое внимание уделим: ✔ Работе с терминалом (основные команды и их применение) ✔ Решению типовых задач системного администрирования ✔ Возможностям для профессионального роста   Ведущий: Дмитрий Семьянов — действующий специалист по пентесту, куратор курса «Основы Linux». Не пропустите! Регистрация здесь. 🚀 Трудности с регистрацией? Пишите @Codeby_Academy

📱 Скрипт для анализа занятости места в 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 🧑‍💻 NetworkAdmin

Весна, хочется чего-то нового #юмор 🧑‍💻 NetworkAdmin
Весна, хочется чего-то нового #юмор 🧑‍💻 NetworkAdmin

🐳❓ Хотите стать экспертом по Docker и микросервисам? Освойте ключевые навыки для разработки, упаковки и развертывания прилож
🐳❓ Хотите стать экспертом по Docker и микросервисам? Освойте ключевые навыки для разработки, упаковки и развертывания приложений с Docker-образами! ⏰ На открытом вебинаре 13 мая в 20:00 мск мы разберём, как эффективно использовать Docker для контейнеризации и автоматизации процессов развертывания микросервисов. Вы познакомитесь с принципами создания и оптимизации Docker-образов, а также с лучшими практиками DevOps и CI/CD. Умение использовать Docker для автоматизации и управления микросервисами сделает вас более конкурентоспособным на рынке труда. Получите знания, которые востребованы в крупных компаниях. 👉 Регистрируйтесь на открытый урок и получите скидку на программу обучения «DevOps-практики и инструменты»: https://otus.pw/LrbAt/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

🕛 Проблема смены часового пояса в 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 🧑‍💻 NetworkAdmin

💪 Рекомендую качественный контент знакомого ИТ-сообщества с 15-летним стажем: ⌨️ ITKB_channel — бесплатное обучение по Windows, Linux, DevOps, Security, Network, программирование 📚 ITKB_Archive — библиотека (книги, курсы, ИТ литература)

💬 Что скрывает 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

В России можно посещать IT-мероприятия хоть каждый день: как оффлайн, так и онлайн Но где их находить? Как узнавать о них ран
В России можно посещать IT-мероприятия хоть каждый день: как оффлайн, так и онлайн Но где их находить? Как узнавать о них раньше, чем когда все начнут выкладывать фотографии оттуда? Переходите на канал IT-Мероприятия России. В нём каждый день анонсируются мероприятия со всех городов России 📆 в канале размещаются как онлайн, так и оффлайн мероприятия; 👩‍💻 можно найти ивенты по любому стеку: программирование, frontend-backend разработка, кибербезопасность, дата-аналитика, osint, devops и другие; 🎙 разнообразные форматы мероприятий: митапы с коллегами по цеху, конференции и вебинары с известными опытными специалистами, форумы и олимпиады от важных представителей индустрии и многое другое А чтобы не искать по разным форумам и чатам новости о предстоящих ивентах: 🚀 IT-мероприятия Россииподписывайся и будь в курсе всех предстоящих мероприятий!

🖥 Быстрый способ получить информацию об оборудовании в 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 🧑‍💻 NetworkAdmin

Понаберут с улицы.. #юмор 🧑‍💻 NetworkAdmin
Понаберут с улицы.. #юмор 🧑‍💻 NetworkAdmin

🗃 Скрываем лишние файлы в SMB Одна из полезных, но редко используемых функций SMB - Access-Based Enumeration (ABE). Она скры
🗃 Скрываем лишние файлы в 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 🧑‍💻 NetworkAdmin

🔗 Как обновляются групповые политики в Windows и как применить их немедленно По умолчанию настройки GPO (Group Policy Object
🔗 Как обновляются групповые политики в 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 🧑‍💻 NetworkAdmin

⚡️ Новость молния: хостер раздаёт виртуалки по 100 рублей Преимущества VPS от DLine Media: ▪️серверное железо ◽️быстрые NVMe
⚡️ Новость молния: хостер раздаёт виртуалки по 100 рублей Преимущества VPS от DLine Media: ▪️серверное железо ◽️быстрые NVMe диски ▪️неограниченный трафик до 1 GB/s ◽️топовые зарубежные и российские локации ▪️цены в рублях (!) ◽️оплата по договору или картой РФ ▪️собственный ЦОД ◽️выделенный VLAN ▪️поддержка IPv6 ◽️VNC доступ из браузера ▪️удобная панель управления ◽️установка любой ОС ▪️низкая стоимость ◽️круглосуточная поддержка ▪️Разрешено для VPN Раздача продлится до конца апреля ⚠️ Активация за 5 минут на сайте: https://dline-media.com/vps

📱 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

NetworkAdmin.ru - Statistics & analytics of Telegram channel @networkadminru