الاتصالات النفَقية
TunnelConfig
الاتصال النفَقي هو العنصر الأعلى مستوى في إعدادات Outline؛ وذلك لأنه يحدِّد كيفية ضبط شبكة VPN.
التنسيق: ExplicitTunnelConfig | LegacyShadowsocksConfig | LegacyShadowsocksURI
ExplicitTunnelConfig
التنسيق: struct
الحقول:
-
transport
(TransportConfig): بروتوكول نقل البيانات المستخدَم في تبادل الحِزم مع الوجهة النهائية -
error
(struct): المعلومات التي تصل المستخدِم في حال حدوث خطأ بالخدمة (مثل انتهاء صلاحية المفتاح أو استهلاك الحصة المخصّصة)-
message
(string): رسالة ودية تُعرض للمستخدِم -
details
(string): رسالة تُعرض عندما يفتح المستخدم تفاصيل الخطأ، وهي مفيدة في تحديد المشاكل وحلّها
-
يستبعد كلُّ من الحقلَين error
وtransport
الآخر.
أمثلة ناجحة:
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 المتوافقة:
tcpudp
: TCPUDPConfig
TCPUDPConfig
يمكن استخدام TCPUDPConfig لضبط استراتيجيات منفصلة لمنفذَي TCP وUDP.
التنسيق: struct
الحقول:
-
tcp
(DialerConfig): هو "برنامج اتصال البث" المستخدَم في اتصالات TCP. -
udp
(PacketListenerConfig): هو "متتبِّع الحِزم" المستخدَم في حِزم UDP.
مثال على إرسال حِزم 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
التنسيق: string | Interface
نقطة النهاية string هي العنوان من المضيف إلى المنفذ لنقطة النهاية المحدّدة. ويتم إنشاء الاتصال باستخدام "برنامج الاتصال" التلقائي.
أنواع Interface المتوافقة مع "نقاط نهاية البث" و"نقاط نهاية الحِزم":
dial
: DialEndpointConfigfirst-supported
: FirstSupportedConfigwebsocket
: WebsocketEndpointConfigshadowsocks
: ShadowsocksConfig
DialEndpointConfig
يستخدم برنامج اتصال يتيح إنشاء الاستراتيجيات للاتصال بعنوان ثابت.
التنسيق: struct
الحقول:
-
address
(string): عنوان نقطة النهاية المستخدَم للاتصال -
dialer
(DialerConfig): برنامج الاتصال المستخدَم للاتصال بالعنوان
WebsocketEndpointConfig
تعمل الاتصالات النفَقية على بثّ وتجميع الاتصالات في حِزم وإرسالها إلى نقطة نهاية عبر بروتوكولات Websocket.
لبثّ الاتصالات، يتم تحويل كل نص إلى رسالة Websocket. ولتجميع الاتصالات في حِزم، يتم تحويل كل حزمة إلى رسالة Websocket.
التنسيق: struct
الحقول:
-
url
(string): هو عنوان URL لنقطة نهاية Websocket. ويجب أن يكون المخطَّطhttps
أوwss
لاتصال Websocket عبر بروتوكول TLS، وhttp
أوws
لنص Websocket عادي. -
endpoint
(EndpointConfig): نقطة نهاية خادم الويب التي يتم الاتصال بها. وفي حال غيابها، تتصل نقطة النهاية بالعنوان المرتبط بعنوان URL.
برامج الاتصال
تنشئ برامج الاتصال اتصالات بعنوان نقطة نهاية معيّنة. وتنقسم برامج الاتصال إلى نوعَين: "برامج اتصال البثّ" و"برامج اتصال الحِزم".
DialerConfig
التنسيق: null | Interface
يكون "برنامج الاتصال" التلقائي بتنسيق القيمة الفارغة (null)، ويستخدم اتصالات TCP المباشرة في "برامج اتصال البثّ" واتصالات UDP المباشرة في "برامج اتصال الحِزم".
أنواع Interface المتوافقة مع "برامج اتصال البثّ" و"برامج اتصال الحِزم":
first-supported
: FirstSupportedConfigshadowsocks
: ShadowsocksConfig
متتبِّعات الحِزم
يُنشئ "متتبِّع الحِزم" اتصالاً من خلال الحِزم غير المحدودة والذي يمكن أن يُستخدم لإرسال حِزم إلى وجهات متعددة.
PacketListenerConfig
التنسيق: null | Interface
يكون "متتبِّع الحِزم" التلقائي بتنسيق القيمة الفارغة (null)، وهو "متتبِّع حِزم" خاص ببروتوكول UDP.
أنواع Interface المتوافقة:
first-supported
: FirstSupportedConfigshadowsocks
: ShadowsocksPacketListenerConfig
الاستراتيجيات
Shadowsocks
LegacyShadowsocksConfig
يمثِّل الإعداد LegacyShadowsocksConfig "اتصالاً نفَقيًا" يستخدم Shadowsocks على أنّه بروتوكول نقل البيانات. ويُطبِّق هذا الإعداد التنسيق القديم للتوافق مع الأنظمة القديمة.
التنسيق: struct
الحقول:
-
server
(string): المضيف الذي يتم الاتصال به -
server_port
(number): رقم المنفذ الذي يتم الاتصال به -
method
(string): رمز AEAD المستخدَم -
password
(string): يُستخدَم لإنشاء مفتاح التشفير -
prefix
(string): طريقة إخفاء البادئات المستخدَمة وتتوافق مع اتصالات البثّ والحِزم.
مثال:
server: example.com
server_port: 4321
method: chacha20-ietf-poly1305
password: SECRET
prefix: "POST "
LegacyShadowsocksURI
يُمثّل الإعداد LegacyShadowsocksURI "اتصالاً نفَقيًا" يستخدم بروتوكول Shadowsocks كنقطة اتصال. ويُطبِّق هذا الإعداد تنسيق عنوان URL القديم للتوافق مع الأنظمة القديمة.
التنسيق: string
يُرجى الاطّلاع على تنسيق URI لبروتوكول Shadowsocks القديم ومخطَّط URI رقم SIP002، مع العِلم أنّنا لا نوفِّر المكوّنات الإضافية.
مثال:
ss://chacha20-ietf-poly1305:SECRET@example.com:443?prefix=POST%20
ShadowsocksConfig
يُمثِّل الإعداد ShadowsocksConfig "برامج اتصال البثّ" أو "برامج اتصال الحِزم" وأيضًا "متتبِّع الحِزم" الذي يستخدِم Shadowsocks.
التنسيق: struct
الحقول:
-
endpoint
(EndpointConfig): نقطة نهاية Shadowsocks التي يتم الاتصال بها -
cipher
(string): رمز AEAD المستخدَم -
secret
(string): يُستخدَم لإنشاء مفتاح التشفير -
prefix
(string، اختياري): طريقة إخفاء البادئات المستخدَمة وتتوافق مع اتصالات البثّ والحِزم.
مثال:
endpoint: example.com:80
cipher: chacha20-ietf-poly1305
secret: SECRET
prefix: "POST "
أنواع الكائن الوصفي
FirstSupportedConfig
يستخدم هذا الإعداد أول إعداد متوافق مع التطبيق. وهو طريقة تُستخدم لتضمين الإعدادات الجديدة مع مواصلة التوافق مع الإعدادات القديمة.
التنسيق: struct
الحقول:
-
options
(EndpointConfig[] | DialerConfig[] | PacketListenerConfig[]): قائمة بالخيارات المتاحة
مثال:
options:
- $type: websocket
url: wss://example.com/SECRET_PATH
- ss.example.com:4321
الواجهة (Interface)
تُتيح الواجهات اختيار أحد عمليات الاستخدام المتعددة. وتستخدم هذه الواجهات الحقل
$type
لتحديد نوع الإعدادات التي تُمثّلها.
مثال:
$type: shadowsocks
endpoint: example.com:4321
cipher: chacha20-ietf-poly1305
secret: SECRET