إنتقل إلى المحتوى الرئيسي

التوجيه من جانب الخادم

للعرض فقط | غير جاهز للإنتاج

هذا الدليل مخصص فقط كعرض توضيحي للتوجيه من جانب الخادم. لا تفترض أن نسخ هذه الأمثلة سيُنتج إعداداً كاملاً وصالحاً للاستخدام في الإنتاج. فهو لا يغطي جميع إمكانيات Xray-core، ولا يُضمن أن يعمل بشكل مثالي في كل بيئة.

للاطلاع على التفاصيل الكاملة حول صياغة الإعداد وسلوكه، راجع توثيق Xray الرسمي.

ربما لاحظ بعض المستخدمين أن Remnawave يمسح تلقائياً مصفوفة clients من إعداد العقدة. هذا ليس خللاً، بل هو سلوك مقصود. تمسحها Remnawave لضمان الاحتفاظ فقط بالإعدادات الضرورية لكي تعمل بعض الميزات بشكل صحيح.


في هذا الدليل، سنستعرض إعداد توجيه حركة مرور البيانات من جانب الخادم باستخدام عقدتين: RU وDE. سيتصل المستخدمون بعقدة RU. ومن هناك، سيتم توجيه حركة المرور على النحو التالي:

  • سيتم توجيه حركة المرور إلى مواقع .ru مباشرةً عبر عقدة RU.
  • ستتم إعادة توجيه كل حركة المرور الأخرى عبر عقدة DE.

لتحقيق ذلك، سنُنشئ مستخدم خدمة يُسهّل توجيه حركة المرور.

نتيجةً لذلك، قد يبدو "تدفق" حركة المرور على النحو التالي:

  1. يفتح المستخدم google.com.
  2. يصل الطلب أولاً إلى عقدة RU.
  3. تُطبّق عقدة RU قواعد التوجيه. بما أن google.com ليس نطاق .ru، يتم توجيه حركة المرور إلى عقدة DE.
  4. تُكمل عقدة DE الاتصال بـ google.com.

يُشار إلى هذا النوع من إعداد التوجيه من جانب الخادم عادةً بـ "الجسر".

إنشاء ملف تعريف للإعداد لـ DE

انتقل إلى قسم ملفات تعريف الإعداد وأنشئ ملف تعريف إعداد جديداً، مثلاً DE Bridge Profile.

DE Bridge Profile
{
"log": {
"loglevel": "warning"
},
"dns": {},
"inbounds": [
{
"tag": "BRIDGE_DE_IN",
"port": 9999,
"listen": "0.0.0.0",
"protocol": "shadowsocks",
"settings": {
"clients": [],
"network": "tcp,udp"
},
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls", "quic"]
}
}
],
"outbounds": [
{
"tag": "DIRECT",
"protocol": "freedom"
},
{
"tag": "BLOCK",
"protocol": "blackhole"
}
],
"routing": {
"rules": []
}
}
لا تنسَ تعيين الملف الشخصي وإنشاء فرقة داخلية

عيّن ملف تعريف الإعداد المُنشأ حديثاً لعقدة DE. حدد الـ Inbound الخاص بـ BRIDGE_DE_IN.


أنشئ فرقة داخلية جديدة، لنسمّها Bridge Squad. فعّل الـ Inbound الذي أنشأناه سابقاً — BRIDGE_DE_IN.

إنشاء مستخدم خدمة

لكي يعمل الجسر، سنحتاج إلى إنشاء مستخدم. لنسمّه bridge_user.

لا تنسَ إزالة حدود حركة المرور وتمديد تاريخ الانتهاء

بما أن هذا مستخدم خدمة، فمن الواضح أننا لا نريد انتهاء صلاحية اشتراكه أو تقييده بحجم حركة المرور. اضبط Data Limit على 0 وExpiry Date على عام 2099.

بعد ذلك، عيّن الفرقة المناسبة لهذا المستخدم. في حالتنا، هي Bridge Squad.

بعد إنشاء مستخدم الخدمة، سنحتاج إلى الحصول على كلمة مروره. افتح بطاقة المستخدم، وانقر على زر More Actions، ثم Detailed Info. ستجد هناك قسم Connection Information.

وفقاً لبروتوكول الـ Inbound (Shadowsocks في حالتنا)، انسخ القيمة المناسبة:

البروتوكولقيمة معلومات الاتصال
Trojanكلمة مرور Trojan
VLESSUUID الخاص بـ VLESS
Shadowsocksكلمة مرور SS

إعداد ملف التعريف العام

على الأرجح، لديك بالفعل ملف تعريف إعداد يتصل به مستخدموك. إذا لم يكن كذلك، راجع هذا الدليل.

في هذه الخطوة، لسنا مهتمين بـ "inbounds" — بل سنقوم بتعديل مصفوفات "outbounds" و"routing" و"rules" في ذلك الملف الشخصي.

Public Profile Example
{
"log": {
"loglevel": "none"
},
"inbounds": [
{
"tag": "PUBLIC_RU_INBOUND",
"port": 443,
"listen": "0.0.0.0",
"protocol": "vless",
"settings": {
"clients": [],
"decryption": "none"
},
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls", "quic"]
},
"streamSettings": {
"network": "raw",
"security": "reality",
"realitySettings": {
"target": "USE YOUR OWN VALUE!",
"show": false,
"xver": 0,
"shortIds": [""],
"privateKey": "USE YOUR OWN KEY!",
"serverNames": ["USE YOUR OWN VALUES!"]
}
}
}
],
"outbounds": [
{
"protocol": "freedom",
"tag": "DIRECT"
},
{
"protocol": "blackhole",
"tag": "BLOCK"
}
],
"routing": {
"rules": [
{
"ip": ["geoip:private"],
"outboundTag": "BLOCK"
},
{
"domain": ["geosite:private"],
"outboundTag": "BLOCK"
},
{
"protocol": ["bittorrent"],
"outboundTag": "BLOCK"
}
]
}
}

