NetworkAdmin.ru – Telegram
NetworkAdmin.ru
4.75K subscribers
226 photos
25 videos
2 files
499 links
Авторский блог про сетевое и системное администрирование.

Сайт: networkadmin.ru
Реклама: @dad_admin
Биржа: https://telega.in/c/networkadminru
Download Telegram
🚫 Как полностью удалить OneDrive из Windows 10/11

OneDrive предустановлен во всех версиях Windows 10 и 11, интегрирован в систему и запускается автоматически при входе в систему. По умолчанию OneDrive устанавливается отдельно для каждого пользователя в его профиле: %localappdata%\Microsoft\OneDrive. Если OneDrive вам не нужен, его можно удалить, но важно сделать это для всех пользователей, включая будущие учетные записи.

▪️ Удаление OneDrive для всех пользователей

1️⃣ Остановите и удалите клиент OneDrive:


taskkill /f /im OneDrive.exe

%SystemRoot%\System32\OneDriveSetup.exe /uninstall


2️⃣ Удалите остатки файлов и папок:


rd "%UserProfile%\OneDrive" /Q /S
rd "%LocalAppData%\Microsoft\OneDrive" /Q /S
rd "%ProgramData%\Microsoft OneDrive" /Q /S


3️⃣ Очистите записи в реестре:


reg delete "HKEY_CURRENT_USER\Software\Microsoft\OneDrive" /f
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OneDrive" /f


▪️ Запрещение установки OneDrive для новых пользователей. Чтобы OneDrive не устанавливался автоматически при создании новых учетных записей, нужно удалить соответствующую запись из реестра шаблонного профиля Default:


reg load "HKU\Default" "C:\Users\Default\NTUSER.DAT"
reg delete "HKEY_USERS\Default\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "OneDriveSetup" /f
reg unload "HKU\Default"


Теперь новые пользователи на этом компьютере не получат OneDrive в своих профилях.

#windows #OneDrive

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍293🔥3
👀 Контроль сетевого трафика в Linux с помощью eBPF и XDP

Современные нагрузки требуют высокой производительности сетевых решений, а классические инструменты вроде iptables и nftables уже не всегда справляются. Здесь на сцену выходят eBPF (Extended Berkeley Packet Filter) и XDP (eXpress Data Path) - технологии для глубокой фильтрации и анализа трафика прямо в ядре Linux.

🌟 Что это такое?

eBPF - механизм в ядре Linux, позволяющий безопасно выполнять программы в режиме ядра без изменения исходного кода. Используется для фильтрации пакетов, мониторинга, трассировки и профилирования системы.

XDP - подсистема ядра Linux, основанная на eBPF, позволяющая обрабатывать пакеты на самом раннем этапе их поступления в систему (на уровне драйвера сетевой карты).


▪️ Как использовать eBPF и XDP для анализа трафика? Для работы с eBPF можно использовать утилиты bpftool и bcc (BPF Compiler Collection).

1️⃣ Установим необходимые пакеты:


sudo apt install -y bpfcc-tools linux-headers-$(uname -r) #на Debian/Ubuntu
sudo dnf install -y bpftool bcc #на RHEL/Fedora


2️⃣ Запустим мониторинг пакетов с eBPF:


sudo /usr/sbin/tc qdisc add dev eth0 clsact
sudo /usr/sbin/tc filter add dev eth0 egress bpf direct-action obj xdp_prog_kern.o


Это позволит анализировать выходящий трафик с интерфейса eth0.

3️⃣ Фильтрация пакетов с помощью XDP. Простейший eBPF-программы для отбрасывания пакетов (пример на C):


#include <linux/bpf.h>
int xdp_drop(struct __sk_buff *skb) {
return XDP_DROP; // Отбрасываем пакет
}


Компилируем и загружаем программу в XDP:


clang -O2 -target bpf -c xdp_drop.c -o xdp_drop.o
sudo ip link set dev eth0 xdp obj xdp_drop.o


Теперь весь трафик на интерфейсе eth0 будет блокироваться на уровне драйвера.

