WireGuard: несколько пиров и живой NAT

В конфиге WireGuard с одним пиром AllowedIPs легко принять за обычный allow-list — какие адреса пустить через туннель. Как только пиров становится несколько, выясняется, что это ещё и таблица маршрутизации: ядро смотрит на AllowedIPs каждого пира и решает, какому из них отправить исходящий пакет, по той же логике longest-prefix-match, что и обычный роутинг. [Interface] PrivateKey = <приватный ключ сервера> ListenPort = 51820 [Peer] PublicKey = <публичный ключ клиента1> AllowedIPs = 10.192.122.3/32, 10.192.124.0/24 [Peer] PublicKey = <публичный ключ клиента2> AllowedIPs = 10.192.122.4/32, 192.168.0.0/16 Если диапазоны двух пиров пересекаются, сервер отдаст пакет тому, у кого совпадение точнее (более узкая маска), а не тому, кто добавлен раньше в конфиг. На практике это всплывает, когда забыли сузить AllowedIPs второго клиента, и его широкий 192.168.0.0/16 неожиданно перетягивает трафик, который должен был уйти по более специфичному маршруту первого. ...

October 13, 2026 · llexa

ethtool: диагностика сетевой карты без похода в BIOS

ethtool — первое, что стоит запустить, когда интерфейс “вроде работает, но как-то медленно”. Голый вызов без флагов показывает текущий режим линка: ethtool eth0 В выводе важны три строки: Speed (реальная согласованная скорость — не всегда совпадает с паспортной скоростью карты), Duplex (full/half — half duplex на современной проводной сети почти всегда означает проблему согласования) и Link detected: yes/no (физически ли подключен кабель, независимо от того, что показывает ip link). ...

October 12, 2026 · llexa

tc: ограничиваем скорость интерфейса из командной строки

tc из пакета iproute2 управляет qdisc (queueing discipline) интерфейса — очередью, через которую проходит исходящий трафик перед отправкой в сеть. По умолчанию на большинстве интерфейсов стоит pfifo_fast — обычная очередь без ограничений, пакеты уходят так быстро, как успевает железо. ...

October 12, 2026 · llexa

Rust-утилиты #2: bat вместо cat

Продолжаем серию про утилиты, которые переписали классику GNU на Rust. После ls — очередь cat. bat делает то же самое, только красит вывод по языку файла и добавляет рамку с номерами строк и именем файла. ...

October 11, 2026 · llexa

acme.sh: ACME-клиент без единой строчки на Python

certbot тянет за собой интерпретатор Python и набор pip-пакетов — на обычном сервере это не проблема, но на урезанном образе, роутере с OpenWRT или в минимальном Docker-контейнере без python3 установка такого клиента превращается в отдельный квест. acme.sh написан целиком на POSIX shell — работает под bash, dash, busybox ash, не требует ничего, кроме curl или wget и стандартных утилит, которые есть почти в любом дистрибутиве по умолчанию. Устанавливается сам в ~/.acme.sh одной командой и не требует root: ...

October 9, 2026 · llexa

FUSE #7: archivemount — монтируем архив как файловую систему

sshfs монтирует удалённую папку, gocryptfs — зашифрованный контейнер, mergerfs — несколько дисков разом. archivemount монтирует сам файл архива: .tar.gz, .zip, .cpio, ISO9660-образ — и внутри точки монтирования это обычное дерево каталогов, без распаковки на диск и без tar xf во временную папку. ...

October 9, 2026 · llexa

Обзор новинок #13: релизы начала октября

Снова терминальный стек — на этот раз без громких новых фич, зато с полезными починками. ripgrep — замена grep с параллельным обходом и уважением .gitignore из коробки. В 15.2.0 поправлен разбор gitignore-паттернов, ускорен обход больших деревьев каталогов, добавлены сборки под aarch64-unknown-linux-musl, и теперь учитываются переменные GIT_CONFIG_GLOBAL/GIT_CONFIG_SYSTEM — если в них переопределён путь к .gitignore-подобным файлам, rg это больше не игнорирует fzf — fuzzy-поиск по списку прямо в терминале, база для кастомных виджетов bash/zsh. В 0.64.0 новое событие multi, срабатывающее при изменении множественного выбора, нормализация полноширинных/полуширинных алфавитно-цифровых символов в ASCII (меньше промахов при поиске на смешанной раскладке), действие clear-selection переименовано в clear-multi, и фикс потери multi-selection вместе с багом порядка обновления при использовании --exclude/change-nth ...

October 9, 2026 · llexa

Consul: первое знакомство — service discovery и KV за пять команд

Consul от HashiCorp решает задачу, которая в небольшой инфраструктуре обычно закрыта руками — “какой адрес у сервиса X прямо сейчас” и “где лежит этот конфиг, пока он не доехал до всех нод”. Сам Consul — это распределённый каталог сервисов с health-check’ами плюс встроенное KV-хранилище, и оба механизма доступны уже в режиме для локального теста. ...

October 8, 2026 · llexa

dmidecode: что сервер знает сам о себе

dmidecode берёт информацию не через опрос устройств, а напрямую из таблиц DMI/SMBIOS, которые прошивка платы заполняет при старте и оставляет в памяти. Поэтому это не инвентаризация шин вроде lspci/lsusb — это то, что сама материнская плата знает о себе и о том, что в неё воткнуто, включая слоты, в которые ничего не вставлено. ...

October 8, 2026 · llexa

Архиваторы #9: brotli — сжатие, заточенное под веб

brotli Google делала не как ещё один универсальный архиватор, а конкретно под HTTP-ответы — отсюда главное отличие от zstd и gzip: встроенный статический словарь примерно на 122 КБ, порядка 13 с половиной тысяч слов и фраз из HTML, JS и нескольких живых языков (включая русский). zstd и gzip строят словарь с нуля по ходу сжатия конкретного файла, brotli же стартует с готовым набором типичных для веба последовательностей — на маленьких текстовых файлах это даёт заметную фору, которую окно скользящего сжатия само наверстать не успевает. ...

October 8, 2026 · llexa