Configuratie

Tunnels

TunnelConfig

Tunnel is het object op het hoogste niveau in een Outline-configuratie. Hiermee bepaal je hoe de VPN wordt ingesteld.

Indeling: ExplicitTunnelConfig | LegacyShadowsocksConfig | LegacyShadowsocksURI

ExplicitTunnelConfig

Indeling: struct

Velden:

  • transport (TransportConfig): Het transport waarmee pakketten moeten worden uitgewisseld met de doelbestemming.
  • error (struct): Informatie om te communiceren met de gebruiker als er een servicefout is (bijv. verlopen sleutel, quotum bereikt).
    • message (string): Gebruiksvriendelijk bericht om te tonen aan de gebruiker.
    • details (string): Bericht om te tonen als de gebruiker de details van de fout opent. Nuttig voor probleemoplossing.

De velden error en transport sluiten elkaar uit.

Correct voorbeeld:

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

Foutief voorbeeld:

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

Transporten

TransportConfig

Hiermee bepaal je hoe pakketten moeten worden uitgewisseld met de doelbestemming.

Indeling: Interface

Ondersteunde Interface-typen:

TCPUDPConfig

Met TCPUDPConfig kun je aparte TCP- en UDP-strategieën instellen.

Indeling: struct

Velden:

  • tcp (DialerConfig): De Stream Dialer om te gebruiken voor TCP-verbindingen.
  • udp (PacketListenerConfig): De Packet Listener om te gebruiken voor UDP-pakketten.

Voorbeeld voor het sturen van TCP en UDP naar verschillende eindpunten:

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

Endpoints

Met Endpoints maak je verbinding met een vast eindpunt. Dit heeft de voorkeur over Dialers omdat je hiermee eindpuntspecifieke optimalisaties kunt doorvoeren. Er zijn Stream en Packet Endpoints.

EndpointConfig

Indeling: string | Interface

De Endpoint string is het host:poort-adres van het geselecteerde eindpunt. De verbinding wordt gemaakt met de standaard Dialer.

Ondersteunde Interface-typen voor Stream en Packet Endpoints:

DialEndpointConfig

Hiermee maak je verbinding door een vast adres aan te roepen. Je kunt hier een dialer aan toevoegen, zodat je verschillende strategieën samen kunt gebruiken.

Indeling: struct

Velden:

  • address (string): Het adres van het eindpunt om aan te roepen.
  • dialer (DialerConfig): De dialer om het adres mee aan te roepen.

WebsocketEndpointConfig

Hiermee worden stream- en pakketverbindingen getunneld naar een eindpunt via WebSockets.

Voor streamverbindingen wordt elke write veranderd in een WebSocket-bericht. Voor pakketverbindingen wordt elk pakket veranderd in een WebSocket-bericht.

Indeling: struct

Velden:

  • url (string): De URL van het WebSocket-eindpunt. Het schema moet https of wss zijn voor WebSocket over TLS, en http of ws zijn voor WebSocket in niet-versleutelde tekst.
  • endpoint (EndpointConfig): Het eindpunt van de webserver waarmee verbinding moet worden gemaakt. Als je hier niets invoert, wordt er verbinding gemaakt met het adres dat je opgeeft in de URL.

Dialers

Dialers maken verbinding met een eindpuntadres. Er zijn Stream en Packet Dialers.

DialerConfig

Indeling: null | Interface

De Dialer null (afwezig) is de standaard Dialer, die directe TCP-verbindingen gebruikt voor streams en directe UDP-verbindingen gebruikt voor pakketten.

Ondersteunde Interface-typen voor Stream en Packet Dialers:

Packet Listeners

Een Packet Listener maakt een ongebonden pakketverbinding waarmee je pakketten kunt sturen naar meerdere bestemmingen.

PacketListenerConfig

Indeling: null | Interface

De Packet Listener null (afwezig) is de standaard Packet Listener. Dit is een UDP Packet Listener.

Ondersteunde Interface-typen:

Strategieën

Shadowsocks

LegacyShadowsocksConfig

LegacyShadowsocksConfig vertegenwoordigt een tunnel die Shadowsocks gebruikt voor het transport. Hiermee implementeer je de verouderde indeling voor compatibiliteit met eerdere versies.

Indeling: struct

Velden:

  • server (string): De host om verbinding mee te maken.
  • server_port (number): Het poortnummer om verbinding mee te maken.
  • method (string): De AEAD-codering om te gebruiken.
  • password (string): Gebruikt om de versleutelingssleutel mee te maken.
  • prefix (string): De voorvoegselvermomming om te gebruiken. Wordt ondersteund voor stream- en pakketverbindingen.

Voorbeeld:

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

LegacyShadowsocksURI

LegacyShadowsocksURI vertegenwoordigt een tunnel die Shadowsocks gebruikt voor het transport. Hiermee implementeer je de verouderde URL-indeling voor compatibiliteit met eerdere versies.

Indeling: string

Ga naar Verouderde URI-indeling voor Shadowsocks en SIP002 URI-schema. Plug-ins worden niet ondersteund.

Voorbeeld:

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

ShadowsocksConfig

ShadowsocksConfig kan een Stream en Packet Dialer vertegenwoordigen, of een Packet Listener die Shadowsocks gebruikt.

Indeling: struct

Velden:

  • endpoint (EndpointConfig): Het Shadowsocks-eindpunt waarmee verbinding moet worden gemaakt.
  • cipher (string): De AEAD-codering om te gebruiken.
  • secret (string): Gebruikt om de versleutelingssleutel mee te maken.
  • prefix (string, optioneel): De voorvoegselvermomming om te gebruiken. Wordt ondersteund voor stream- en pakketverbindingen.

Voorbeeld:

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

Metadefinities

FirstSupportedConfig

Gebruikt de eerste configuratie die wordt ondersteund door de app. Dit is een manier om nieuwe configuraties te gebruiken en compatibiliteit te behouden met eerdere configuraties.

Indeling: struct

Velden:

Voorbeeld:

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

Interface

Met Interfaces kun je een van meerdere implementaties kiezen. In het veld $type voer je het type in dat die configuratie vertegenwoordigt.

Voorbeeld:

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