Для определения параметров VPN и обработки TCP- и UDP-трафика Outline использует конфигурацию в формате YAML. Конфигурация поддерживает многоуровневую структуру, обеспечивая гибкость и возможность расширения настроек.
Объект верхнего уровня конфигурации – TunnelConfig.
Примеры
Типичная конфигурация Shadowsocks выглядит следующим образом:
transport:
$type: tcpudp
tcp:
$type: shadowsocks
endpoint: ss.example.com:80
cipher: chacha20-ietf-poly1305
secret: SECRET
prefix: "POST " # HTTP request
udp:
$type: shadowsocks
endpoint: ss.example.com:53
cipher: chacha20-ietf-poly1305
secret: SECRET
prefix: "\u0097\u00a7\u0001\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000" # DNS query
Обратите внимание, что теперь протоколы TCP и UDP могут работать на разных портах или конечных точках с разными префиксами.
Вы можете использовать анкеры YAML и ключ <<
, чтобы избежать создания копий.
transport:
$type: tcpudp
tcp:
<<: &shared
$type: shadowsocks
endpoint: ss.example.com:4321
cipher: chacha20-ietf-poly1305
secret: SECRET
prefix: "POST "
udp: *shared
Теперь можно комбинировать стратегии и настраивать многоэтапные соединения:
transport:
$type: tcpudp
tcp:
$type: shadowsocks
endpoint:
$type: dial
address: exit.example.com:4321
dialer:
$type: shadowsocks
address: entry.example.com:4321
cipher: chacha20-ietf-poly1305
secret: ENTRY_SECRET
cipher: chacha20-ietf-poly1305
secret: EXIT_SECRET
udp: *shared
В случае блокировки "маскирующихся" протоколов (например, Shadowsocks), вы можете использовать Shadowsocks-over-Websockets. Ознакомьтесь с примером конфигурации сервера, чтобы развернуть этот вариант. Конфигурация клиента выглядит следующим образом:
transport:
$type: tcpudp
tcp:
$type: shadowsocks
endpoint:
$type: websocket
url: wss://legendary-faster-packs-und.trycloudflare.com/SECRET_PATH/tcp
cipher: chacha20-ietf-poly1305
secret: SS_SECRET
udp:
$type: shadowsocks
endpoint:
$type: websocket
url: wss://legendary-faster-packs-und.trycloudflare.com/SECRET_PATH/udp
cipher: chacha20-ietf-poly1305
secret: SS_SECRET
Обратите внимание, что конечная точка WebSocket также может принимать другую конечную точку, что позволяет обходить блокировку на основе DNS.
transport:
$type: tcpudp
tcp:
$type: shadowsocks
endpoint:
$type: websocket
url: wss://legendary-faster-packs-und.trycloudflare.com/SECRET_PATH/tcp
endpoint: cloudflare.net:443
cipher: chacha20-ietf-poly1305
secret: SS_SECRET
udp:
$type: shadowsocks
endpoint:
$type: websocket
url: wss://legendary-faster-packs-und.trycloudflare.com/SECRET_PATH/udp
endpoint: cloudflare.net:443
cipher: chacha20-ietf-poly1305
secret: SS_SECRET
Чтобы обеспечить совместимость с различными версиями клиента Outline, используйте в конфигурации параметр first-supported
. Это важно, поскольку в Outline постоянно добавляются новые стратегии и функции, но не у всех пользователей клиент может быть обновлен до последней версии. Применяя first-supported
, вы можете создать универсальную конфигурацию, которая будет работать на разных платформах и в разных версиях клиента, обеспечивая обратную совместимость и удобство использования.
transport:
$type: tcpudp
tcp:
$type: shadowsocks
endpoint:
$type: first-supported
options:
- $type: websocket
url: wss://legendary-faster-packs-und.trycloudflare.com/SECRET_PATH/tcp
- ss.example.com:4321
cipher: chacha20-ietf-poly1305
secret: SS_SECRET
udp:
$type: shadowsocks
endpoint:
$type: first-supported
options:
- $type: websocket
url: wss://legendary-faster-packs-und.trycloudflare.com/SECRET_PATH/udp
- ss.example.com:4321
cipher: chacha20-ietf-poly1305
secret: SS_SECRET