Почему я запустил Нейтрино
Всё началось с простой задачи: сделать стабильное защищённое соединение для домашних устройств. Одно поднял для себя пару лет назад, разобрался, прописал маршруты. Потом то же самое попросил брат, потом коллега, потом друг, которому нужен был доступ к рабочей почте из отпуска.
К весне я заводил такие подключения вручную человек пятнадцати. Каждому свой ключ, каждому объясни, как поставить клиент. Я сетевой инженер, мне это несложно, но в какой-то момент поймал себя на мысли, что веду маленькую инфраструктуру на коленке и трачу на это все выходные. Тогда и появилась идея собрать всё нормально и заодно записывать, как оно устроено внутри.
Почему Reality, а не WireGuard
WireGuard я люблю: быстрый и аккуратный протокол. Но мне было интересно разобраться с транспортом, который строится на настоящем TLS. Reality проводит обычное TLS-рукопожатие с реальным крупным сайтом, и дальше соединение идёт как стандартная HTTPS-сессия. Никакой самодельной криптографии. Хотелось понять на практике, как такой транспорт ведёт себя и где у него пределы.
Мобильный интернет — отдельная задача
На сотовой сети часть сетевых решений начинает захлёбываться: теряются пакеты, скачет задержка, а протоколы поверх TCP принимают потери за перегрузку и сбрасывают скорость. Видео встаёт, страницы грузятся по полминуты.
Для таких условий я добавил Hysteria2. Он работает поверх UDP и управляет отдачей сам: не путает потерю с затором, а продавливает данные дальше. На стабильном канале разницы нет, на дёрганой мобильной заметно ровнее.
Узлы и запас прочности
Серверы держу в Европе и в США. Падает один узел — переключение на соседний это одна кнопка в клиенте. За этим стоит обычная инженерная рутина: мониторинг, резервные узлы, перезапуски в три часа ночи. Она и превращает «работает у меня» в то, на что можно положиться.
Откуда название
Нейтрино — частица, которая почти не взаимодействует с веществом и проходит сквозь него насквозь. Мне понравилась эта физика, плюс короткое запоминающееся имя. Так и назвал.
Зачем этот дневник
Это первая запись дневника. Дальше буду рассказывать о серверной инфраструктуре, протоколах, ошибках эксплуатации и развитии проекта.
Нейтрино