⭐️ Где применяют eBPF и XDP?

DDoS-защита - можно отбрасывать вредоносный трафик без нагрузки на процессор.
Балансировка нагрузки - построение L4-L7 балансировщиков без iptables.
Мониторинг сети - сбор детальной статистики по пакетам в реальном времени.


Примеры таких решений: Cilium, Suricata, Falco, Katran (Facebook), XDP Firewall.

#linux #eBPF #XDP

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
⬇️ Развертывание DHCP-сервера на Linux с Kea

Если вам нужен гибкий и высокопроизводительный DHCP-сервер для управления IP-адресами в сети, стоит обратить внимание на Kea DHCP от ISC. В отличие от классического ISC DHCP, Kea предлагает:

Динамическое обновление конфигурации без перезапуска сервера
Поддержку API RESTful для управления в реальном времени
Работу с базами данных (MySQL, PostgreSQL, Cassandra)
Поддержку DHCPv4 и DHCPv6


Для примера, развернем DHCP-сервер Kea на Ubuntu/Debian и настроим его на раздачу IP-адресов.

⚙️ Установка Kea DHCP. На Debian/Ubuntu устанавливаем Kea из официальных репозиториев:


sudo apt update && sudo apt install -y isc-kea-dhcp4-server


На CentOS/RHEL Kea можно установить через EPEL:


sudo dnf install -y epel-release
sudo dnf install -y kea


▪️ Настройка DHCP-сервера Kea. Файл конфигурации Kea для DHCPv4: /etc/kea/kea-dhcp4.conf

Пример минимальной конфигурации:


{
"Dhcp4": {
"interfaces-config": {
"interfaces": [ "eth0" ]
},
"subnet4": [
{
"subnet": "192.168.1.0/24",
"pools": [
{ "pool": "192.168.1.100 - 192.168.1.200" }
],
"option-data": [
{ "name": "routers", "data": "192.168.1.1" },
{ "name": "domain-name-servers", "data": "8.8.8.8, 8.8.4.4" }
]
}
]
}
}


eth0 - сетевой интерфейс, с которого раздаются адреса
192.168.1.100 - 192.168.1.200 - пул IP-адресов
192.168.1.1 - шлюз по умолчанию
8.8.8.8, 8.8.4.4 - DNS-серверы


▪️ Запуск и управление Kea DHCP. После настройки запускаем Kea DHCP:


sudo systemctl enable --now kea-dhcp4
sudo systemctl status kea-dhcp4


Проверяем логи для диагностики:


journalctl -u kea-dhcp4 --no-pager -n 50


Если нужно перезапустить DHCP-сервер после изменения конфигурации:


sudo systemctl restart kea-dhcp4


▪️ Проверка работы DHCP. Проверяем, какие клиенты получили IP-адреса:


cat /var/lib/kea/dhcp4.leases


Запросим новый IP с клиента:


dhclient -v eth0


Если адрес не выдается, смотрим активные порты Kea:


sudo ss -tulpn | grep kea


⭐️ Дополнительные возможности Kea

Подключение к MySQL или PostgreSQL для хранения аренды IP
Настройка статических IP-адресов для MAC-адресов
Работа с DHCPv6 для IPv6-сетей
Динамическое управление через API RESTful


#linux #DHCP #Kea

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍3
Раз уж залезла, глянь ошибку из лога, может чего подскажешь..

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
1😁40🍾32
🔼 Тюнинг сетевого стека Linux

Настройка сетевого стека в Linux - тема специфичная и непростая. В сети полно материалов, но большинство из них просто копируют друг друга, а рекомендации часто устаревшие. Ниже актуальная на сегодня подборка параметров, которые стоит учитывать при настройке сервера. Основной акцент - на управление памятью и таймаутами. Оперативки сейчас много, так что имеет смысл использовать это преимущество.

▪️ Полезные параметры sysctl

📍 Максимум осиротевших сокетов (TCP orphans). Каждый такой сокет съедает ~64 КБ памяти. Увеличиваем лимит, если сервер мощный:


