Если облако не ваш выбор, а хочется полного контроля над железом - Kubernetes на bare-metal отличный вариант. В этом посте будет описан базовый путь, как развернуть свой кластер на физических серверах с нуля.
Один мастер-узел (control plane)
Один или более worker-узлов
Ubuntu Server 22.04+ (или другой поддерживаемый дистрибутив)
Сеть с доступом между узлами (ssh + порты k8s)
root или sudo-доступ
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
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
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
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
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
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
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍9🔥2❤1
Развёртывание Linux по сети с PXE
Когда нужно установить Linux на множество серверов или ПК без USB-флешек и дисков, на помощь приходит PXE (Preboot Execution Environment) - загрузка ОС по сети. PXE позволяет запустить установщик Linux прямо из сети, что особенно удобно в дата-центрах, офисах и лабораториях.
🌟 Как это работает?
🌟 Что нужно для развертывания PXE?
1️⃣ Устанавливаем нужные пакеты. На PXE-сервере установим DHCP, TFTP и Apache (для раздачи образов):
2️⃣ Настраиваем DHCP для PXE. Редактируем
Перезапускаем DHCP:
3️⃣ Настраиваем TFTP-сервер. Указываем папку для загрузки PXE-файлов в /etc/default/tftpd-hpa:
Перезапускаем:
4️⃣ Загружаем PXELINUX. Скачиваем файлы для PXE:
Создаём каталог для меню:
5️⃣ Создаём загрузочное меню PXE. Создаём файл /srv/tftp/pxelinux.cfg/default:
6️⃣ Готовим установочные файлы. Загружаем образы на веб-сервер:
Перезапускаем Apache:
7️⃣ Запускаем установку по сети. Теперь включаем клиентский компьютер, в BIOS включаем PXE-загрузку и выбираем сетевой интерфейс в качестве загрузочного устройства.
Клиент загрузится и начнёт установку Linux прямо из сети.
#linux #install
🧑💻 NetworkAdmin
Когда нужно установить Linux на множество серверов или ПК без USB-флешек и дисков, на помощь приходит PXE (Preboot Execution Environment) - загрузка ОС по сети. PXE позволяет запустить установщик Linux прямо из сети, что особенно удобно в дата-центрах, офисах и лабораториях.
Компьютер включается и запрашивает сетевой загрузчик по DHCP.
Сервер отвечает и передаёт загрузочный образ через TFTP.
Клиент загружает ядро Linux и переходит к установке системы.
DHCP-сервер (для раздачи PXE-загрузчика)
TFTP-сервер (для передачи загрузочных файлов)
HTTP/NFS-сервер (для хранения установочных файлов)
sudo apt update && sudo apt install isc-dhcp-server tftpd-hpa apache2
/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
TFTP_DIRECTORY="/srv/tftp"
TFTP_OPTIONS="--secure"
Перезапускаем:
sudo systemctl restart tftpd-hpa
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
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/
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
Клиент загрузится и начнёт установку Linux прямо из сети.
#linux #install
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19👎1🔥1
До сих пор не знаете о
iperf? Одном из самых популярных инструментов для измерения пропускной способности сети. Iperf - это кроссплатформенная утилита, работающая в режиме клиент-сервер. Вы можете запустить сервер на Linux и тестировать подключение с Windows, Android и наоборот. При запуске выбирается один из режимов:Сервер: принимает подключения
Клиент: инициирует тестирование
apt install iperf3
iperf3 -s
По умолчанию сервер слушает порт 5201 TCP — не забудьте открыть его в файрволле.
winget install iperf3
Для любителей графики есть GUI-приложение на основе iperf, но для оригинальной консольной версии лучше скачать архив с официального сайта.
iperf3 -c <IP-адрес сервера>
Результаты теста отобразятся прямо в консоли в удобном формате.
iperf3 -c <IP> --logfile log.txt -J
Эти данные можно потом обрабатывать через любую систему мониторинга.
iperf3 -c <IP> -t 60
iperf3 -c <IP> -n 100M
iperf3 -c <IP> -P 4
Параметры одинаково работают на всех платформах. Вы можете поднять сервер на Windows и тестировать подключение с Linux - и наоборот.
#iperf #networktools
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
Приходит странный .exe в письме, скачали скрипт с форума, нужно проверить .bat - но лезть в боевую систему страшно? Windows уже давно предлагает удобные инструменты для таких задач: Windows Sandbox и Hyper-V.
Windows Sandbox - это изолированная среда, встроенная в Windows 10/11 Pro и Enterprise, запускаемая как обычное приложение. Каждая сессия создаёт чистую виртуальную Windows, которая полностью удаляется при закрытии. Идеально для тестирования вредоносных или сомнительных файлов.
Панель управления → Программы → Включение компонентов Windows → Windows Sandbox
– Не требует настройки
– Работает поверх Hyper-V
– Доступ к сети (опционально)
– Поддержка копипаста между хостом и Sandbox
– Можно запускать EXE, MSI, BAT, PowerShell-файлы
– Всё, что вы сделали, исчезает после выхода из песочницы
Пример: получили подозрительный .exe? Копируете его в Sandbox, запускаете и смотрите поведение - система хоста в полной безопасности.
Можно создавать .wsb-файлы для кастомных сессий. Пример конфигурации:
<Configuration>
<MappedFolders>
<MappedFolder>
<HostFolder>C:\test</HostFolder>
<ReadOnly>true</ReadOnly>
</MappedFolder>
</MappedFolders>
<Networking>Disable</Networking>
<LogonCommand>
<Command>explorer.exe</Command>
</LogonCommand>
</Configuration>
Hyper-V - полноценная система виртуализации. Позволяет запускать полноценные виртуалки с Windows или Linux, делать снапшоты, настраивать сеть, симулировать заражения. Подходит для постоянных стендов, C2-серверов, песочниц под малварь.
#windows #security
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20
Локальные сети уязвимы к атакам, основанным на подмене MAC-адресов и ARP-ответов. Это позволяет злоумышленнику внедриться в трафик, перехватить сессии, пароли, или даже организовать MITM-атаку. Разберёмся, как это работает и как защититься.
MAC-спуфинг - изменение MAC-адреса устройства для подделки идентичности в сети (например, чтобы обойти фильтрацию или перехватить чужой IP).
ARP-спуфинг - атака, при которой злоумышленник отправляет поддельные ARP-ответы, перенаправляя трафик жертвы на себя.
arp -s 192.168.1.1 00:11:22:33:44:55
#networksecurity #macspoofing
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
Network Monitor - бесплатная утилита от Microsoft для захвата сетевого трафика. Несмотря на отсутствие обновлений, инструмент отлично подходит для диагностики на серверах и рабочих станциях.
winget install Microsoft.NetMon
Или скачайте с официального сайта Microsoft.
- Запустите от администратора.
- Создайте новую сессию (New Capture → Capture Settings).
- Выберите профиль парсера Windows.
- Нажмите Start для начала захвата.
Перехват SMTP-трафика:
TCP.Port == 25 or TCP.Port == 465 or TCP.Port == 587
Трафик к определенному IP:
IPv4.Address == 192.168.1.100
Захват только HTTP-запросов:
HTTP.Request
Хороший инструмент для локального аудита сетевых соединений без сложных настроек.
#networktools
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁34👍6😱3❤1💩1
Когда нужно быстро определить маршрут до хоста, используются утилиты трассировки:
traceroute, tracert и tracepath. Все они работают схожим образом - отправляют пакеты с увеличивающимся TTL и фиксируют ответы от промежуточных узлов. Но есть важные отличия.
traceroute networkadmin.ru # UDP
traceroute -I networkadmin.ru # ICMP
UDP-пакеты могут блокироваться, и вы не получите ответ. Поэтому ICMP часто предпочтительнее в реальных условиях.
- Если нужна универсальность и вы работаете в Linux - используйте traceroute -I.
- Если нужна информация о MTU - tracepath.
- В Windows - только tracert, но ICMP чаще проходит успешно.
#networktools
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
Пост для тех, кому необходимо интегрировать отправку уведомлений в WhatsApp прямо из скрипта. Отличным решением будет Mudslide - консольный клиент, построенный на Node.js и библиотеке Baileys, работающий через API WhatsApp Web.
npm install -g mudslide
Или загрузите готовый бинарник для Windows/Linux.
npx mudslide login
Сканируйте QR-код в WhatsApp - и вы в системе.
mudslide send 79123456789 "Привет"
mudslide send-image 79123456789 ./image.jpg
mudslide send-file me ./doc.pdf
mudslide send-location me 55.752121 37.617664
Инструмент удобно использовать в автоматизации, мониторинге и оповещениях.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Control Groups (или просто
cgroups) - это фича ядра Linux, позволяющая ограничивать ресурсы, выделенные для процессов: CPU, память, диск, сеть и т.д.
# Создаём cgroup
sudo cgcreate -g memory,cpu:/limitgroup
# Ограничим память до 500MB
sudo cgset -r memory.limit_in_bytes=$((500*1024*1024)) limitgroup
# Ограничим CPU (50% одного ядра)
sudo cgset -r cpu.cfs_quota_us=50000 limitgroup
sudo cgset -r cpu.cfs_period_us=100000 limitgroup
# Запускаем процесс внутри cgroup
sudo cgexec -g memory,cpu:/limitgroup stress --vm 1 --vm-bytes 700M --cpu 1
Процесс превысит лимит - будет убит OOM-килером.
Все параметры и статистику можно смотреть в
/sys/fs/cgroup/.#linux #cgroups
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
mtr -rw -c 50 8.8.8.8
Покажет 50 запросов, каждый hop, потери (%) и задержку (ms).
Если видите 30–50% потерь на каком-то промежуточном IP - скорее всего, это и есть проблемный участок.
netstat. Помогает найти открытые порты, "зависшие" соединения и выяснить, какой процесс что слушает.
ss -tulpn
ss -ltnp | grep ':443'
ss -tan state close-wait
1. Сначала mtr до внешнего хоста - проверка трассировки и потерь.
2. Потом ss - смотрим, что на машине: может, переполнен backlog, слушающий порт не отвечает или слишком много соединений.
#mtr #ss #debug
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤2
Вы когда-нибудь задумывались, почему в Unix-подобных системах столько директорий для исполняемых файлов? Почему mount в /bin, а htop в /usr/bin, а свои скрипты многие кладут в /usr/local/bin?
/bin- базовые утилиты, которые нужны системе для загрузки и восстановления (например, cp, ls, mount)./sbin- то же, что /bin, но для системного администрирования (fsck, reboot, iptables)./usr/bin- всё остальное: утилиты для обычной работы пользователей (vim, git, curl)./usr/sbin- админ-инструменты, не нужные на этапе загрузки (apache2, sshd, postfix)./usr/local/binи/usr/local/sbin- то, что вы ставите вручную, не через пакетный менеджер. Сюда удобно кидать своё ПО и скрипты, чтобы не мешать системным файлам.
Иерархия стала анахронизмом, но сохраняется ради совместимости. Логичнее было бы всё централизовать, а смысловое разделение оставить только между системным (/usr) и пользовательским (/usr/local) ПО.
#linux #unix
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤3
Скачивание ISO-образов Windows с неофициальных источников может привести к установке модифицированных версий с вредоносным ПО. Для обеспечения безопасности рекомендуется проверять контрольные суммы файлов.
Get-FileHash "C:\Path\to\your\file.iso" -Algorithm SHA256
По умолчанию используется алгоритм SHA256, но можно указать другие: SHA1, SHA384, SHA512, MD5.
certutil -hashfile "C:\Path\to\your\file.iso" SHA256
1. На сайте Visual Studio Downloads (требуется учетная запись Microsoft).
2. На ресурсе RG-Adguard, где можно искать по хешу.
$expectedHash = "c90a6df8997bf49e56b9673982f3e80745058723a707aef8f22998ae6479597d"
(Get-FileHash "C:\Path\to\your\file.iso" -Algorithm SHA256).Hash -eq $expectedHash
Если результат True, файл подлинный; если False - файл может быть поврежден или подделан.
#windows #security
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤2
Если напрягает громоздкость Docker и хотите более гибкий инструмент - стоит обратить внимание на Podman. Это альтернатива Docker, которая полностью совместима с его CLI, но не требует запуска отдельного демона. Да, так и есть - никаких dockerd, sudo systemctl start docker и прочего.
Podman - это инструмент для управления контейнерами и образами, разработанный Red Hat. Он использует стандарт OCI (Open Container Initiative), а значит, большинство Docker-образов и команд будут работать "из коробки".
- Без демона: каждый контейнер запускается как обычный процесс, что упрощает отладку и снижает риски.
- Rootless режим: контейнеры можно запускать от обычного пользователя, без sudo и потенциальных угроз для всей системы.
- Совместимость с Docker CLI: команды podman run, podman build, podman pull и даже alias docker=podman - работают почти идентично.
- Интеграция с systemd: можно легко генерировать systemd-юниты из контейнеров (podman generate systemd).
# Установка на Ubuntu
sudo apt install podman
# Запуск контейнера nginx
podman run -d -p 8080:80 nginx
# Список контейнеров
podman ps
# Просмотр логов
podman logs <container-id>
# Остановка и удаление
podman stop <id> && podman rm <id>
В отличие от Docker, Podman реализует концепцию Pods (как в Kubernetes), где можно запускать сразу несколько контейнеров с общей сетью и IPC. Это отличный способ протестировать Kubernetes-архитектуру локально без сложных инструментов.
podman pod create --name mypod -p 8080:80
podman run -dt --pod=mypod nginx
- Вам нужен rootless контейнерный запуск для большей безопасности.
- Вы хотите обойтись без демона и уменьшить нагрузку на систему.
- Вы планируете использовать systemd для управления контейнерами.
- Вы работаете в серверной среде, где минимализм важнее.
#podman
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🤔2🔥1
Иногда в работе с VMWare ESXi можно столкнуться с ситуацией, когда виртуальная машина зависает и не реагирует ни на выключение, ни на перезагрузку через vSphere Web Client. Но это все ещё не повод перезагружать весь хост целиком
esxcli vm process list
esxcli vm process kill --type=soft -w 12345678
Если не помогает, можно применить более жёсткие методы:
--type=hard - принудительное завершение, аналог kill -9--type=force - экстренное завершение, применяется в крайнем случаеesxtopМожно использовать и утилиту esxtop:
esxtop
Нажимаем V, чтобы отобразить список процессов виртуальных машин. Ищем нужную ВМ и при необходимости завершаем процесс.
#VMware #ESXi
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤4👎1
Утилиту lsof (list open files) чаще всего используют для просмотра открытых файлов в Linux - и на этом, как правило, всё. Но возможности этой команды куда шире. Давайте разберёмся.
Это частый кейс: удалили лог-файл (/var/log/nginx/access.log), не перезапустили сервис - и место продолжает быть занятым.
lsof | grep '(deleted)'
# или так, короче:
lsof +L1
lsof +D /var/log
lsof -u user
# Посчитать, сколько файлов открыто:
lsof -u user | wc -l
# Исключить пользователя:
lsof -u^user | wc -l
kill -9 $(lsof -t -u user)
lsof -p 12345
lsof -ni
lsof -ni TCP:80
lsof -ni TCP@192.168.1.10
lsof -ai -u nginx
lsof -iUDP
lsof - это инструмент не только для отладки “куда делось место”, но и для быстрого анализа сетевых соединений, отлова "висячих" файлов и поиска активных пользователей.
#linux #lsof
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤3
Когда вы скачиваете файл из браузера, а потом открываете его свойства, Windows может предупредить: «Файл получен с другого компьютера и может быть небезопасным». Это происходит не случайно.
Файл, скачанный на NTFS-диск, получает специальную метку в альтернативном потоке данных (Alternate Data Stream, ADS) с именем Zone.Identifier. Эта метка добавляется браузером автоматически и никак не зависит от расширения — она будет даже у mp3, .txt или .jpg.
Get-Content -Path ".\hard_rock.mp3" -Stream Zone.Identifier
Или в Блокноте:
notepad.exe hard_rock.mp3:Zone.Identifier
[ZoneTransfer]
ZoneId=3
ReferrerUrl=https://ya.ru
HostUrl=https://ya.ru/file.mp3
0 - Мой компьютер
1 - Локальная интрасеть
2 - Доверенные сайты
3 - Интернет (по умолчанию для всего, что скачано)
4 - Ограниченные сайты
Даже если вы переименуете файл или перенесёте его, метка сохраняется. Некоторые антивирусы и скрипты используют эту информацию для усиленной проверки.
1. Через свойства файла → Разблокировать
2. Через PowerShell:
Unblock-File .\hard_rock.mp3
#windows #security
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25🔥7🤔3❤1
Когда речь заходит о NGINX, большинство сразу думают о HTTP-прокси. Но на самом деле он умеет работать и с TCP/UDP, начиная с версии 1.9.0 (с поддержкой модуля stream). Это отличный способ пробросить нестандартные протоколы - от MySQL до DNS.
Включаем модуль stream и прописываем в конфигурации:
# /etc/nginx/nginx.conf
stream {
upstream ssh_backend {
server 192.168.1.100:22;
}
server {
listen 2222;
proxy_pass ssh_backend;
}
}
Теперь при подключении к NGINX по порту 2222, трафик будет перенаправляться на внутренний сервер по SSH-порту 22.
stream {
upstream dns_backend {
server 192.168.1.53:53;
}
server {
listen 53 udp;
proxy_pass dns_backend;
}
}
Важно: UDP-прокси работает не со всеми типами UDP-протоколов - требуется тестирование.
📍 Load-balancing для TCP/UDP (с least_conn, round-robin)📍 Проксирование SSL, SSH, MySQL, RDP и других нестандартных протоколов📍 Поддержка access log, limit_conn, geo-блокировки📍 Возможность защиты backend-ов без дополнительного софта
proxy_timeout 10s;
proxy_connect_timeout 5s;
proxy_protocol on;
proxy_protocol - если используется PROXY protocol от клиента (например, HAProxy).
timeout - не даём соединениям висеть вечно.
#nginx #reverseproxy
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16❤2😱1