MTR: полезные флаги для продвинутой диагностики
mtr 0 больше, чем traceroute. Вот флаги, которые помогут точнее проверять маршруты и обходить блокировки:
-T --port
TCP вместо ICMP, тест сервисов и обход firewall.
--interval, --timeout
Настройка частоты и таймаута запросов при высоких задержках.
--report, --report-cycles
Создание итогового отчёта, удобно для логов и скриптов.
--json, --csv
Вывод в машинно-читаемом формате для парсинга.
--aslookup
Показывает номера автономных систем (AS) на пути, полезно для BGP.
--mpls
Показывает MPLS-метки, если используются.
-n, --no-dns
Вывод только IP без DNS-задержек.
Пример: трассировка через TCP 443, в JSON, без DNS:
#learn
mtr 0 больше, чем traceroute. Вот флаги, которые помогут точнее проверять маршруты и обходить блокировки:
-T --port
TCP вместо ICMP, тест сервисов и обход firewall.
mtr -T --port 443 vpn.example.com
--interval, --timeout
Настройка частоты и таймаута запросов при высоких задержках.
mtr --interval 2 --timeout 10 --report 1.1.1.1
--report, --report-cycles
Создание итогового отчёта, удобно для логов и скриптов.
mtr --report --report-cycles 20 example.com
--json, --csv
Вывод в машинно-читаемом формате для парсинга.
mtr --json 8.8.8.8 > result.json
--aslookup
Показывает номера автономных систем (AS) на пути, полезно для BGP.
mtr --aslookup --report example.com
--mpls
Показывает MPLS-метки, если используются.
mtr --mpls --report example.com
-n, --no-dns
Вывод только IP без DNS-задержек.
mtr -n --report 1.1.1.1
Пример: трассировка через TCP 443, в JSON, без DNS:
mtr -T --port 443 -n --json --report-cycles 15 1.1.1.1
#learn
KDE Plasma 6.8 полностью переходит на Wayland
KDE Plasma 6.8 полностью переходит на Wayland. Поддержка X11 будет убрана, но приложения под X11 продолжат работать через Xwayland. По данным телеметрии, около 73 % пользователей уже используют Wayland. Переход позволит ускорить разработку, оптимизировать код и добавить новые функции. Поддержка X11 сохранится до конца жизненного цикла версии 6.7.
Источник
#news
KDE Plasma 6.8 полностью переходит на Wayland. Поддержка X11 будет убрана, но приложения под X11 продолжат работать через Xwayland. По данным телеметрии, около 73 % пользователей уже используют Wayland. Переход позволит ускорить разработку, оптимизировать код и добавить новые функции. Поддержка X11 сохранится до конца жизненного цикла версии 6.7.
Источник
#news
🎉2
Linux: как поднять удалённый файл, если его всё ещё держит процесс
Редкий, но очень полезный приём: достать удалённый файл напрямую из работающего процесса, даже когда его уже нет на диске и нет резервных копий.
Если конфиг или лог случайно удалили, но служба не перезапускалась, содержимое можно извлечь из открытого дескриптора.
Определяем PID нужной службы (пример: nginx):
Проверяем, какие открытые файлы процесса помечены как удалённые:
Копируем нужный дескриптор в новый файл:
Получится точная копия того, что процесс держит в памяти.
#learn
Редкий, но очень полезный приём: достать удалённый файл напрямую из работающего процесса, даже когда его уже нет на диске и нет резервных копий.
Если конфиг или лог случайно удалили, но служба не перезапускалась, содержимое можно извлечь из открытого дескриптора.
Определяем PID нужной службы (пример: nginx):
pidof nginx
Проверяем, какие открытые файлы процесса помечены как удалённые:
ls -l /proc/<PID>/fd | grep '(deleted)'
Копируем нужный дескриптор в новый файл:
cp /proc/<PID>/fd/<fd_number> ./recovered.log
Получится точная копия того, что процесс держит в памяти.
#learn
Linux: xxd - быстрый разбор любого файла в hex
xxd превращает любой файл в шестнадцатеричный дамп и обратно. Удобно, когда нужно проверить структуру бинарника, увидеть заголовок, сравнить данные или отладить сетевые пакеты.
Утилита входит в пакет Vim, есть почти везде. Отличный инструмент для быстрой диагностики, когда нужно понять, что внутри файла без лишних инструментов.
#learn
xxd превращает любой файл в шестнадцатеричный дамп и обратно. Удобно, когда нужно проверить структуру бинарника, увидеть заголовок, сравнить данные или отладить сетевые пакеты.
xxd file.txt - показывает hex и ASCII справа.xxd -l 256 file.bin - выводит только первые 256 байт.xxd -r dump.hex > original.bin - восстанавливает файл из дампа.Утилита входит в пакет Vim, есть почти везде. Отличный инструмент для быстрой диагностики, когда нужно понять, что внутри файла без лишних инструментов.
#learn
Удобный прием для диагностики bash-скриптов
Когда сценарий начинает работать некорректно, обычно нужно выяснить, какая инструкция выполнилась последней и какие значения получили переменные. Вместо бесконечного добавления echo можно воспользоваться встроенной возможностью bash -
Если разместить
Пример: создание резервной копии
Напишем минимальный скрипт, который проверяет существование файла и переносит его в каталог для бэкапов:
Вывод терминала:
Видно каждое выполненное действие: какие значения получили переменные, как сработал вызов date, в какой путь был сохранен файл.
#learn
Когда сценарий начинает работать некорректно, обычно нужно выяснить, какая инструкция выполнилась последней и какие значения получили переменные. Вместо бесконечного добавления echo можно воспользоваться встроенной возможностью bash -
set -x.Если разместить
set -x в начале файла, оболочка начнет выводить в терминал каждую исполняемую строку вместе с подставленными параметрами. Перед выводом будет стоять знак +, что упрощает анализ.Пример: создание резервной копии
Напишем минимальный скрипт, который проверяет существование файла и переносит его в каталог для бэкапов:
#!/bin/bash
set -x
src="/etc/hosts"
dst="/tmp/backup"
mkdir -p "$dst"
timestamp=$(date +%Y%m%d_%H%M%S)
cp "$src" "$dst/hosts_$timestamp"
echo "Backup created: $dst/hosts_$timestamp"
Вывод терминала:
# ./backup.sh
+ src=/etc/hosts
+ dst=/tmp/backup
+ mkdir -p /tmp/backup
+ date +%Y%m%d_%H%M%S
+ timestamp=20251007_121330
+ cp /etc/hosts /tmp/backup/hosts_20251007_121330
+ echo 'Backup created: /tmp/backup/hosts_20251007_121330'
Backup created: /tmp/backup/hosts_20251007_121330
Видно каждое выполненное действие: какие значения получили переменные, как сработал вызов date, в какой путь был сохранен файл.
#learn
Nginx и SSH на одном порту
Разбираем схему, где SSH и HTTPS работают через порт 443 одновременно. HTTPS продолжает функционировать как обычно, а SSH становится доступен на том же порту. Решение основано на переменной
Исходные данные
Есть сервер с двумя IP:
1) 1.1.1.1 - используется для stream
2) 2.2.2.2 - на нем работают сайты по HTTPS
SSH-сервис слушает порт 22022. В итоге конфигурация выглядит так:
Как это работает
Мы объявили два backend-а: ssh и web. Далее через map и
При начале соединения Nginx анализирует протокол:
1) если определяется TLSv1.2, запрос уходит в web upstream
2) если TLS или SSL отсутствует, соединение направляется в ssh
3) в остальных случаях используется 2.2.2.2:443 по умолчанию
Блок stream слушает 1.1.1.1:443. После проверки конфига (nginx -t) и перезапуска можно тестировать.
Проверка
Открытие в браузере:
Подключение по SSH:
Итог
В результате SSH становится доступен через порт 443 без нарушения работы HTTPS. Простое и практичное решение для обхода сетевых ограничений.
#learn
Разбираем схему, где SSH и HTTPS работают через порт 443 одновременно. HTTPS продолжает функционировать как обычно, а SSH становится доступен на том же порту. Решение основано на переменной
$ssl_preread_protocol, появившейся в Nginx версии 1.15.2.Исходные данные
Есть сервер с двумя IP:
1) 1.1.1.1 - используется для stream
2) 2.2.2.2 - на нем работают сайты по HTTPS
SSH-сервис слушает порт 22022. В итоге конфигурация выглядит так:
stream {
upstream ssh {
server 2.2.2.2:22022;
}
upstream web {
server 2.2.2.2:443;
}
map $ssl_preread_protocol $upstream {
"" ssh;
"TLSv1.2" web;
default 2.2.2.2:443;
}
server {
listen 1.1.1.1:443;
proxy_pass $upstream;
ssl_preread on;
}
}
http {Как это работает
Мы объявили два backend-а: ssh и web. Далее через map и
$ssl_preread_protocol описываем логику маршрутизации трафика.При начале соединения Nginx анализирует протокол:
1) если определяется TLSv1.2, запрос уходит в web upstream
2) если TLS или SSL отсутствует, соединение направляется в ssh
3) в остальных случаях используется 2.2.2.2:443 по умолчанию
Блок stream слушает 1.1.1.1:443. После проверки конфига (nginx -t) и перезапуска можно тестировать.
Проверка
Открытие в браузере:
https://1.1.1.1 - ведет на HTTPS-сайтПодключение по SSH:
$ ssh root@1.1.1.1 -p443
Enter passphrase for key "/home/user/.ssh/id_rsa":
Итог
В результате SSH становится доступен через порт 443 без нарушения работы HTTPS. Простое и практичное решение для обхода сетевых ограничений.
#learn
LinkChecker
Нужно проверить сайт или документацию на битые ссылки? LinkChecker делает это автоматически и без ручной возни.
Что умеет:
1)проверяет внутренние и внешние ссылки
2)рекурсивно обходит каталоги
3)работает с HTML, XHTML, CSS и другими форматами
4)показывает отчет с ошибками и редиректами
Проверка всех ссылок в каталоге:
Проверка только внешних ссылок:
Если есть проблемы, утилита выведет список ссылок и HTTP-коды ошибок, например 404.
#utility
Нужно проверить сайт или документацию на битые ссылки? LinkChecker делает это автоматически и без ручной возни.
Что умеет:
1)проверяет внутренние и внешние ссылки
2)рекурсивно обходит каталоги
3)работает с HTML, XHTML, CSS и другими форматами
4)показывает отчет с ошибками и редиректами
apt install linkchecker -y
Проверка всех ссылок в каталоге:
linkchecker dir/
Проверка только внешних ссылок:
linkchecker --check-extern dir/
Если есть проблемы, утилита выведет список ссылок и HTTP-коды ошибок, например 404.
#utility
Forwarded from Типичный Сисадмин
Notepad++ мог скачать малварь через апдейтер 😱
Разработчики Notepad++ экстренно выкатили версию 8.8.9, выяснилось, что механизм автообновления редактора (тот самый
Апдейтер стучится за обновлением, но из-за отсутствия нормальной криптографической проверки перенаправляется на вредоносный сервер. В итоге в папку
В новой версии 8.8.9 наконец-то прикрутили жесткую проверку цифровой подписи установщика, так что теперь, если подпись не сойдется, обновление прервется.
Типичный🥸 Сисадмин
Разработчики Notepad++ экстренно выкатили версию 8.8.9, выяснилось, что механизм автообновления редактора (тот самый
GUP.exe) годами толком не проверял подлинность скачиваемых файлов. Этим воспользовались хацкеры, которые начали перехватывать трафик апдейтера и подсовывать пользователям вместо новой версии редактора троян.Апдейтер стучится за обновлением, но из-за отсутствия нормальной криптографической проверки перенаправляется на вредоносный сервер. В итоге в папку
%TEMP% прилетает файл AutoUpdater.exe, который вместо патча начинает активно собирать инфу о системе... запускает netstat, systeminfo, tasklist и whoami. Собранные данные потом сливаются на публичный файлообменник temp.sh через системный curl.В новой версии 8.8.9 наконец-то прикрутили жесткую проверку цифровой подписи установщика, так что теперь, если подпись не сойдется, обновление прервется.
Типичный
Please open Telegram to view this post
VIEW IN TELEGRAM
Bash-скрипт для быстрой проверки доступности узлов и сервисов.
Скрипт использует утилиту ping для определения, отвечает ли указанный IP-адрес или hostname.
Легко модифицируется под собственные задачи.
Подходит для оперативной проверки доступности веб-сервера, VPS, сетевого оборудования или любого другого узла. Достаточно указать адрес - скрипт сообщит, есть ли ответ или нет.
#learn
Скрипт использует утилиту ping для определения, отвечает ли указанный IP-адрес или hostname.
#!/bin/bash
# Request IP address or hostname from user
read -p "Specify IP address or hostname: " ip
# Send one ICMP request with timeout
if ping -c 1 -W 2 "$ip" &> /dev/null
then
echo "[OK] Host $ip is responding"
else
echo "[ERROR] Host $ip is not reachable"
fi
Легко модифицируется под собственные задачи.
Подходит для оперативной проверки доступности веб-сервера, VPS, сетевого оборудования или любого другого узла. Достаточно указать адрес - скрипт сообщит, есть ли ответ или нет.
#learn
Forwarded from Типичный Сисадмин
В западных интернетах на полном серьезе обсуждают, что 2025 год стал годом Linux на десктопе, потому что Windows стала слишком дорогой и переходит на подписки. Нам, конечно, не то пальто читать про дороговизну софта, который активируется одной командой в PowerShell (спасибо KMSAuto и MAS
Проблема современной Windows у нас не в том, что ее нельзя напрямую купить (кому надо - тот купит на торрентах), а в том, что она превратилась в разжиревшего шпиона. 41 уязвимость нулевого дня за год это цветочки. Ягодки это Microsoft Recall и Copilot, которые невозможно нормально выпилить. Раньше мы боролись с телеметрией правкой реестра, а теперь ОС буквально скринит твой рабочий стол и отправляет данные для анализа в облако, к которому даже доступа официального нет. Плюс искусственное устаревание железа... Windows 11 плюет в лицо владельцам вполне бодрых процессоров 3-5 летней давности, которые в текущих экономических реалиях менять никто не собирается.
В итоге мы пришли к парадоксальной ситуации. В корпоративном секторе нас пересаживают на Astra и RedOS (Debian/RHEL с нюансами), а дома люди потихоньку уходят на Linux. Windows превращается в терминал для показа рекламы и сбора данных, и даже народная лицензия
Даже пиратская Windows становится невыносимой
Типичный
Please open Telegram to view this post
VIEW IN TELEGRAM
💯3
Краткая памятка по tcpdump.
Снятие трафика конкретного сервиса (порт 443)
Фиксируется только нужное соединение. Подходит для разбора SYN, RST и сетевых задержек.
Отлов SNI (когда сайт открывается нестабильно)
Отображает фактический SNI, который отправляет клиент. Критично при диагностике SSL.
DNS и типовые ошибки (NXDOMAIN / SERVFAIL)
Все DNS-запросы:
Только ошибки:
Поиск оборванных TCP-сессий (RST)
Полезно, когда соединение обрывается без очевидных причин.
Проверка асимметрии трафика или ECMP
Позволяет увидеть только попытки установления соединений.
Снятие трафика вокруг конкретного хоста
Минимальный дамп строго по одному IP.
Ротация дампов (чтобы не положить диск)
#learn
-nn - отключаем DNS-резолвинг.-i - сетевой интерфейс - всегда указывай текущий, а не оставляй по умолчанию.Снятие трафика конкретного сервиса (порт 443)
tcpdump -nn -i eth0 tcp port 443 -w /tmp/api443.pcap
Фиксируется только нужное соединение. Подходит для разбора SYN, RST и сетевых задержек.
Отлов SNI (когда сайт открывается нестабильно)
tcpdump -nn -i eth0 -vvv -s 0 -A port 443 | grep -i "server_name"
Отображает фактический SNI, который отправляет клиент. Критично при диагностике SSL.
DNS и типовые ошибки (NXDOMAIN / SERVFAIL)
Все DNS-запросы:
tcpdump -nn -i eth0 udp port 53 or tcp port 53
Только ошибки:
tcpdump -nn -i eth0 -vv udp port 53 | grep -Ei "ServFail|NXDomain"
Поиск оборванных TCP-сессий (RST)
tcpdump -nn -i eth0 'tcp[tcpflags] & tcp-rst != 0'
Полезно, когда соединение обрывается без очевидных причин.
Проверка асимметрии трафика или ECMP
tcpdump -nn -i eth0 'tcp[tcpflags] == tcp-syn'
Позволяет увидеть только попытки установления соединений.
Снятие трафика вокруг конкретного хоста
tcpdump -nn -i eth0 host 10.10.22.15 -w /tmp/host.pcap
Минимальный дамп строго по одному IP.
Ротация дампов (чтобы не положить диск)
tcpdump -nn -i eth0 -s 0 -w trace-%F-%H%M%S.pcap -G 60 -W 5
#learn
👍1
Подстановка последнего аргумента без копипасты
Сколько раз было так: выполнили команду вида
а через пару секунд понадобилось:
Можно не повторять. Bash уже помнит последний аргумент.
В любой момент нажмите
Результат:
Нажимайте Alt + . несколько раз подряд, чтобы перебрать аргументы из истории - bash листает их назад.
Альтернатива через history:
То же самое, но в виде подстановки из истории:
Практические примеры
Удалить каталог, который только что создали:
Скопировали и сразу перешли внутрь:
Переместили файл и тут же открыли его:
Копирование в несколько мест подряд:
Меньше ручного ввода, меньше опечаток, выше скорость работы в shell.
#learn
Сколько раз было так: выполнили команду вида
cp report.txt /var/tmp/workdir/
а через пару секунд понадобилось:
cd /var/tmp/workdir/
Можно не повторять. Bash уже помнит последний аргумент.
Alt + . - вставка последнего аргументаВ любой момент нажмите
Alt + . и bash подставит последний аргумент из предыдущей команды.cp report.txt /var/tmp/workdir/
cd <Alt+.>
Результат:
cd /var/tmp/workdir/
Нажимайте Alt + . несколько раз подряд, чтобы перебрать аргументы из истории - bash листает их назад.
Альтернатива через history:
!$ и !.То же самое, но в виде подстановки из истории:
cd !$
или
cd !.
!$ - последний аргумент предыдущей команды.!. - тот же эффект, но безопаснее, так как разные шеллы могут по-разному интерпретировать $.Практические примеры
Удалить каталог, который только что создали:
mkdir cache_dir
rm -r !$
Скопировали и сразу перешли внутрь:
cp -r app_source /srv/apps/
cd !$
Переместили файл и тут же открыли его:
mv access.log /var/log/old/
vim !$
Копирование в несколько мест подряд:
cp archive.tar.zst /mnt/storage/
cp !$ /srv/archives/
Меньше ручного ввода, меньше опечаток, выше скорость работы в shell.
#learn
Forwarded from Типичный Сисадмин
Есть такой бородатый анекдот про то, что Windows скоро превратится в загрузчик для браузера. В 2025 году это перестало быть шуткой. Брендан Айк, человек-легенда, создавший язык JavaScript и основавший Mozilla/Brave, публично раскритиковал Microsoft за тотальное засилье веб-технологий в десктопной ОС. По его словам, главная проблема Windows 11 - это банальная лень разработчиков, которые вместо нативного кода везде пихают жирный WebView2 и Electron. Айк знает, о чем говорит, т.к. он видел смерть FirefoxOS, которая тоже пыталась строить интерфейс на вебе.
Ситуация и правда патовая. Microsoft ($3.5 трлн капитализации) не может написать нативный календарь. Новая панель виджетов в Windows 11 это просто веб-страницы. Вы нажимаете на часы в трее, а система в фоне спавнит процессы Edge, отжирая 100+ МБ оперативки ради отображения даты. Зеленый мессенджер недавно деградировал с нативного WinUI обратно на WebView2, и теперь в простое отъедает гигабайт памяти. Teams туда же.
Но чемпионом по оптимизации
Айк справедливо заметил, что Web UX можно сделать хорошо, но это требует времени и прямых рук. А у современного БигТеча нет ни того, ни другого. Им проще завернуть сайт в exe-шник, заставить пользователя купить 64 ГБ RAM и назвать это современным экспириенсом. Когда даже создатель технологии говорит "остановитесь, вы делаете дичь", это, пожалуй, приговор всей индустрии
Типичный
Please open Telegram to view this post
VIEW IN TELEGRAM
Минимальный P2P-чат через Netcat
Никакой магии, только Bash и TCP.
Wiki: Netcat
Клиентская сторона
Пишем элементарный Bash-скрипт.
Создаем файл talker.sh
Выдаём права:
Сторона приема
На принимающем узле ничего городить не нужно.
Просто поднимаем прослушивание порта:
Порт может быть любым, главное чтобы он был открыт в фаерволе и использовался TCP.
Как это выглядит вживую
Терминал отправителя:
Терминал принимающей стороны:
Итого:
простейший P2P-чат, который поднимается за минуту и отлично подходит для тестов сети, обучения или просто поиграться с nc.
#learn
Никакой магии, только Bash и TCP.
Wiki: Netcat
Клиентская сторона
Пишем элементарный Bash-скрипт.
Создаем файл talker.sh
#!/bin/bash
# Отображаемое имя
NICKNAME="$1"
REMOTE_HOST="$2"
REMOTE_PORT="$3"
# Читаем ввод и добавляем подпись
(
while read text; do
echo "[$NICKNAME] $text"
done
) | nc "$REMOTE_HOST" "$REMOTE_PORT"
Выдаём права:
chmod +x talker.sh
Сторона приема
На принимающем узле ничего городить не нужно.
Просто поднимаем прослушивание порта:
nc -lvp 5201
Порт может быть любым, главное чтобы он был открыт в фаерволе и использовался TCP.
Как это выглядит вживую
Терминал отправителя:
./talker.sh alpha 172.16.16.30 5201
Привет всем
Как связь?
Терминал принимающей стороны:
nc -lvp 5201
Listening on 0.0.0.0 5201
Connection received on 172.16.16.31 46656
[alpha] Привет всем
[alpha] Как связь?
Итого:
простейший P2P-чат, который поднимается за минуту и отлично подходит для тестов сети, обучения или просто поиграться с nc.
#learn
Всех с НГ :)
А я продолжу смотреть в мониторинг, и надеяться на спокойную работу, и нормальный аптайм моих серверов.
#meme
А я продолжу смотреть в мониторинг, и надеяться на спокойную работу, и нормальный аптайм моих серверов.
#meme
🎉4