Обновить
64K+
12
Meshroom@meshroom

Пользователь

88
Рейтинг
6
Подписчики
Отправить сообщение

Если руками - никакой формулы там нет, я просто держу в голове несколько правил.

Первым делом выбираю MTU, а не паддинги. Потому что чем больше MTU, тем меньше места остаётся под паддинг: пакет с обвесом должен влезть в 1500 байт, и на MTU 1420 под паддинг остаётся всего байт 20, а на 1280 - все 150. Если перебрать, каждый большой пакет начнёт фрагментироваться, а это и медленно, и заметно - ровно то, от чего мы прячемся.

S1-S4 ставлю одинаковые, где-то от 15 до того потолка, что получился выше. Меньше 12 нельзя вообще - оттуда берётся nonce для шифрования заголовков. И одна ловушка: S2 не должно быть равно S1 + 56, иначе сервер не сможет отличить один тип пакета от другого. Конфиг при этом запишется без ошибок, просто хендшейк никогда не случится.

Jc беру случайное от 4 до 12, Jmin = 8, Jmax = 80 - это из документации, трогать незачем. H1-H4 оставляю 1, 2, 3, 4. В 3.x заголовок и так шифруется, снаружи его не видно, так что случайные числа там ничего не добавляют - только ещё четыре значения, которые должны совпасть у всех клиентов.

Ключ HeaderProtectionKey - openssl rand -base64 32, один на сервер, и тот же самый у всех клиентов. RandomTrailers = true тоже с обеих сторон, иначе сервер молча выкинет хендшейк. DisableCookies = true - только на своей стороне, для домашнего сервера нормально. Тайминги не трогаю вообще, дефолты WireGuard годами работают. Разве что PersistentKeepalive = "22-30", чтобы у всех не было ровно 25.

В панели github.com/mycelium-mesh/amneziawg-ui есть генератор, который под выбранный MTU сразу выдаёт правильный набор, ключ берёт откуда надо и раздаёт клиентам те же значения, так что ничего не разъедется.

Я с 2023 года ни разу не сталкивался с блокировками. Палит не недостаточно случайный Jc, а одинаковые длины пакетов и порт 51820. Убрали это - и дальше просто работает VPN. Единственное исключение - Китай. Там обфускация не помогает: гасят не протокол, а IP - соединение начинает отваливаться по таймауту и с каждым разом поднимается всё хуже. Спасают только два сервера на разных адресах, которые чередуешь: пока сидишь на одном, второй отлёживается.

По API - он там уже есть: фронтенд сам ходит только через REST, своего внутреннего протокола нет. Basic auth, и всё доступно: серверы, клиенты, старт/стоп, трафик, выдача конфигов и vpn://-ссылок,suspend/activate. Полный список эндпоинтов - в DOCS.md, раздел "Эндпоинты API". Из планов -отдельный токен вместо пароля и OpenAPI-спека, чтобы удобнее работать с tg-ботами

По каскаду - даже не думал пока что

Информация

В рейтинге
80-й
Дата рождения
Зарегистрирован
Активность

Специализация

Бэкенд разработчик, DevOps-инженер
Ведущий
PostgreSQL
Golang
Docker
Git
Linux
Kubernetes
gRPC