net.ipv4.tcp_max_orphans = 65536


📍 Сокращаем FIN-WAIT-2. Позволяет быстрее очищать соединения, которые "зависли":


net.ipv4.tcp_fin_timeout = 10


📍 Настройка KeepAlive-проверок. Полезно для "выметания" неактивных соединений:


net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_keepalive_probes = 5


📍 Диапазон локальных портов. Расширяем диапазон для исходящих соединений:


net.ipv4.ip_local_port_range = 10240 65535


📍 Увеличиваем очередь входящих соединений. Особенно важно на серверах с высокой нагрузкой:


net.core.somaxconn = 16384


📍 Буферы по умолчанию. Прокачиваем rmem и wmem для эффективной работы сокетов:


net.core.rmem_default = 851968
net.core.wmem_default = 851968
net.core.rmem_max = 12582912
net.core.wmem_max = 12582912


📍 Конфигурация TCP Congestion Control. Выбираем алгоритм, подходящий под вашу нагрузку. По умолчанию:


net.ipv4.tcp_congestion_control = cubic


📍 Отключаем TCP syncookies. Если нет необходимости в защите от SYN-флудов, можно отключить:


net.ipv4.tcp_syncookies = 0


📍 Включаем защиту от TIME_WAIT атак. Обязательно при большом количестве соединений:


net.ipv4.tcp_rfc1337 = 1


📍 Безопасность ICMP и redirect’ов. Для серверов, которые не являются маршрутизаторами:


net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.all.send_redirects = 0


Дополнительно - игнорировать ICMP echo-запросы (ping):


net.ipv4.icmp_echo_ignore_all = 1


❗️ Стоит учитывать

Параметры вроде tcp_mem, tcp_rmem, tcp_wmem зависят от объема оперативной памяти и автоматически настраиваются при загрузке. Их можно регулировать вручную при необходимости, но в большинстве случаев дефолтных значений достаточно.


#linux #sysctl #TCP

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥64
🟣 Кто и что устанавливал в системе за последние 7 дней

Если нужно быстро узнать, какие приложения, обновления или MSI-пакеты были установлены или удалены на Windows-системе за последнюю неделю - поможет встроенный журнал Reliability Monitor и небольшой PowerShell-скрипт.

Скрипт вытащит:

Установку/удаление MSI пакетов
Установку/удаление приложений из Microsoft Store
Установленные обновления Windows
Пользователя, от имени которого происходили действия


▪️ Вот сам скрипт:


$DaysAgo = (Get-Date).AddDays(-7)
$RealiabilityFilter = "TimeGenerated > '$DaysAgo' and (SourceName='Microsoft-Windows-WindowsUpdateClient' or SourceName='MsiInstaller')"

Get-CimInstance -ClassName Win32_ReliabilityRecords -Filter $RealiabilityFilter |
Select-Object TimeGenerated, ProductName, User, Message |
Out-GridView


Скрипт использует данные из журнала Win32_ReliabilityRecords и отфильтровывает события только по установке/удалению софта. Отображение в Out-GridView - удобно и наглядно для быстрого анализа.

Отличный инструмент, если нужно быстро понять, что происходило с системой в плане установки ПО.

#windows #audit #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
🛡 Отказоустойчивый DNS

Надежный DNS - это основа стабильной работы инфраструктуры. Если основной DNS падает, могут лечь и внутренние сервисы, и доступ к внешним ресурсам. Один из проверенных способов построения отказоустойчивой DNS-системы - связка Bind9 (авторитетный DNS) + Unbound (рекурсивный кеширующий DNS).

🌟 Архитектура:

Bind9 отвечает за авторитетные зоны — внутренние домены, PTR-записи, сервисные SRV и т.д.
Unbound обрабатывает внешние запросы (Google, GitHub, NTP и прочее), кеширует и защищает от DNS-рекурсии.

