التوجيه من جانب الخادم
هذا الدليل مخصص فقط كعرض توضيحي للتوجيه من جانب الخادم. لا تفترض أن نسخ هذه الأمثلة سيُنتج إعداداً كاملاً وصالحاً للاستخدام في الإنتاج. فهو لا يغطي جميع إمكانيات Xray-core، ولا يُضمن أن يعمل بشكل مثالي في كل بيئة.
للاطلاع على التفاصيل الكاملة حول صياغة الإعداد وسلوكه، راجع توثيق Xray الرسمي.
ربما لاحظ بعض المستخدمين أن Remnawave يمسح تلقائياً مصفوفة clients من إعداد العقدة. هذا ليس خللاً، بل هو سلوك مقصود. تمسحها Remnawave لضمان الاحتفاظ فقط بالإعدادات الضرورية لكي تعمل بعض الميزات بشكل صحيح.
في هذا الدليل، سنستعرض إعداد توجيه حركة مرور البيانات من جانب الخادم باستخدام عقدتين: RU وDE. سيتصل المستخدمون بعقدة RU. ومن هناك، سيتم توجيه حركة المرور على النحو التالي:
- سيتم توجيه حركة المرور إلى مواقع
.ruمباشرةً عبر عقدةRU. - ستتم إعادة توجيه كل حركة المرور الأخرى عبر عقدة
DE.
لتحقيق ذلك، سنُنشئ مستخدم خدمة يُسهّل توجيه حركة المرور.
نتيجةً لذلك، قد يبدو "تدفق" حركة المرور على النحو التالي:
- يفتح المستخدم
google.com. - يصل الطلب أولاً إلى عقدة
RU. - تُطبّق عقدة
RUقواعد التوجيه. بما أنgoogle.comليس نطاق.ru، يتم توجيه حركة المرور إلى عقدةDE. - تُكمل عقدة
DEالاتصال بـgoogle.com.
يُشار إلى هذا النوع من إعداد التوجيه من جانب الخادم عادةً بـ "الجسر".
إنشاء ملف تعريف للإعداد لـ DE
انتقل إلى قسم ملفات تعريف الإعداد وأنشئ ملف تعريف إعداد جديداً، مثلاً 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 |
| VLESS | UUID الخاص بـ VLESS |
| Shadowsocks | كلمة مرور SS |
إعداد ملف التعريف العام
على الأرجح، لديك بالفعل ملف تعريف إعداد يتصل به مستخدموك. إذا لم يكن كذلك، راجع هذا الدليل.
في هذه الخطوة، لسنا مهتمين بـ "inbounds" — بل سنقوم بتعديل مصفوفات "outbounds" و"routing" و"rules" في ذلك الملف الشخصي.
{
"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.
{
"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.
{
"ip": ["geoip:ru"],
"outboundTag": "DIRECT"
},
{
"domain": ["geosite:category-ru"],
"outboundTag": "DIRECT"
}
فيما يلي مثال على قاعدة تُوجّه جميع حركة المرور إلى الـ Outbound الخاص بـ SS_OUTBOUND_TO_DE.
{
"inboundTag": ["PUBLIC_RU_INBOUND"],
"outboundTag": "SS_OUTBOUND_TO_DE"
}
قد يبدو ملف تعريف الإعداد العام الكامل كالتالي:
{
"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 بالترتيب، من الأعلى إلى الأسفل.
إليك كيفية عمل القواعد في مثالنا:
-
عناوين IP الخاصة (
geoip:private) ←BLOCK
يتم إرسال حركة المرور المطابقة لهذه القاعدة إلى الـ Outbound الخاص بـBLOCK، وهو بروتوكولblackhole(محجوب كلياً). -
النطاقات الخاصة (
geosite:private) ←BLOCK
مثل السابق، ولكن لأسماء النطاقات. -
حركة مرور Bittorrent (
bittorrent) ←BLOCK
يتم حجب جميع حركة مرور BitTorrent. -
عناوين IP الروسية (
geoip:ru) ←DIRECT
يتم إرسال حركة المرور المطابقة لهذه القاعدة إلى الـ Outbound الخاص بـDIRECT، وهو بروتوكولfreedom(تعمل عقدةRUكعقدة خروج). -
النطاقات الروسية (
geosite:category-ru) ←DIRECT
تخرج حركة المرور إلى النطاقات الروسية مباشرةً من عقدة RU أيضاً. -
لا توجد قاعدة مطابقة (بقية حركة المرور) ←
SS_OUTBOUND_TO_DE
أي حركة مرور متبقية تصل إلىPUBLIC_RU_INBOUNDيتم توجيهها إلى عقدةDEعبر الـ Outbound الخاص بـShadowsocksالذي أنشأناه سابقاً.
لست مضطراً لاستخدام Shadowsocks كبروتوكول عبور — يمكنك استخدام VLESS بدلاً من ذلك. فقط تأكد من تحديث إعدادك وفقاً لذلك.