Конфигурация

Туннели

TunnelConfig

Tunnel – это основной объект в конфигурации Outline. Он определяет, как должен быть настроен VPN.

Формат: ExplicitTunnelConfig | LegacyShadowsocksConfig | LegacyShadowsocksURI

ExplicitTunnelConfig

Формат: struct

Поля

  • transport (TransportConfig): протокол для передачи пакетов к целевому узлу.
  • error (struct): информация об ошибке сервиса (например, истечение срока действия ключа или превышение квоты).
    • message (string): текстовое сообщение для пользователя.
    • details (string): дополнительная информация об ошибке, доступная по запросу. Может быть полезной при устранении неполадок.

Поля error и transport являются взаимоисключающими.

Пример эффективной конфигурации:

transport:
  $type: tcpudp
  tcp:
    ...  # Stream Dialer for TCP
  udp:
    ...  # Packet Listener for UDP

Пример ошибки:

error:
  message: Quota exceeded
  details: Used 100GB out of 100GB

Протоколы

TransportConfig

Определяет, каким образом пакеты передаются к целевому узлу.

Формат: Interface

Поддерживаемые типы Interface:

TCPUDPConfig

TCPUDPConfig позволяет задавать отдельные стратегии для протоколов TCP и UDP.

Формат: struct

Поля

  • tcp (DialerConfig): конфигурация Stream Dialer для TCP-соединений.
  • udp (PacketListenerConfig): конфигурация Packet Listener для обработки UDP-трафика.

Пример отправки TCP и UDP на разные конечные точки:

tcp:
  $type: shadowsocks
  endpoint: ss.example.com:80
  <<: &cipher
    cipher: chacha20-ietf-poly1305
    secret: SECRET
  prefix: "POST "

udp:
  $type: shadowsocks
  endpoint: ss.example.com:53
  <<: *cipher

Конечные точки

Объект Endpoint устанавливает соединение с фиксированной конечной точкой. В отличие от Dialer, этот объект позволяет применять оптимизированные настройки для определенного узла. Существует два типа объектов Endpoint: Stream и Packet.

EndpointConfig

Формат: string | Interface

Endpoint формата string – это адрес выбранной конечной точки в формате host:port. Подключение устанавливается через объект Dialer по умолчанию.

Поддерживаемые типы Interface для Stream и Packet:

DialEndpointConfig

Отвечает за установку подключений с фиксированным адресом. Может использовать Dialer, что позволяет комбинировать стратегии подключения.

Формат: struct

Поля

  • address (string): адрес конечной точки, с которой устанавливается соединение.
  • dialer (DialerConfig): Dialer, используемый для подключения к указанному адресу.

WebsocketEndpointConfig

Туннелирует Stream- и Packet-подключения к конечной точке через WebSockets.

В Stream-подключениях каждая запись превращается в сообщение WebSocket. В Packet-подключениях каждый пакет передается как отдельное сообщение WebSocket.

Формат: struct

Поля

  • url (string): URL конечной точки WebSocket. Для WebSocket через TLS требуется использовать схему https или wss, а для обычного WebSocket – http или ws.
  • endpoint (EndpointConfig): конечная точка веб-сервера для подключения. Если параметр отсутствует, подключение устанавливается к адресу, указанному в URL.

Dialer

Объект Dialer устанавливает подключение к конечной точке с заданным адресом. Существуют два типа объектов Dialer: Stream и Packet.

DialerConfig

Формат: null, Interface

Значение null означает, что используется объект Dialer по умолчанию, который устанавливает прямые TCP-подключения для Stream и прямые UDP-подключения для Packet.

Поддерживаемые типы Interface для Stream и Packer:

Packet Listener

Объект Packet Listener устанавливает неограниченное пакетное подключение, которое можно использовать для отправки пакетов на разные конечные точки.

PacketListenerConfig

Формат: null, Interface

Значение null означает, что используется объект Packet Listener по умолчанию, который используется для прослушивания UDP-пакетов.

Поддерживаемые типы Interface:

Стратегии

Shadowsocks

LegacyShadowsocksConfig

LegacyShadowsocksConfig представляет объект Tunnel, использующий Shadowsocks в качестве протокола. Он реализует устаревший формат для обратной совместимости.

Формат: struct

Поля

  • server (string): хост, к которому устанавливается подключение.
  • server_port (number): номер порта для подключения.
  • method (string): AEAD-шифр, используемый для шифрования.
  • password (string): пароль, используемый для генерации ключа шифрования.
  • prefix (string): префикс для маскировки. Поддерживается только для Stream-подключений.

Пример:

server: example.com
server_port: 4321
method: chacha20-ietf-poly1305
password: SECRET
prefix: "POST "

LegacyShadowsocksURI

LegacyShadowsocksURI представляет объект Tunnel, использующий Shadowsocks в качестве протокола. Реализует устаревший формат URL для обратной совместимости.

Формат: string

Ознакомьтесь с устаревшим форматом Shadowsocks URI и схемой SIP002 URI. Плагины не поддерживаются.

Пример:

ss://chacha20-ietf-poly1305:SECRET@example.com:443?prefix=POST%20

ShadowsocksConfig

ShadowsocksConfig может представлять Stream Dialer, Packet Dialer или Packet Listener, использующие Shadowsocks.

Формат: struct

Поля

  • endpoint (EndpointConfig): конечная точка Shadowsocks для подключения.
  • cipher (string): AEAD-шифр, используемый для шифрования.
  • secret (string): пароль, используемый для генерации ключа шифрования.
  • prefix (string): префикс для маскировки. Поддерживается только для Stream-подключений.

Пример:

endpoint: example.com:80
cipher: chacha20-ietf-poly1305
secret: SECRET
prefix: "POST "

Метаопределения

FirstSupportedConfig

Использует первую конфигурацию, поддерживаемую приложением. Это позволяет добавлять новые конфигурации, сохраняя обратную совместимость со старыми.

Формат: struct

Поля

Пример:

options:
  -   $type: websocket
      url: wss://example.com/SECRET_PATH
  -   ss.example.com:4321

Interface

Interface позволяет выбирать одну из нескольких реализаций. Для указания типа конфигурации используется поле $type.

Пример:

$type: shadowsocks
endpoint: example.com:4321
cipher: chacha20-ietf-poly1305
secret: SECRET