Outbounds

أولاً، نحتاج إلى تعديل مصفوفة outbounds.

outbounds
{
"tag": "SS_OUTBOUND_TO_DE",
"protocol": "shadowsocks",
"settings": {
"servers": [
{
"address": "DE NODE ADDRESS",
"password": "PASSWORD FROM PREVIOUS STEP",
"port": 9999,
"level": 0,
"method": "chacha20-ietf-poly1305"
}
]
}
}
الحقلالقيمة
addressعنوان IP أو اسم النطاق الخاص بخادم عقدة DE.
portمنفذ الـ Inbound، في حالتنا منفذ BRIDGE_DE_IN.
passwordكلمة مرور مستخدم الخدمة. تعتمد على البروتوكول الذي تستخدمه؛ راجع الخطوة السابقة.
methodطريقة التشفير. بالنسبة لـ Shadowsocks في Remnawave، استخدم دائماً chacha20-ietf-poly1305.

التوجيه والقواعد

بعد ذلك، عدّل قواعد التوجيه وفق احتياجاتك.

فيما يلي مثال على قاعدة تجعل عقدة RU عقدة الخروج لعناوين IP والمواقع الروسية، بينما يتم إرسال بقية حركة المرور إلى عقدة DE.

rules
{
"ip": ["geoip:ru"],
"outboundTag": "DIRECT"
},
{
"domain": ["geosite:category-ru"],
"outboundTag": "DIRECT"
}

فيما يلي مثال على قاعدة تُوجّه جميع حركة المرور إلى الـ Outbound الخاص بـ SS_OUTBOUND_TO_DE.

rules
{
"inboundTag": ["PUBLIC_RU_INBOUND"],
"outboundTag": "SS_OUTBOUND_TO_DE"
}

قد يبدو ملف تعريف الإعداد العام الكامل كالتالي:

Complete Public Config Profile Example
{
"log": {
"loglevel": "none"
},
"inbounds": [
{
"tag": "PUBLIC_RU_INBOUND",
"port": 443,
"listen": "0.0.0.0",
"protocol": "vless",
"settings": {
"clients": [],
"decryption": "none"
},
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls", "quic"]
},
"streamSettings": {
"network": "raw",
"security": "reality",
"realitySettings": {
"target": "USE YOUR OWN VALUE!",
"show": false,
"xver": 0,
"shortIds": [""],
"privateKey": "USE YOUR OWN KEY!",
"serverNames": ["USE YOUR OWN VALUES!"]
}
}
}
],
"outbounds": [
{
"protocol": "freedom",
"tag": "DIRECT"
},
{
"protocol": "blackhole",
"tag": "BLOCK"
},
{
"tag": "SS_OUTBOUND_TO_DE",
"protocol": "shadowsocks",
"settings": {
"servers": [
{
"address": "DE NODE ADDRESS",
"password": "PASSWORD FROM PREVIOUS STEP",
"port": 9999,
"level": 0,
"method": "chacha20-ietf-poly1305"
}
]
}
}
],
"routing": {
"rules": [
{
"ip": ["geoip:private"],
"outboundTag": "BLOCK"
},
{
"domain": ["geosite:private"],
"outboundTag": "BLOCK"
},
{
"protocol": ["bittorrent"],
"outboundTag": "BLOCK"
},
{
"ip": ["geoip:ru"],
"outboundTag": "DIRECT"
},
{
"domain": ["geosite:category-ru"],
"outboundTag": "DIRECT"
},
{
"inboundTag": ["PUBLIC_RU_INBOUND"],
"outboundTag": "SS_OUTBOUND_TO_DE"
}
]
}
}
تلميح

تُعالَج قواعد توجيه Xray بالترتيب، من الأعلى إلى الأسفل.
إليك كيفية عمل القواعد في مثالنا:

  1. عناوين IP الخاصة (geoip:private) ← BLOCK
    يتم إرسال حركة المرور المطابقة لهذه القاعدة إلى الـ Outbound الخاص بـ BLOCK، وهو بروتوكول blackhole (محجوب كلياً).

  2. النطاقات الخاصة (geosite:private) ← BLOCK
    مثل السابق، ولكن لأسماء النطاقات.

  3. حركة مرور Bittorrent (bittorrent) ← BLOCK
    يتم حجب جميع حركة مرور BitTorrent.

  4. عناوين IP الروسية (geoip:ru) ← DIRECT
    يتم إرسال حركة المرور المطابقة لهذه القاعدة إلى الـ Outbound الخاص بـ DIRECT، وهو بروتوكول freedom (تعمل عقدة RU كعقدة خروج).

  5. النطاقات الروسية (geosite:category-ru) ← DIRECT
    تخرج حركة المرور إلى النطاقات الروسية مباشرةً من عقدة RU أيضاً.

  6. لا توجد قاعدة مطابقة (بقية حركة المرور) ← SS_OUTBOUND_TO_DE
    أي حركة مرور متبقية تصل إلى PUBLIC_RU_INBOUND يتم توجيهها إلى عقدة DE عبر الـ Outbound الخاص بـ Shadowsocks الذي أنشأناه سابقاً.


لست مضطراً لاستخدام Shadowsocks كبروتوكول عبور — يمكنك استخدام VLESS بدلاً من ذلك. فقط تأكد من تحديث إعدادك وفقاً لذلك.