Konfiguracja

Tunele

TunnelConfig

Tunel to obiekt najwyższego poziomu w konfiguracji Outline. Określa, w jaki sposób należy skonfigurować usługę VPN.

Format: ExplicitTunnelConfig | LegacyShadowsocksConfig | LegacyShadowsocksURI

ExplicitTunnelConfig

Format: struct

Pola:

  • transport (TransportConfig): transport obsługujący wymianę pakietów z punktem docelowym
  • error (struct): informacja mająca zostać przekazana użytkownikowi w przypadku błędu usługi (np. wygaśnięcie klucza, przekroczenie limitu)
    • message (ciąg znaków): wiadomość przyjazna dla użytkownika
    • details (ciąg znaków): wiadomość wyświetlana, gdy użytkownik otwiera szczegóły błędu. Jest przydatna podczas rozwiązywania problemów.

Pola errortransport wykluczają się nawzajem.

Przykład udanego działania:

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

Przykład błędu:

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

Transporty

TransportConfig

Określa, w jaki sposób pakiet powinien zostać wymieniony z punktem docelowym.

Format: interfejs

Obsługiwane rodzaje interfejsów:

TCPUDPConfig

TCPUDPConfig umożliwia stosowanie oddzielnych strategii TCP i UDP.

Format: struct

Pola:

Przykład wysyłania danych przez TCP i UDP do różnych punktów końcowych:

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

Punkty końcowe

Punkty końcowe nawiązują połączenia ze stałym punktem końcowym. Jest to lepsze rozwiązanie niż dialery, ponieważ umożliwia optymalizację pod kątem określonych punktów końcowych. Istnieją strumieniowe i pakietowe punkty końcowe.

EndpointConfig

Format: ciąg znaków | Interfejs

Punkt końcowy będący ciągiem znaków to adres wybranego punktu końcowego podany w postaci host:port. Połączenie jest nawiązywane za pomocą domyślnego dialera.

Obsługiwane rodzaje interfejsów dla strumieniowych i pakietowych punktów końcowych.

DialEndpointConfig

Nawiązuje połączenia poprzez wybieranie stałego adresu. Może potrzebować dialera umożliwiającego tworzenie strategii.

Format: struct

Pola:

  • address (ciąg znaków): adres punktu końcowego do wybrania
  • dialer (DialerConfig): dialer obsługujący wybieranie adresu

WebsocketEndpointConfig

Tunele obsługują strumieniowe i pakietowe połączenia do punktów końcowych przez protokoły Websocket.

W przypadku połączeń strumieniowych każdy zapis jest zamieniany w wiadomość Websocket. W przypadku połączeń pakietowych każdy pakiet jest zamieniany w wiadomość Websocket.

Format: struct

Pola:

  • url (ciąg znaków): adres URL punktu końcowego Websocket. Schemat musi mieć format https lub wss dla Websocket przez TLS albo http lub ws dla tekstu jawnego Websocket.
  • endpoint (EndpointConfig): punkt końcowy serwera WWW, z którym ma być nawiązane połączenie. Jeśli go nie ma, nawiązywane jest połączenie z adresem określonym w URL.

Dialery

Dialery nawiązują połączenia z podanym adresem punktu końcowego. Istnieją dialery strumieniowe i pakietowe.

DialerConfig

Format: null | Interfejs

Dialer null (brak wartości) oznacza domyślny dialer, który wykorzystuje bezpośrednie połączenia TCP do dialerów strumieniowych i bezpośrednie połączenia UDP do dialerów pakietowych.

Obsługiwane rodzaje interfejsów dla dialerów strumieniowych i pakietowych:

Detektory pakietów

Detektor pakietów nawiązuje nieograniczone połączenia pakietowe, które można wykorzystać do wysyłania pakietów do wielu punktów docelowych.

PacketListenerConfig

Format: null | Interfejs

Detektor pakietów null (brak wartości) to domyślny detektor pakietów będący detektorem pakietów UDP.

Obsługiwane rodzaje interfejsów:

Strategie

Shadowsocks

LegacyShadowsocksConfig

LegacyShadowsocksConfig reprezentuje tunel, który wykorzystuje Shadowsocks jako transport. Używa starszego formatu, aby uzyskać zgodność wsteczną.

Format: struct

Pola:

  • server (ciąg znaków): host z którym ma być nawiązane połączenie
  • server_port (numer): numer portu, z którym ma być nawiązane połączenie
  • method (ciąg znaków): algorytm szyfrujący AEAD, który zostanie użyty
  • password (ciąg znaków): wykorzystywane do generowania klucza szyfrującego
  • prefix (ciąg znaków): maskowanie przy użyciu prefiksu, które zostanie zastosowane. Obsługiwane w przypadku połączeń strumieniowych i pakietowych.

Przykład:

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

LegacyShadowsocksURI

LegacyShadowsocksURI reprezentuje tunel, który wykorzystuje Shadowsocks jako transport. Używa starszego formatu URL, aby uzyskać zgodność wsteczną.

Format: ciąg znaków

Zobacz starszy format URI Shadowsocks schemat URI SIP002. Nie obsługujemy wtyczek.

Przykład:

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

ShadowsocksConfig

ShadowsocksConfig może reprezentować dialery strumieniowe i pakietowe oraz detektor pakietów, który korzysta z Shadowsocks.

Format: struct

Pola:

  • endpoint (EndpointConfig): punkt końcowy Shadowsocks, z którym ma być nawiązane połączenie
  • cipher (ciąg znaków): algorytm szyfrujący AEAD, który zostanie użyty
  • secret (ciąg znaków): wykorzystywany do generowania klucza szyfrującego
  • prefix (ciąg znaków): maskowanie przy użyciu prefiksu, które zostanie zastosowane. Obsługiwane w przypadku połączeń strumieniowych i pakietowych.

Przykład:

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

Metadefinicje

FirstSupportedConfig

Korzysta z pierwszej konfiguracji obsługiwanej przez aplikację. To sposób na wdrażanie nowych konfiguracji przy zachowaniu zgodności wstecznej ze starymi.

Format: struct

Pola:

Przykład:

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

Interfejs

Interfejs umożliwia wybranie jednej z wielu implementacji. Wykorzystuje pole $type do określenia rodzaju, który reprezentuje konfiguracja.

Przykład:

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