4722
Авторский блог про сетевое и системное администрирование. Сайт: networkadmin.ru Реклама: @dad_admin Биржа: https://telega.in/c/networkadminru
🖥 Быстрый способ получить информацию об оборудовании в 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
dmidecode -q -t processor
dmidecode корректно работает только на физическом железе. В виртуальных машинах информация может быть неполной или отсутствовать совсем - это зависит от гипервизора и его настроек.
🗃 Скрываем лишние файлы в SMB
Одна из полезных, но редко используемых функций SMB - Access-Based Enumeration (ABE). Она скрывает файлы и папки, к которым у пользователя нет доступа, делая сетевые шары более удобными и безопасными.
При включении ABE пользователь видит только те файлы и папки, к которым у него есть NTFS-доступ (минимум Read). Всё остальное остаётся скрытым. Это особенно полезно в папках с большим количеством вложенных директорий (например, для отделов компании).
🔘 Включение ABE
Windows Server (SMB):
Get-SmbShare DOCS | Set-SmbShare -FolderEnumerationMode AccessBased
smb.conf:
hide unreadable = Yes
access based share enum = Yes
📱 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
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"]
brew install hadolint # macOS
sudo apt install hadolint # Ubuntu (через snap или вручную)
docker run --rm -i hadolint/hadolint < Dockerfile
🖥 Секреты удобной работы в терминале
Если вы проводите много времени в терминале - переход на zsh и настройка Oh My Zsh может серьёзно упростить и ускорить вашу работу. Это не просто замена bash, а настоящий рабочий инструмент с автодополнением, подсветкой синтаксиса, git-индикацией и кучей других плюшек.
⚙️ Установка Zsh и Oh My Zsh
sudo apt install zsh # или brew install zsh на macOS
chsh -s $(which zsh) # сделаем zsh шеллом по умолчанию
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/themes/powerlevel10k
ZSH_THEME="powerlevel10k/powerlevel10k"
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
alias gs='git status'
alias ll='ls -alF'
alias ..='cd ..'
🟣 Кто и что устанавливал в системе за последние 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
Раз уж залезла, глянь ошибку из лога, может чего подскажешь..
#юмор
🧑💻 NetworkAdmin
👀 Контроль сетевого трафика в Linux с помощью eBPF и XDP
Современные нагрузки требуют высокой производительности сетевых решений, а классические инструменты вроде iptables и nftables уже не всегда справляются. Здесь на сцену выходят eBPF (Extended Berkeley Packet Filter) и XDP (eXpress Data Path) - технологии для глубокой фильтрации и анализа трафика прямо в ядре Linux.
🌟 Что это такое?
eBPF - механизм в ядре Linux, позволяющий безопасно выполнять программы в режиме ядра без изменения исходного кода. Используется для фильтрации пакетов, мониторинга, трассировки и профилирования системы.
XDP - подсистема ядра Linux, основанная на eBPF, позволяющая обрабатывать пакеты на самом раннем этапе их поступления в систему (на уровне драйвера сетевой карты).
sudo apt install -y bpfcc-tools linux-headers-$(uname -r) #на Debian/Ubuntu
sudo dnf install -y bpftool bcc #на RHEL/Fedora
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
#include <linux/bpf.h>
int xdp_drop(struct __sk_buff *skb) {
return XDP_DROP; // Отбрасываем пакет
}
clang -O2 -target bpf -c xdp_drop.c -o xdp_drop.o
sudo ip link set dev eth0 xdp obj xdp_drop.o
DDoS-защита - можно отбрасывать вредоносный трафик без нагрузки на процессор.
Балансировка нагрузки - построение L4-L7 балансировщиков без iptables.
Мониторинг сети - сбор детальной статистики по пакетам в реальном времени.
✏️ Логи Nginx в JSON: удобство и гибкость
По умолчанию Nginx ведёт логи в текстовом формате, но уже давно умеет писать их в JSON. Однако, в большинстве конфигураций всё ещё используются старые текстовые логи. Если вы до сих пор не перешли на JSON, самое время это сделать – его проще анализировать вручную и обрабатывать в автоматизированных системах.
⚙️ Настройка JSON-логов в Nginx. Включить JSON-формат просто – достаточно добавить новую директиву log_format в конфигурационный файл:
log_format json_combined escape=json '{'
'"time_local":"$time_local",'
'"remote_addr":"$remote_addr",'
'"remote_user":"$remote_user",'
'"request":"$request",'
'"status":"$status",'
'"body_bytes_sent":"$body_bytes_sent",'
'"request_time":"$request_time",'
'"http_referrer":"$http_referer",'
'"http_user_agent":"$http_user_agent"'
'}';
access_log /var/log/nginx/access.log json_combined;
Если вы используете Zabbix, ELK (Elasticsearch + Logstash + Kibana), Grafana или другие системы мониторинга – обработка JSON-логов упростится, так как для него уже есть готовые парсеры.
jq '.' access.log
jq '.request' access.log
jq '. | select(.status=="404")' access.log
jq '. | select(.status=="404") | .request' access.log
jq '. | select(.status=="404") | .time_local, .request' access.log
jq -r '.request' access.log
$request_length – длина запроса
$upstream_addr – адрес upstream-сервера
$upstream_status – HTTP-ответ от upstream
$upstream_response_time – время ответа backend'а
$upstream_connect_time – время установки соединения с upstream
$upstream_header_time – время получения HTTP-заголовков от upstream
$server_name – имя виртуального хоста
$ssl_protocol – используемый TLS-протокол
$ssl_cipher – алгоритм шифрования
💎 Как правильно настроить SNMP для мониторинга сети
SNMP (Simple Network Management Protocol) - один из самых популярных протоколов для мониторинга сетевого оборудования, серверов и рабочих станций. Он позволяет получать данные о загрузке процессора, памяти, сетевых интерфейсах и многом другом. Однако, неправильная настройка SNMP может стать уязвимостью в системе. Разберем, как его правильно настроить.
1️⃣ Выбор версии SNMP. Существует три версии протокола:
SNMPv1 – устаревшая, передает данные в открытом виде (НЕ рекомендуется).
SNMPv2c – улучшенная версия, но всё еще без шифрования.
SNMPv3 – наиболее безопасная, поддерживает аутентификацию и шифрование (РЕКОМЕНДУЕТСЯ).
sudo apt install snmp snmpd -y # Для Debian/Ubuntu
sudo yum install net-snmp net-snmp-utils -y # Для CentOS/RHEL
agentAddress udp:161,udp6:[::1]:161
rocommunity public default -V systemonly
sysLocation "Server Room"
sysContact "admin@networkadmin.ru"
sudo systemctl restart snmpd
sudo systemctl enable snmpd
snmpwalk -v2c -c public 127.0.0.1
Enable-WindowsOptionalFeature -Online -FeatureName SNMP
iptables -A INPUT -p udp --dport 161 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p udp --dport 161 -j DROP
New-NetFirewallRule -DisplayName "Allow SNMP" -Direction Inbound -Protocol UDP -LocalPort 161 -Action Allow -RemoteAddress 192.168.1.0/24
Zabbix
LibreNMS
Telegraf + InfluxDB + Grafana
snmpwalk/snmpget
snmpget -v2c -c public 192.168.1.1 .1.3.6.1.2.1.1.5.0
👀 Анализ логов Windows с PowerShell и LogParser
1️⃣ Анализ логов через PowerShell. PowerShell позволяет извлекать события из журнала Windows через Get-WinEvent или Get-EventLog.
📍 Пример 1: Найти все неудачные попытки входа (Event ID 4625):
Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 4625 } | Select-Object TimeCreated, Id, Message
Get-WinEvent -LogName System -MaxEvents 10 | Where-Object { $_.Level -eq 2 }
$start = (Get-Date).AddDays(-1) # Логи за последние 24 часа
Get-WinEvent -LogName Security | Where-Object { $_.TimeCreated -ge $start -and $_.Message -match "admin" }
LogParser.exe "SELECT TimeGenerated, EventID, Message FROM System WHERE EventType = 1" -i:EVT
LogParser.exe "SELECT TimeGenerated, SID, Message FROM Security WHERE EventID = 4625" -i:EVT
LogParser.exe "SELECT TOP 10 Image, COUNT(*) AS Hits FROM 'C:\Windows\System32\winevt\Logs\Application.evtx' GROUP BY Image ORDER BY Hits DESC" -i:EVT
📅 Как обнаружить бэкдор на Windows-сервере?
1️⃣ Проверяем сетевые подключения. Запущенные соединения покажут активные подключения:
netstat -ano | findstr :3389
Get-NetTCPConnection | Where-Object { $_.State -eq "Listen" }
Get-CimInstance Win32_StartupCommand | Select-Object Name, Command, Location
Get-Process | Sort-Object CPU -Descending
Get-LocalUser | Where-Object { $_.Enabled -eq $true }
Get-ScheduledTask | Where-Object {$_.State -eq "Ready"}
Security - неудачные попытки входа
System - странные ошибки служб
Application - нестандартные ошибки
Get-EventLog -LogName Security -Newest 50
☺️ Смена имени сервера Windows без простоев
Если нужно поменять имя сервера Windows, но при этом обеспечить плавную миграцию клиентов, можно добавить альтернативное имя. Это позволит временно сохранить старое имя, пока все устройства не перейдут на новое.
▪️ В Windows Server сделать это можно с помощью netdom:
netdom computername fs01 /ADD new-fs01.corpdev.loc
🔓 Как защитить SSH: правильная конфигурация
SSH - важная точка входа в систему, и её безопасность критична. Поговорим про ключевые шаги по защите о которых нужно знать и не забывать.
1️⃣ Отключаем root-доступ. Подключение под root - плохая идея. Запретим его в /etc/ssh/sshd_config:
PermitRootLogin no
Port 2222
PasswordAuthentication no
PubkeyAuthentication yes
AllowUsers user1@192.168.1.100
apt install fail2ban # Debian/Ubuntu
yum install fail2ban # CentOS/RHEL
[sshd]
enabled = true
maxretry = 3
findtime = 10m
bantime = 1h
X11Forwarding no
PermitEmptyPasswords no
systemctl restart sshd
sshd -t # Проверка конфигурации на ошибки
🖥 Как блокировать скрытые туннели в корпоративных сетях
📍 Как работают скрытые туннели? Туннелирование позволяет упаковывать запрещенный трафик в разрешенные протоколы, например:
DNS-туннели (iodine, dnscat2) – передача данных через DNS-запросы
ICMP-туннели (ptunnel, Hans) – трафик скрывается в ICMP Echo Request/Reply
HTTP/HTTPS-туннели (HTTPTunnel, tunna) – обфускация трафика через веб-запросы
TCP/UDP-туннели (sshuttle, UDP2Raw) – маскировка через стандартные порты
VPN over TLS (SoftEther, OpenVPN over TCP 443) – имитация обычного HTTPS-трафика
🖥 Docker на Windows Subsystem Linux (WSL2)
Установка Docker Engine в WSL2 позволяет использовать контейнеризацию на Windows 10 и 11 без необходимости установки Docker Desktop. Это полезно для пользователей редакций Windows Home, где Docker Desktop недоступен.
📍 Преимущества использования Docker в WSL2:
Совместимость с Windows Home: Docker Engine работает в WSL2 даже на домашних редакциях Windows.
Экономия ресурсов: Отсутствие необходимости в виртуальных машинах Hyper-V снижает потребление оперативной памяти и дискового пространства.
Отсутствие лицензионных ограничений: Docker Engine в WSL2 не требует дополнительной лицензии для коммерческого использования.
wsl --list
wsl.exe
sudo apt-get update && sudo apt-get upgrade -y
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
docker --version
docker compose version
cat /etc/wsl.conf
[boot]
systemd=true
sudo systemctl enable --now docker.service
systemctl status docker.service
docker run hello-world
🔗 Как обновляются групповые политики в Windows и как применить их немедленно
По умолчанию настройки GPO (Group Policy Objects) в Windows обновляются в следующих случаях:
📍 при загрузке компьютера,
📍 при входе пользователя в систему,
📍 и в фоновом режиме каждые 90–120 минут с небольшой случайной задержкой.
Обновление происходит только если служба Group Policy Client (gpsvc) обнаружит изменение версии политики. Номер версии хранится в файле:
<Имя_контроллера_домена>\SYSVOL\<домен>\Policies\<GUID>\gpt.ini
Invoke-GPUpdate -Computer "PC01" -RandomDelayInMinutes 0
🛡 Отказоустойчивый DNS
Надежный DNS - это основа стабильной работы инфраструктуры. Если основной DNS падает, могут лечь и внутренние сервисы, и доступ к внешним ресурсам. Один из проверенных способов построения отказоустойчивой DNS-системы - связка Bind9 (авторитетный DNS) + Unbound (рекурсивный кеширующий DNS).
🌟 Архитектура:
Bind9 отвечает за авторитетные зоны — внутренние домены, PTR-записи, сервисные SRV и т.д.
Unbound обрабатывает внешние запросы (Google, GitHub, NTP и прочее), кеширует и защищает от DNS-рекурсии.
Между ними можно использовать dnsdist для балансировки и DDoS-защиты (опционально).
Обе службы работают на разных портах (например, Bind на 1053, Unbound на 53).
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;
};
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
DNS1: 192.168.1.10
DNS2: 192.168.1.11
🔼 Тюнинг сетевого стека Linux
Настройка сетевого стека в Linux - тема специфичная и непростая. В сети полно материалов, но большинство из них просто копируют друг друга, а рекомендации часто устаревшие. Ниже актуальная на сегодня подборка параметров, которые стоит учитывать при настройке сервера. Основной акцент - на управление памятью и таймаутами. Оперативки сейчас много, так что имеет смысл использовать это преимущество.
▪️ Полезные параметры sysctl
📍 Максимум осиротевших сокетов (TCP orphans). Каждый такой сокет съедает ~64 КБ памяти. Увеличиваем лимит, если сервер мощный:
net.ipv4.tcp_max_orphans = 65536
net.ipv4.tcp_fin_timeout = 10
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
net.core.rmem_default = 851968
net.core.wmem_default = 851968
net.core.rmem_max = 12582912
net.core.wmem_max = 12582912
net.ipv4.tcp_congestion_control = cubic
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_rfc1337 = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.icmp_echo_ignore_all = 1
Параметры вроде tcp_mem, tcp_rmem, tcp_wmem зависят от объема оперативной памяти и автоматически настраиваются при загрузке. Их можно регулировать вручную при необходимости, но в большинстве случаев дефолтных значений достаточно.
⬇️ Развертывание DHCP-сервера на Linux с Kea
Если вам нужен гибкий и высокопроизводительный DHCP-сервер для управления IP-адресами в сети, стоит обратить внимание на Kea DHCP от ISC. В отличие от классического ISC DHCP, Kea предлагает:
Динамическое обновление конфигурации без перезапуска сервера
Поддержку API RESTful для управления в реальном времени
Работу с базами данных (MySQL, PostgreSQL, Cassandra)
Поддержку DHCPv4 и DHCPv6
sudo apt update && sudo apt install -y isc-kea-dhcp4-server
sudo dnf install -y epel-release
sudo dnf install -y kea
/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-серверы
sudo systemctl enable --now kea-dhcp4
sudo systemctl status kea-dhcp4
journalctl -u kea-dhcp4 --no-pager -n 50
sudo systemctl restart kea-dhcp4
cat /var/lib/kea/dhcp4.leases
dhclient -v eth0
sudo ss -tulpn | grep kea
Подключение к MySQL или PostgreSQL для хранения аренды IP
Настройка статических IP-адресов для MAC-адресов
Работа с DHCPv6 для IPv6-сетей
Динамическое управление через API RESTful
🚫 Как полностью удалить 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
rd "%UserProfile%\OneDrive" /Q /S
rd "%LocalAppData%\Microsoft\OneDrive" /Q /S
rd "%ProgramData%\Microsoft OneDrive" /Q /S
reg delete "HKEY_CURRENT_USER\Software\Microsoft\OneDrive" /f
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OneDrive" /f
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"
🗑 Microsoft: старый ПК с Windows 10 нужно утилизировать, если его невозможно обновить до Windows 11
Microsoft выпустила чек-лист по подготовке к окончанию поддержки Windows 10 - это произойдёт 14 октября 2025 года. Если кратко, то пользователей ждёт развилка из двух дорог.
Первый путь - обновление до Windows 11, если «железо» ещё тянет.
Второй - расстаться с компьютером (утилизировать), если он не соответствует требованиям новой ОС.
---
Приму в дар вашу технику, не соответствующую новым требованиям Microsoft 😁
🧑💻 NetworkAdmin
🫂 Совместная работа в терминалеscreen - отличная утилита для работы в Linux, особенно если хочется сохранить SSH-сессию при разрыве соединения. Но кроме этого, её можно использовать для совместной работы в одной консоли, как аналог TeamViewer/AnyDesk, но для терминала.
▪️ Совместная сессия для одного пользователя. Если два пользователя подключены под одной учетной записью, можно создать общую сессию:
screen -d -m -S shared
screen -x shared
chmod u+s $(which screen)
chmod 755 /var/run/screen
rm -fr /var/run/screen/*
screen -d -m -S shared
screen -r shared
Ctrl-a :multiuser on
Ctrl-a :acladd zerox
screen -x root/shared
Ctrl-a :writelock on
⌛️ Автозапуск сервисов в systemd при сбоях
В systemd есть встроенный механизм автоматического перезапуска сервисов при их падении. Управляется это параметром Restart в разделе [Service] unit-файла.
📌 Основные значения Restart
always - перезапуск всегда (даже при корректном завершении)
on-success – только если сервис завершился без ошибок
on-failure – при ошибках или принудительном завершении (SIGKILL, timeout)
on-abnormal – при завершении сигналом или зависании
on-abort – если сервис был принудительно завершён
on-watchdog – при срабатывании watchdog timeout
no – автозапуск отключен (значение по умолчанию)
mkdir -p /etc/systemd/system/nginx.service.d
nano /etc/systemd/system/nginx.service.d/override.conf
[Service]
Restart=always
RestartSec=5s
systemctl daemon-reload
systemctl status nginx
kill -9 <PID>
systemctl status nginx
[Unit]
OnFailure=your-notify-script.service
- Сыграл бы?
- Играл бы каждый день!
#юмор
🧑💻 NetworkAdmin
📁 Инструмент для бэкапов и миграции Linux-систем
Relax and Recover (ReaR) – бесплатная утилита для создания резервных копий серверов и виртуальных машин с возможностью восстановления через загрузочный ISO. Работает с NFS, SMB, RSYNC или локальными носителями.
⬇️ Установка в Debian
apt install rear genisoimage syslinux nfs-common
OUTPUT=ISO
OUTPUT_URL=nfs://192.168.22.23/backup
BACKUP=NETFS
BACKUP_URL=nfs://192.168.22.23/backup
BACKUP_PROG_EXCLUDE=("${BACKUP_PROG_EXCLUDE[@]}" '/media' '/var/crash')
rear -v -d mkbackup
rear -v -d recover
Работает без остановки сервера
Учитывает разницу гипервизоров (автоматически обновляет настройки сети)
Не требует дополнительных агентов и перезагрузок
Используется OpenStack и Red Hat OpenStack Platform