Туннели
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:
tcpudp
: TCPUDPConfig
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:
dial
: DialEndpointConfigfirst-supported
: FirstSupportedConfigwebsocket
: WebsocketEndpointConfigshadowsocks
: ShadowsocksConfig
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:
first-supported
: FirstSupportedConfigshadowsocks
: ShadowsocksConfig
Packet Listener
Объект Packet Listener устанавливает неограниченное пакетное подключение, которое можно использовать для отправки пакетов на разные конечные точки.
PacketListenerConfig
Формат: null, Interface
Значение null означает, что используется объект Packet Listener по умолчанию, который используется для прослушивания UDP-пакетов.
Поддерживаемые типы Interface:
first-supported
: FirstSupportedConfigshadowsocks
: ShadowsocksPacketListenerConfig
Стратегии
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
(EndpointConfig[] | DialerConfig[] | PacketListenerConfig[]): список возможных конфигураций.
Пример:
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