Referensi Konfigurasi Outline

Outline menggunakan konfigurasi berbasis YAML untuk menentukan parameter VPN dan menangani traffic TCP/UDP. Konfigurasi ini mendukung kemampuan penyusunan di berbagai tingkat, sehingga memungkinkan penyiapan yang fleksibel dan dapat di-extend.

Konfigurasi tingkat teratas menentukan TunnelConfig.

Contoh

Konfigurasi Shadowsocks standar akan terlihat seperti ini:

transport:
  $type: tcpudp

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

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

Perhatikan bagaimana kita sekarang dapat menjalankan TCP dan UDP di port atau endpoint yang berbeda.

Anda dapat memanfaatkan anchor YAML dan kunci penggabungan << untuk menghindari duplikasi:

transport:
  $type: tcpudp

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

  udp: *shared

Sekarang Anda dapat menyusun strategi dan melakukan multi-hop:

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

Jika protokol "tidak terlihat" seperti Shadowsocks diblokir, Anda dapat menggunakan Shadowsocks melalui WebSockets. Lihat konfigurasi contoh server tentang cara men-deploy-nya. Konfigurasi klien akan terlihat seperti:

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

Perhatikan bahwa endpoint Websocket pada gilirannya dapat mengambil endpoint, yang dapat digunakan untuk melewati pemblokiran berbasis 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

Perhatikan bahwa WebSockets belum didukung di Windows. Untuk memiliki satu konfigurasi untuk semua platform, gunakan first-supported untuk kompatibilitas mundur:

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

Tunnel

TunnelConfig

Tunnel adalah objek tingkat teratas dalam konfigurasi Outline. Menentukan cara VPN harus dikonfigurasi.

Format: ExplicitTunnelConfig | LegacyShadowsocksConfig | LegacyShadowsocksURI

ExplicitTunnelConfig

Format: struct

Kolom:

  • transport (TransportConfig): transportasi yang akan digunakan untuk bertukar paket dengan tujuan target
  • error (struct): informasi yang akan dikomunikasikan kepada pengguna jika terjadi error layanan (misalnya, kunci sudah tidak berlaku, kuota habis)
    • message (string): pesan yang mudah digunakan untuk ditampilkan kepada pengguna
    • details (string): pesan yang akan ditampilkan saat pengguna membuka detail error. Berguna untuk memecahkan masalah.

Kolom error dan transport tidak dapat muncul bersamaan.

Contoh yang berhasil:

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

Contoh error:

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

Transportasi

TransportConfig

Menentukan cara pertukaran paket dengan tujuan target.

Format: Antarmuka

Jenis Antarmuka yang didukung:

TCPUDPConfig

TCPUDPConfig memungkinkan penetapan strategi TCP dan UDP yang terpisah.

Format: struct

Kolom:

Contoh pengiriman TCP dan UDP ke endpoint yang berbeda:

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

Endpoint membuat koneksi ke endpoint tetap. Lebih disukai daripada Dialer karena memungkinkan pengoptimalan khusus endpoint. Ada Endpoint Stream dan Paket.

EndpointConfig

Format: string | Interface

Endpoint string adalah alamat host:port dari endpoint yang dipilih. Koneksi dibuat menggunakan Aplikasi Telepon default.

Jenis Antarmuka yang didukung untuk Endpoint Streaming dan Paket:

DialEndpointConfig

Membuat koneksi dengan menghubungi alamat tetap. Dapat menggunakan dialer, yang memungkinkan komposisi strategi.

Format: struct

Kolom:

  • address (string): alamat endpoint yang akan dihubungi
  • dialer (DialerConfig): dialer yang akan digunakan untuk menghubungi alamat

WebsocketEndpointConfig

Meneruskan koneksi streaming dan paket ke endpoint melalui WebSockets.

Untuk koneksi streaming, setiap penulisan diubah menjadi pesan WebSocket. Untuk koneksi paket, setiap paket diubah menjadi pesan WebSocket.

Format: struct

Kolom:

  • url (string): URL untuk endpoint WebSocket. Skema harus berupa https atau wss untuk WebSocket melalui TLS, dan http atau ws untuk WebSocket plaintext.
  • endpoint (EndpointConfig): endpoint server web yang akan dihubungkan. Jika tidak ada, akan terhubung ke alamat yang ditentukan dalam URL.

Pemanggil

Dialer membuat koneksi berdasarkan alamat endpoint. Ada Stream dan Packet Dialer.

DialerConfig

Format: null | Antarmuka

Dialer null (tidak ada) berarti Dialer default, yang menggunakan koneksi TCP langsung untuk Stream dan koneksi UDP langsung untuk Paket.

Jenis Antarmuka yang didukung untuk Penelepon Stream dan Packer:

Pemroses Paket

Packet Listener membuat koneksi paket tanpa batas yang dapat digunakan untuk mengirim paket ke beberapa tujuan.

PacketListenerConfig

Format: null | Antarmuka

null (tidak ada) Packet Listener berarti Packet Listener default, yaitu UDP Packet Listener.

Jenis Antarmuka yang didukung:

Strategi

Shadowsocks

LegacyShadowsocksConfig

LegacyShadowsocksConfig merepresentasikan Tunnel yang menggunakan Shadowsocks sebagai transport. Mengimplementasikan format lama untuk kompatibilitas mundur.

Format: struct

Kolom:

  • server (string): host yang akan dihubungkan
  • server_port (number): nomor port yang akan dihubungkan
  • method (string): cipher AEAD yang akan digunakan
  • password (string): digunakan untuk membuat kunci enkripsi
  • prefix (string): awalan penyamaran yang akan digunakan. Didukung pada koneksi streaming dan paket.

Contoh:

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

LegacyShadowsocksURI

LegacyShadowsocksURI merepresentasikan Tunnel yang menggunakan Shadowsocks sebagai transport. API ini menerapkan format URL lama untuk kompatibilitas mundur.

Format: string

Lihat Format URI Shadowsocks Lama dan Skema URI SIP002. Kami tidak mendukung plugin.

Contoh:

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

ShadowsocksConfig

ShadowsocksConfig dapat merepresentasikan Stream atau Packet Dialer, serta Packet Listener yang menggunakan Shadowsocks.

Format: struct

Kolom:

  • endpoint (EndpointConfig): endpoint Shadowsocks yang akan dihubungkan
  • cipher (string): cipher AEAD yang akan digunakan
  • secret (string): digunakan untuk membuat kunci enkripsi
  • prefix (string, opsional): awalan penyamaran yang akan digunakan. Didukung pada koneksi streaming dan paket.

Contoh:

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

Definisi Meta

FirstSupportedConfig

Menggunakan konfigurasi pertama yang didukung oleh aplikasi. Cara ini adalah cara untuk menggabungkan konfigurasi baru sekaligus tetap kompatibel dengan konfigurasi lama.

Format: struct

Kolom:

Contoh:

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

Antarmuka

Antarmuka memungkinkan pemilihan salah satu dari beberapa implementasi. Menggunakan kolom $type untuk menentukan jenis yang diwakili konfigurasi.

Contoh:

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