Динамические ключи доступа

Outline использует два типа ключей доступа: статические и динамические. В случае статического ключа доступа вся информация, необходимая для подключения к серверу, хранится в самом ключе. В случае динамического – в ключе кодируется лишь местоположение информации о подключении, что позволяет хранить ее удаленно и при необходимости изменять. Это означает, что вы можете изменять конфигурацию сервера без необходимости создавать и распространять новые ключи среди пользователей. В этом руководстве описывается, как применять динамические ключи доступа для более удобного и эффективного управления сервером Outline.

Вы можете указывать информацию о доступе для динамических ключей в одном из описанных ниже форматов.

Для клиента Outline 1.8.1 или более поздних версий

Вы можете использовать уже существующую ссылку ss://. Этот способ подходит, если вам не требуется часто менять сервер, порт или метод шифрования, но важно сохранить возможность менять адрес сервера.

Пример:

ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTpleGFtcGxl@outline-server.example.com:8388/?outline=1

С помощью объекта JSON

Для клиента Outline 1.8.0 или более поздних версий

Этот способ дает больше свободы в управлении подключением пользователей к Outline, позволяя изменять сервер, порт, пароль и метод шифрования.

Пример:

{
  "server": "outline-server.example.com",
  "server_port": 8388,
  "password": "example",
  "method": "chacha20-ietf-poly1305"
}
  • server: домен или IP-адрес вашего VPN-сервера.
  • server_port: номер порта, на котором работает ваш VPN-сервер.
  • password: пароль, необходимый для подключения к VPN.
  • method: метод шифрования, используемый VPN. Список поддерживаемых AEAD-шифров можно найти в Shadowsocks.

С помощью объекта YAML

Для клиента Outline 1.15.0 или более поздних версий

Этот способ напоминает предыдущий вариант с JSON, но обеспечивает ещё большую гибкость благодаря расширенному формату конфигурации Outline. Он позволяет изменять сервер, порт, пароль, метод шифрования и другие настройки.

Пример:

transport:
  $type: tcpudp
  tcp:
    $type: shadowsocks
    endpoint: outline-server.example.com:8388
    cipher: chacha20-ietf-poly1305
    secret: example
  udp:
    $type: shadowsocks
    endpoint: outline-server.example.com:8388
    cipher: chacha20-ietf-poly1305
    secret: example
  • transport: определяет используемые транспортные протоколы (в данном случае TCP и UDP).
  • tcp/udp: указывает настройки для каждого протокола.
    • $type: обозначает тип конфигурации (здесь это Shadowsocks).
    • endpoint: домен или IP-адрес и порт вашего VPN-сервера.
    • secret: пароль, необходимый для подключения к VPN.
    • cipher: метод шифрования, используемый VPN. Список поддерживаемых AEAD-шифров можно найти в Shadowsocks.

Ознакомьтесь с Конфигурацией ключей доступа, чтобы узнать обо всех способах настройки доступа к вашему серверу Outline, включая Transport, Endpoint, Dialer и Packet Listener.

Как извлечь информацию о доступе из статического ключа

Если у вас уже есть статический ключ доступа, вы можете извлечь из него информацию в формате JSON или YAML для создания динамического ключа. Статические ключи доступа имеют следующий формат:

SS-URI = "ss://" userinfo "@" hostname ":" port [ "/" ] [ "#" tag ]
userinfo = websafe-base64-encode-utf8(method  ":" password)
           method ":" password

Пример:

ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTpleGFtcGxl@outline-server.example.com:8388/?outline=1
  • Сервер: outline-server.example.com
  • Порт сервера: 8388
  • Информация о пользователе: Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTpleGFtcGxl Данные в формате base64, декодированные с помощью специального инструмента, например Набора инструментов администратора Google.

    • Метод шифрования: chacha20-ietf-poly1305
    • Пароль: example

Как выбрать хостинговую платформу

Теперь, когда вы знаете, как создавать динамические ключи доступа, важно выбрать подходящую платформу для их хостинга. Учитывайте такие факторы, как надежность, безопасность, удобство использования и устойчивость к цензуре. Чтобы сделать правильный выбор, ответьте на следующие вопросы: Сможет ли платформа стабильно предоставлять информацию о ключах доступа без простоев? Обеспечивает ли платформа достаточную защиту конфигурации? Насколько легко управлять информацией о ключах доступа на платформе? Доступна ли платформа в регионах с цензурой в интернете?

Если доступ к информации может быть ограничен, подумайте об использовании устойчивых к цензуре платформ, таких как Google Диск, pad.riseup.net, Amazon S3 (с именем ресурса по пути), Netlify или приватные gist в GitHub. Выбирайте платформу, исходя из особенностей вашего развертывания. Также учитывайте требования к доступности и безопасности.