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 targeterror
(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 penggunadetails
(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:
tcpudp
: TCPUDPConfig
TCPUDPConfig
TCPUDPConfig memungkinkan penetapan strategi TCP dan UDP yang terpisah.
Format: struct
Kolom:
tcp
(DialerConfig): Stream Dialer yang akan digunakan untuk koneksi TCP.udp
(PacketListenerConfig): Packet Listener yang akan digunakan untuk paket UDP.
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:
dial
: DialEndpointConfigfirst-supported
: FirstSupportedConfigwebsocket
: WebsocketEndpointConfigshadowsocks
: ShadowsocksConfig
DialEndpointConfig
Membuat koneksi dengan menghubungi alamat tetap. Dapat menggunakan dialer, yang memungkinkan komposisi strategi.
Format: struct
Kolom:
address
(string): alamat endpoint yang akan dihubungidialer
(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 berupahttps
atauwss
untuk WebSocket melalui TLS, danhttp
atauws
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:
first-supported
: FirstSupportedConfigshadowsocks
: ShadowsocksConfig
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:
first-supported
: FirstSupportedConfigshadowsocks
: ShadowsocksPacketListenerConfig
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 dihubungkanserver_port
(number): nomor port yang akan dihubungkanmethod
(string): cipher AEAD yang akan digunakanpassword
(string): digunakan untuk membuat kunci enkripsiprefix
(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 dihubungkancipher
(string): cipher AEAD yang akan digunakansecret
(string): digunakan untuk membuat kunci enkripsiprefix
(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:
options
(EndpointConfig[] | DialerConfig[] | PacketListenerConfig[]): daftar opsi yang perlu dipertimbangkan
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