設定

通道

TunnelConfig

通道是 Outline 設定中的頂層物件,指定了 VPN 的設定方式。

格式:ExplicitTunnelConfig | LegacyShadowsocksConfig | LegacyShadowsocksURI

ExplicitTunnelConfig

格式:struct

欄位:

  • transport (TransportConfig):與目標目的地交換封包的傳輸方式
  • error (struct):服務發生錯誤 (例如金鑰過期、配額用盡) 時,傳達給使用者的資訊
    • message (字串):對使用者顯示的簡單訊息
    • details (字串):使用者查看錯誤詳細資料時顯示的訊息,有助於排解問題

errortransport 欄位互斥。

成功示例:

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

錯誤示例:

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

傳輸

TransportConfig

指定應如何與目標目的地交換封包。

格式:Interface

支援的 Interface 類型:

TCPUDPConfig

TCPUDPConfig 可分別設定 TCP 和 UDP 策略。

格式:struct

欄位:

將 TCP 和 UDP 傳送至不同端點的示例:

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

端點

「端點」會建立連往固定端點的連線,且可針對特定端點進行最佳化,所以比撥號器更為理想。分為串流端點和封包端點。

EndpointConfig

格式:字串 | Interface

「字串」端點是所選端點的 host:port 位址。連線是由預設撥號器建立。

串流端點和封包端點支援的 Interface 類型:

DialEndpointConfig

透過撥號至固定位址來建立連線。這個過程可以使用撥號器,將不同策略結合使用。

格式:struct

欄位:

  • address (字串):撥號目標端點位址
  • dialer (DialerConfig):所用撥號器

WebsocketEndpointConfig

運用 Websocket 建立將串流和封包傳送至端點的連線通道。

串流連線的每次寫入,以及封包連線的每個封包,都會轉換為一則 WebSocket 訊息。

格式:struct

欄位:

  • url (字串):WebSocket 端點網址。WebSocket 使用 TLS 時,網址格式須為 httpswss;若為明文 WebSocket,則須為 httpws
  • endpoint (EndpointConfig):連線目標網路伺服器端點。若未指定,則會連線至網址中指定的位址。

撥號器

撥號器可依指定端點位址建立連線,分為串流撥號器和封包撥號器。

DialerConfig

格式:空值 | Interface

撥號器為「空值」(省略) 代表使用預設撥號器,即透過直接的 TCP 連線處理串流,透過直接的 UDP 連線處理封包。

串流撥號器和封包撥號器支援的 Interface 類型:

封包監聽器

封包監聽器會建立不受限制的封包連線,能將封包傳送至多個目的地。

PacketListenerConfig

格式:空值 | Interface

封包監聽器為「空值」(省略) 代表使用預設封包監聽器,即 UDP 封包監聽器。

支援的 Interface 類型:

策略

Shadowsocks

LegacyShadowsocksConfig

LegacyShadowsocksConfig 代表使用 Shadowsocks 做為傳輸方式的通道,並採用舊版格式以確保回溯相容性。

格式:struct

欄位:

  • server (字串):連線目標主機
  • server_port (數字):連線目標埠號
  • method (字串):要使用的 AEAD 加密演算法
  • password (字串):用於產生加密金鑰
  • prefix (字串):要使用的 prefix 偽裝;適用於串流連線和封包連線。

示例:

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

LegacyShadowsocksURI

LegacyShadowsocksURI 代表使用 Shadowsocks 做為傳輸方式的通道,並採用舊版網址格式以確保回溯相容性。

格式:字串

請參閱「舊版 Shadowsocks URI 格式」和「SIP002 URI 配置」。系統不支援外掛程式。

示例:

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

ShadowsocksConfig

ShadowsocksConfig 可代表串流撥號器或封包撥號器,以及使用 Shadowsocks 的封包監聽器。

格式:struct

欄位:

  • endpoint (EndpointConfig):連線目標 Shadowsocks 端點
  • cipher (字串):要使用的 AEAD 加密演算法
  • secret (字串):用於產生加密金鑰
  • prefix (字串,選用):要使用的 prefix 偽裝;適用於串流連線和封包連線。

示例:

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

中繼定義

FirstSupportedConfig

使用應用程式支援的第一項設定。這可以在納入新設定時,確保與舊設定回溯相容。

格式:struct

欄位:

示例:

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

Interface

Interface 支援從多種實作方式中擇一,並以 $type 欄位指定設定代表的類型。

示例:

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