SB Live + kx project - память ёкнула. У меня тогда дома стоял сервер на P3-1000, а на десктопе как раз эта связка. ASIO с минимальной задержкой на копеечной карте - для своего времени казалось магией.
С pipewire вообще другая жизнь началась. Раньше JACK с pulse-jack ставился ритуальным танцем, конфиг под каждую звуковуху подкручивался отдельно, и при переключении устройств всё равно что-то отваливалось. Сейчас на 26.04 воткнул USB-карту - и она появилась в списке. Без танцев.
За напоминание про FireWire отдельное спасибо. У меня где-то в коробке Edirol валяется, теперь как-то жалко стало.
Для Restic есть resticprofile - TOML/YAML конфиги, профили под разные репозитории, хуки до/после, расписание через systemd. По духу почти то же, что borgmatic для Borg.
У меня связка restic + rclone: restic делает шифрованные снапшоты в локальный репозиторий на отдельном диске, дальше rclone льёт это в холодный S3. Получается 3-2-1 на колене, без отдельного backup-сервера.
К списку добавил бы pgBackRest для PostgreSQL - умеет инкременты по WAL и параллельное восстановление. Когда база переваливает за сотню гигабайт, разница с pg_dump на восстановлении ощутимая.
И ещё, что часто пропускают в таких подборках: бэкап без регулярной проверки восстановления - это лотерея. У меня раз в квартал в крон стоит задача поднять последний снапшот в чистый VPS и убедиться, что приложение стартует. Без этого однажды узнаёшь, что восстановления нет - как раз когда оно нужно.
Уважение за то, что написали. Большинство в такой ситуации тихо ругают себя и никому не рассказывают. Пост же реально кого-то спасёт.
Самое противное в этих многошаговых разводках - что каждое отдельное действие звучит почти логично: запись разговора, поставить приложение, зайти в аккаунт. Подмену замечаешь уже постфактум.
Одно правило у меня прижилось намертво: если по телефону просят поставить что-то на устройство или показать камере экран - стоп, без вариантов, кто бы ни звонил.
Хорошее дополнение к Методу 1: если речь про AmneziaWG (популярный WG-форк с обфускацией junk-пакетами), важно понимать его место в этой картине.
AWG пробивает ТСПУ в обычном режиме (фингерпринт WG-handshake перестаёт быть распознаваемым → шейпинг на мобильных операторах не срабатывает). А вот в режиме БС, где L3-фильтр блокирует пакеты по dst IP ещё до DPI, обфускация на L7 не помогает. Сервер AWG с IP не из белого списка — недоступен так же, как обычный WG.
То есть AWG имеет смысл сочетать с твоей рекомендацией про VPS в whitelisted ASN: Yandex/Timeweb/Selectel. Тогда L3 пропускает пакеты до сервера, а L7-фильтрация (если оператор её включает поверх БС, что бывает) обходится обфускацией. Без размещения в БС-подсети — только VLESS+Reality остаётся.
Интересный workaround через Table=off + custom systemd-юнит. Для split-tunnel это рабочий способ, особенно когда маршруты меняются динамически.
Проще без Table=off: если в конфиге клиента указать конкретные AllowedIPs (в вашем примере — подсети Telegram), wg-quick по умолчанию НЕ добавляет default route и не ставит fwmark. Маршрут создастся автоматически только для указанных подсетей. Остальной трафик идёт через eth0 по умолчанию ОС, без правок systemd.
По DKMS на Debian 12/13: официальный PPA ставится через mapping bookworm→focal и trixie→noble, модуль собирается штатно. Ваш вариант через bullseye-backports + linux-5.15 валиден для Debian 11, но на новых релизах этот workaround уже не нужен.
Про ошибку “Invalid H1” в Windows-клиенте AmneziaWG — это известный баг подсветки синтаксиса в upstream-клиенте (amnezia-vpn/amneziawg-windows-client, issue #85). Подсветка ограничивает H1–H4 значением до 2147483647 (INT32), хотя спецификация AmneziaWG 2.0 — полный uint32 до 4294967295. На handshake это обычно не влияет, конфиг подключается, просто UI красным подсвечивает.
Мой installer (amneziawg-installer) с v5.8.1 от 8 апреля генерирует все H1–H4 в безопасном диапазоне (< 2^31) через битовую маску — пространство комбинаций остаётся настолько большим, что на стойкость обфускации это не сказывается. Новые конфиги через команду awg add в ошибку не попадают.
Если конфиг сгенерирован до v5.8.1, либо пересоздать (manage regen <клиент>), либо вручную привести все четыре значения H1–H4 к числам меньше 2147483647 — в серверном конфиге и во всех клиентских.
За последний месяц в issues моего скрипта для AWG 2.0 собралась довольно разнородная карта «оператор → рабочие параметры обфускации». По регионам всё неожиданно по-разному, поделюсь — вдруг сэкономит кому-то перебор.
Оказалось Jc (количество junk-пакетов перед handshake) — один из главных триггеров DPI на мобильных сетях. Яркий пример из отчёта пользователя на Tele2 в Красноярске:
Jc = 3 — handshake проходит в ~95% попыток
Jc = 4 — ~30%
Jc = 5 — меньше 5%
Плюс чувствительность к формату I1 (CPS concealment, как раз про то о чём статья). Живые кейсы из issues (оператор → рабочее I1):
Yota — binary длинный, <b 0xce...>
Beeline — дефолтный случайный <r N> работает из коробки
Tele2 Москва — binary QUIC, <b 0xc700000001>...
Tele2 Красноярск — отсутствие I1 (AWG 1.0 fallback mode)
Мегафон Москва — короткий <r 64>
Мегафон, регионы — отсутствие I1
Таттелеком LTE — <r 64> + Jc = 3
Единого I1 под всю Россию не существует — DPI у региональных веток разный. Под это добавил preset --preset=mobile (Jc=3 + узкий Jmax до 130 байт на junk) — работает на Yota/Beeline/Таттелеком из коробки. Для Tele2 Красноярск и Мегафон в регионах нужен отдельный --preset=mobile-awg1 (с пустым I1=) — уже в работе.
Интересное наблюдение: DPI оператора анализирует именно тот поток байт, который шлёт клиент, а не сервер. Handshake инициирует клиент, junk-пакеты (Jc штук) тоже уходят с его стороны. Значит серверный конфиг можно оставлять с дефолтами, а на каждом телефоне держать свой клиентский .conf под оператора — переустанавливать сервер не надо, меняется только файл на устройстве. Это сильно упрощает подбор параметров.
Сам скрипт: https://github.com/bivlked/amneziawg-installer . Bash, Ubuntu/Debian + ARM (Raspberry Pi / Oracle Cloud Ampere), MIT, состояние переживает reboot, управление клиентами через CLI.
Прилетело в Discussions amneziawg-installer: AWG-тоннель встаёт с домашнего инета, через мобильный - handshake падает. MTU поменяли - не помогло.
Полез в код. Оказалось, я в awg_common.sh четыре диапазона H1-H4 захардкодил константами - у всех, кто запускал скрипт, они были одинаковые. Готовая статическая сигнатура. ТСПУ её, судя по всему, очень быстро просто выучил и стал палить всех разом. Не AWG виноват, баг был в моей реализации.
Вчера зарелизил v5.8.0 - H1-H4 теперь рандомятся при каждой установке: 8 uint32 из /dev/urandom, sort, четыре непересекающиеся пары. У каждого сервера свой набор.
Так что да, автор прав - не волшебная кнопка. Это постоянная гонка с тем, что новое научился ловить ТСПУ. Скрипт тут только снимает первичную настройку, дальше всё равно вручную.
Собирал похожее на мини-ПК. Кто планирует VPN на таком роутере - обращайте внимание на AES-NI. У меня на ARM без него WireGuard через userspace давал около 250 Мбит, а на x86 с AES-NI — под гигабит.
Администрирую серверы, VPN для меня рабочий инструмент - корпоративный до офиса, WireGuard до мониторинга, SSH-туннели. Без этого работа просто встаёт. Интересно как на практике будут отличать «плохой» VPN от рабочего.
Хорошо сделано, особенно GeoSite через dnsmasq ipset.
В статье серверная часть подразумевается готовой - для тех кому нужно поднять сервер с нуля можно глянуть https://github.com/bivlked/amneziawg-installer. Одна команда на Ubuntu/Debian VPS, ставит AWG 2.0 с I1-I5, генерирует .conf и QR-коды. Импортируешь в этот аддон и всё работает.
Как альтернатива, если веб-панель не нужна (для дома, для семьи) или VPS совсем слабенький сервачок (дешёвый) можно глянуть https://github.com/bivlked/amneziawg-installer. Чистый bash без зависимостей, тоже AWG 2.0 с I1-I5. Есть vpn:// URI для импорта в Amnezia Client одним тапом, --expires для временных клиентов, batch add/remove. Автор - я, если что)
Похожая схема - rsync + systemd timers. Один совет: добавь проверку что бэкап реально свежий, а не просто таймер отработал. У меня скрипт проверяет дату последнего файла и алертит если старше суток. Пару раз спасало, когда rsync молча падал.
На 24.04 с ручной установкой действительно боль - PPA не всегда подтягивает нужные пакеты, заголовки ядра не совпадают. Я с этим намучился и в итоге написал свой скрипт amneziawg-installer на гитхабе. Запускаешь одну команду, он сам ставит модуль, настраивает фаервол, генерит конфиги. На 24.04 и Debian 12/13 работает стабильно, все тщательно протестировано.
AWG использует ядерный модуль (DKMS), поэтому в Docker и обычном LXC не заведётся. На VPS проще ставить напрямую. Если нужна изоляция - KVM VM, там DKMS работает штатно. Ещё есть amneziawg-go (userspace), её в контейнер загнать можно.
Насчёт сложности I1-I5 - я это автоматизировал в отдельном проекте: github.com/bivlked/amneziawg-installer. Скрипт сам генерит рандомизированные H1-H4 ranges, S3-S4, I1-I5 для QUIC-мимикрии, пользователь их вообще не видит.
Одна команда на Ubuntu 24.04/25.10 или Debian 12/13, на выходе .conf + QR + vpn:// для импорта в приложение.
Не совсем понятное для меня отношение к "семейному архиву"... То, что было снято 15 лет назад второй раз уже не снимешь! Дети выросли, бабушки/дедушки и того хуже... У тут раз так, батничек запускаешь на два дня, а потом смотришь, на сколько же гигабайтов сократился твой архив. Да я уж лучше куплю пару винтов по 10Тб и сделаю две копии. Другое дело, порыться в этом архиве, найти что-то ценное (пару десятков фото) и уже их аккуратно и вдумчиво, с привлечением современных технологий отреставрировать/поправить/улучшить и т.д. Но, конечно, у всех разное отношение к этому. И это вопрос уже не технический.
SB Live + kx project - память ёкнула. У меня тогда дома стоял сервер на P3-1000, а на десктопе как раз эта связка. ASIO с минимальной задержкой на копеечной карте - для своего времени казалось магией.
С pipewire вообще другая жизнь началась. Раньше JACK с pulse-jack ставился ритуальным танцем, конфиг под каждую звуковуху подкручивался отдельно, и при переключении устройств всё равно что-то отваливалось. Сейчас на 26.04 воткнул USB-карту - и она появилась в списке. Без танцев.
За напоминание про FireWire отдельное спасибо. У меня где-то в коробке Edirol валяется, теперь как-то жалко стало.
Для Restic есть resticprofile - TOML/YAML конфиги, профили под разные репозитории, хуки до/после, расписание через systemd. По духу почти то же, что borgmatic для Borg.
У меня связка restic + rclone: restic делает шифрованные снапшоты в локальный репозиторий на отдельном диске, дальше rclone льёт это в холодный S3. Получается 3-2-1 на колене, без отдельного backup-сервера.
К списку добавил бы pgBackRest для PostgreSQL - умеет инкременты по WAL и параллельное восстановление. Когда база переваливает за сотню гигабайт, разница с pg_dump на восстановлении ощутимая.
И ещё, что часто пропускают в таких подборках: бэкап без регулярной проверки восстановления - это лотерея. У меня раз в квартал в крон стоит задача поднять последний снапшот в чистый VPS и убедиться, что приложение стартует. Без этого однажды узнаёшь, что восстановления нет - как раз когда оно нужно.
Уважение за то, что написали. Большинство в такой ситуации тихо ругают себя и никому не рассказывают. Пост же реально кого-то спасёт.
Самое противное в этих многошаговых разводках - что каждое отдельное действие звучит почти логично: запись разговора, поставить приложение, зайти в аккаунт. Подмену замечаешь уже постфактум.
Одно правило у меня прижилось намертво: если по телефону просят поставить что-то на устройство или показать камере экран - стоп, без вариантов, кто бы ни звонил.
Хорошее дополнение к Методу 1: если речь про AmneziaWG (популярный WG-форк с обфускацией junk-пакетами), важно понимать его место в этой картине.
AWG пробивает ТСПУ в обычном режиме (фингерпринт WG-handshake перестаёт быть распознаваемым → шейпинг на мобильных операторах не срабатывает). А вот в режиме БС, где L3-фильтр блокирует пакеты по dst IP ещё до DPI, обфускация на L7 не помогает. Сервер AWG с IP не из белого списка — недоступен так же, как обычный WG.
То есть AWG имеет смысл сочетать с твоей рекомендацией про VPS в whitelisted ASN: Yandex/Timeweb/Selectel. Тогда L3 пропускает пакеты до сервера, а L7-фильтрация (если оператор её включает поверх БС, что бывает) обходится обфускацией. Без размещения в БС-подсети — только VLESS+Reality остаётся.
Интересный workaround через Table=off + custom systemd-юнит. Для split-tunnel это рабочий способ, особенно когда маршруты меняются динамически.
Проще без Table=off: если в конфиге клиента указать конкретные AllowedIPs (в вашем примере — подсети Telegram), wg-quick по умолчанию НЕ добавляет default route и не ставит fwmark. Маршрут создастся автоматически только для указанных подсетей. Остальной трафик идёт через eth0 по умолчанию ОС, без правок systemd.
По DKMS на Debian 12/13: официальный PPA ставится через mapping bookworm→focal и trixie→noble, модуль собирается штатно. Ваш вариант через bullseye-backports + linux-5.15 валиден для Debian 11, но на новых релизах этот workaround уже не нужен.
Про ошибку “Invalid H1” в Windows-клиенте AmneziaWG — это известный баг подсветки синтаксиса в upstream-клиенте (amnezia-vpn/amneziawg-windows-client, issue #85). Подсветка ограничивает H1–H4 значением до 2147483647 (INT32), хотя спецификация AmneziaWG 2.0 — полный uint32 до 4294967295. На handshake это обычно не влияет, конфиг подключается, просто UI красным подсвечивает.
Мой installer (amneziawg-installer) с v5.8.1 от 8 апреля генерирует все H1–H4 в безопасном диапазоне (< 2^31) через битовую маску — пространство комбинаций остаётся настолько большим, что на стойкость обфускации это не сказывается. Новые конфиги через команду
awg addв ошибку не попадают.Если конфиг сгенерирован до v5.8.1, либо пересоздать (
manage regen <клиент>), либо вручную привести все четыре значения H1–H4 к числам меньше 2147483647 — в серверном конфиге и во всех клиентских.github.com/bivlked/amneziawg-installer
За последний месяц в issues моего скрипта для AWG 2.0 собралась довольно разнородная карта «оператор → рабочие параметры обфускации». По регионам всё неожиданно по-разному, поделюсь — вдруг сэкономит кому-то перебор.
Оказалось
Jc(количество junk-пакетов перед handshake) — один из главных триггеров DPI на мобильных сетях. Яркий пример из отчёта пользователя на Tele2 в Красноярске:Jc = 3— handshake проходит в ~95% попытокJc = 4— ~30%Jc = 5— меньше 5%Плюс чувствительность к формату
I1(CPS concealment, как раз про то о чём статья). Живые кейсы из issues (оператор → рабочееI1):Yota — binary длинный,
<b 0xce...>Beeline — дефолтный случайный
<r N>работает из коробкиTele2 Москва — binary QUIC,
<b 0xc700000001>...Tele2 Красноярск — отсутствие
I1(AWG 1.0 fallback mode)Мегафон Москва — короткий
<r 64>Мегафон, регионы — отсутствие
I1Таттелеком LTE —
<r 64>+Jc = 3Единого
I1под всю Россию не существует — DPI у региональных веток разный. Под это добавил preset--preset=mobile(Jc=3 + узкий Jmax до 130 байт на junk) — работает на Yota/Beeline/Таттелеком из коробки. Для Tele2 Красноярск и Мегафон в регионах нужен отдельный--preset=mobile-awg1(с пустымI1=) — уже в работе.Интересное наблюдение: DPI оператора анализирует именно тот поток байт, который шлёт клиент, а не сервер. Handshake инициирует клиент, junk-пакеты (Jc штук) тоже уходят с его стороны. Значит серверный конфиг можно оставлять с дефолтами, а на каждом телефоне держать свой клиентский
.confпод оператора — переустанавливать сервер не надо, меняется только файл на устройстве. Это сильно упрощает подбор параметров.Сам скрипт: https://github.com/bivlked/amneziawg-installer . Bash, Ubuntu/Debian + ARM (Raspberry Pi / Oracle Cloud Ampere), MIT, состояние переживает reboot, управление клиентами через CLI.
Прилетело в Discussions amneziawg-installer: AWG-тоннель встаёт с домашнего инета, через мобильный - handshake падает. MTU поменяли - не помогло.
Полез в код. Оказалось, я в awg_common.sh четыре диапазона H1-H4 захардкодил константами - у всех, кто запускал скрипт, они были одинаковые. Готовая статическая сигнатура. ТСПУ её, судя по всему, очень быстро просто выучил и стал палить всех разом. Не AWG виноват, баг был в моей реализации.
Вчера зарелизил v5.8.0 - H1-H4 теперь рандомятся при каждой установке: 8 uint32 из /dev/urandom, sort, четыре непересекающиеся пары. У каждого сервера свой набор.
Так что да, автор прав - не волшебная кнопка. Это постоянная гонка с тем, что новое научился ловить ТСПУ. Скрипт тут только снимает первичную настройку, дальше всё равно вручную.
Собирал похожее на мини-ПК. Кто планирует VPN на таком роутере - обращайте внимание на AES-NI. У меня на ARM без него WireGuard через userspace давал около 250 Мбит, а на x86 с AES-NI — под гигабит.
Три месяца и ничего не сделали - странно. Обфускация которая не обновляется долго не живёт, ТСПУ давно не статичный файрвол.
Администрирую серверы, VPN для меня рабочий инструмент - корпоративный до офиса, WireGuard до мониторинга, SSH-туннели. Без этого работа просто встаёт. Интересно как на практике будут отличать «плохой» VPN от рабочего.
Хорошо сделано, особенно GeoSite через dnsmasq ipset.
В статье серверная часть подразумевается готовой - для тех кому нужно поднять сервер с нуля можно глянуть https://github.com/bivlked/amneziawg-installer. Одна команда на Ubuntu/Debian VPS, ставит AWG 2.0 с I1-I5, генерирует .conf и QR-коды. Импортируешь в этот аддон и всё работает.
Автор — я, если что)
Как альтернатива, если веб-панель не нужна (для дома, для семьи) или VPS совсем слабенький сервачок (дешёвый) можно глянуть https://github.com/bivlked/amneziawg-installer. Чистый bash без зависимостей, тоже AWG 2.0 с I1-I5. Есть vpn:// URI для импорта в Amnezia Client одним тапом, --expires для временных клиентов, batch add/remove.
Автор - я, если что)
Похожая схема - rsync + systemd timers. Один совет: добавь проверку что бэкап реально свежий, а не просто таймер отработал. У меня скрипт проверяет дату последнего файла и алертит если старше суток. Пару раз спасало, когда rsync молча падал.
если все внутри РФ, то и проблем никаких и блокировок нет. в Казахстан, кстати, тоже легче, если там сервер брать
На 24.04 с ручной установкой действительно боль - PPA не всегда подтягивает нужные пакеты, заголовки ядра не совпадают. Я с этим намучился и в итоге написал свой скрипт amneziawg-installer на гитхабе. Запускаешь одну команду, он сам ставит модуль, настраивает фаервол, генерит конфиги. На 24.04 и Debian 12/13 работает стабильно, все тщательно протестировано.
AWG использует ядерный модуль (DKMS), поэтому в Docker и обычном LXC не заведётся. На VPS проще ставить напрямую. Если нужна изоляция - KVM VM, там DKMS работает штатно. Ещё есть amneziawg-go (userspace), её в контейнер загнать можно.
Насчёт сложности I1-I5 - я это автоматизировал в отдельном проекте: github.com/bivlked/amneziawg-installer. Скрипт сам генерит рандомизированные H1-H4 ranges, S3-S4, I1-I5 для QUIC-мимикрии, пользователь их вообще не видит.
Одна команда на Ubuntu 24.04/25.10 или Debian 12/13, на выходе .conf + QR + vpn:// для импорта в приложение.
Не совсем понятное для меня отношение к "семейному архиву"... То, что было снято 15 лет назад второй раз уже не снимешь! Дети выросли, бабушки/дедушки и того хуже... У тут раз так, батничек запускаешь на два дня, а потом смотришь, на сколько же гигабайтов сократился твой архив. Да я уж лучше куплю пару винтов по 10Тб и сделаю две копии. Другое дело, порыться в этом архиве, найти что-то ценное (пару десятков фото) и уже их аккуратно и вдумчиво, с привлечением современных технологий отреставрировать/поправить/улучшить и т.д.
Но, конечно, у всех разное отношение к этому. И это вопрос уже не технический.