// личный канал‑лог
gavrilovlog
← все записи

Outline Shadowsocks (часть 1)

👁 64213
Всем привет! Хочу рассказать о своем проекте, который уже начал приносить доход. Это ВПН на базе Outline. Все началось с того, что ВПН, которым я пользовался стал очень плохо работать. А именно WireGuard, который я поднял на Hetzner Cloud. Поэтому я начал искать альтернативы и одной из таких стал Outline. Три главных плюса, которые я выделил в нем: 1. Shadowsocks под капотом. 2. Все виды клиентов под разные ОС. 3. Open Source. Это вдохновило меня поднять собственный ВПН сервис. И первое что я сделал, это склонировал репозитории Outline и начал изучать. В коде я увидел возможность создавать динамические ключи, это стало явным конкурентным преимуществом, относительно других ВПН сервисов. Потому что теперь необязательно привязывать пользователя к определенному серверу одним ключом, можно дать ему специальный динамический ключ, который в момент подключения выдает конфигурацию для сервера. Разница между статическим ключом и динамическим в том, что статический ключ начинается с префикса ss://, а динамический ключ с префикса ssconf://. В статический ключ сразу записывается IP, Port, Password, Method шифрования - это является конечно безопаснее, чем использовать динамический ключ. Однако если произойдет блокировка сервера, то всем пользователям нужно будет получить новый статический ключ для другого сервера. Если у пользователя динамический ключ, тогда конфигурацию клиент получает в момент подключения. То есть для динамического ключа вам понадобится Backend, который по GET запросу выдает ответ в формате JSON следующего вида:

{
  "method": "chacha20-ietf-poly1305",
  "password": "knQJYZSkDpR0a0GZdVLLkp",
  "server_port": 10650,
  "server": "5.13.93.134"
}
Поэтому теперь если один из серверов стал недоступен, то пользователь при переподключении подключится к другому. Продолжение в следующем посте… @knowyourbackend @kyb_chat #PetProject #Backend #DevOps
4