Между ними можно использовать dnsdist для балансировки и DDoS-защиты (опционально).
Обе службы работают на разных портах (например, Bind на 1053, Unbound на 53).


⚙️ Настройка Bind9 (авторитетный). Устанавливаем:


sudo apt install bind9


Конфигурация зоны:


zone "corp.lan" {
type master;
file "/etc/bind/zones/db.corp.lan";
allow-query { any; };
};


Слушаем нестандартный порт:


options {
listen-on port 1053 { any; };
recursion no;
};


⚙️ Настройка Unbound (рекурсивный + прокси к Bind9). Устанавливаем:


sudo apt install unbound


Базовый unbound.conf:


server:
interface: 0.0.0.0
access-control: 192.168.0.0/16 allow
verbosity: 1

# Кеширование и защита
cache-max-ttl: 86400
hide-identity: yes
hide-version: yes

# Проксирование запросов во внутренние зоны на Bind
local-zone: "corp.lan." transparent

forward-zone:
name: "corp.lan"
forward-addr: 127.0.0.1@1053


▪️ Отказоустойчивость. Устанавливаем второй DNS-сервер (с таким же конфигом Bind + Unbound).

Прописываем оба IP-адреса на клиентах или в DHCP:


DNS1: 192.168.1.10
DNS2: 192.168.1.11


Используем keepalived или VRRP для виртуального IP, если хотим активный кластер.

▪️ Безопасность и дополнения: Активируйте DNSSEC в Unbound.

1. Используйте dnsdist для фильтрации, балансировки и rate-limit.
2. Следите за логами (/var/log/syslog или systemd-journald).

#DNS #Bind9 #Unbound

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
🖥 Секреты удобной работы в терминале

Если вы проводите много времени в терминале - переход на zsh и настройка Oh My Zsh может серьёзно упростить и ускорить вашу работу. Это не просто замена bash, а настоящий рабочий инструмент с автодополнением, подсветкой синтаксиса, git-индикацией и кучей других плюшек.

⚙️ Установка Zsh и Oh My Zsh


sudo apt install zsh # или brew install zsh на macOS
chsh -s $(which zsh) # сделаем zsh шеллом по умолчанию


⚙️ Установка Oh My Zsh:


sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"


▪️ Темы и кастомизация. Тема "agnoster" или "powerlevel10k" - удобная и информативная, особенно для работы с Git.

Powerlevel10k:


git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/themes/powerlevel10k


И укажите в .zshrc:


ZSH_THEME="powerlevel10k/powerlevel10k"


🌟 Полезные плагины Oh My Zsh. В .zshrc:


plugins=(git z sudo zsh-autosuggestions zsh-syntax-highlighting)


git - алиасы вроде gst (git status), gco (git checkout)
z - умное перемещение по папкам (находит нужную по частичному совпадению)
sudo - быстрое добавление sudo при повторе команды с ESC+ESC
zsh-autosuggestions - автоподсказки по истории
zsh-syntax-highlighting - подсветка ошибок до нажатия Enter


🌟 Полезные фишки и алиасы. Автодополнение для ssh, kubectl, docker, git

Автоисправление команд (grpe → grep)

Алиасы можно описывать прямо в .zshrc:


alias gs='git status'
alias ll='ls -alF'
alias ..='cd ..'


#zsh #linux #terminal

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12👎2😁1💊1
🤔🤔

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁29👎7🔥2🤔2
📱 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🔗 Как обновляются групповые политики в 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🤔1🤡1
🗃 Скрываем лишние файлы в 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🗿4
Понаберут с улицы..

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23😁8🤡63😢2
🖥 Быстрый способ получить информацию об оборудовании в 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
💬 Что скрывает 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
🕛 Проблема смены часового пояса в 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🤔1🤡1
Весна, хочется чего-то нового

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁31👍1
📱 Скрипт для анализа занятости места в 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🫡1
🗂 Ротационные бэкапы с экономией места: 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19
Интимная обстановка 🔞

#юмор

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
😁52🤔3😱21👍1
👩‍💻 Как развернуть 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
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍9🔥21