Konfigurasi Kunci Akses

Outline menggunakan konfigurasi berbasis YAML untuk menentukan parameter VPN dan menangani traffic TCP/UDP. Konfigurasi ini mendukung komposisi di beberapa tingkat, yang memungkinkan penyiapan yang fleksibel dan dapat diperluas.

Konfigurasi tingkat teratas menentukan TunnelConfig.

Contoh

Konfigurasi Shadowsocks standar akan terlihat seperti ini:

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

Perhatikan bahwa sekarang kita dapat menjalankan TCP dan UDP di port atau endpoint yang berbeda dan dengan awalan yang berbeda.

Anda dapat menggunakan 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 "look-like-nothing" seperti Shadowsocks diblokir, Anda dapat menggunakan Shadowsocks-over-Websockets. Lihat konfigurasi contoh server tentang cara men-deploynya. Konfigurasi klien akan terlihat seperti ini:

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 dioptimalkan untuk mengabaikan 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

Untuk memastikan kompatibilitas di berbagai versi klien Outline, gunakan opsi first-supported dalam konfigurasi Anda. Hal ini sangat penting saat strategi dan fitur baru ditambahkan ke Outline, karena tidak semua pengguna mungkin telah mengupdate ke software klien terbaru. Dengan menggunakan first-supported, Anda dapat memberikan satu konfigurasi yang berfungsi dengan lancar di berbagai platform dan versi klien, sehingga memastikan kompatibilitas mundur dan pengalaman pengguna yang konsisten.

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