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

في هذا المثال، سنستعرض كيفية إعداد توجيه الخادم باستخدام مستخدمي الخدمة في لوحة Remnawave.

توجيه الخادم

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

لنفترض أن لدينا خادمين: RU-001 وDE-001.

سيتصل المستخدمون بالخادم RU-001، وسنقوم بـ توجيه حركة المرور: إرسال مواقع .ru مباشرةً، وكل شيء آخر إلى الخادم DE-001.

لحل هذه المهمة، نحتاج إلى إنشاء مستخدم خدمة سنجري من خلاله عملية التوجيه.

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

انتقل إلى قسم Config Profiles وأنشئ ملف تعريف جديدًا، وأعطه اسم 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": []
}
}

احفظ التكوين المحدَّث.

انتقل إلى قسم Internal Squad (لإنشاء فريق جديد انقر على علامة الجمع في الزاوية اليمنى). في هذا الفريق، قم بتفعيل الـ inbound المنشأ حديثًا BRIDGE_DE_IN من ملف التعريف Bridge Profile.

تأكد كذلك من تفعيل هذا الـ inbound وملف التعريف في بطاقة العقدة — في حالتنا، عقدة DE-001.

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

انتقل إلى قسم Users، وأنشئ مستخدمًا باسم bridge_user_001. تأكد من عدم وجود حد للبيانات لهذا المستخدم، وضع تاريخ انتهاء الاشتراك نحو عام 2099. (فنحن لا نريد أن تقوم اللوحة بتعطيل المستخدم بسبب بلوغ حد البيانات أو انتهاء صلاحية الاشتراك.)

لا تنسَ تفعيل الفريق لهذا المستخدم — في حالتنا، نفعّل الفريق الذي أنشأناه أعلاه.

بعد إنشاء المستخدم بنجاح، افتح بطاقته ومن القائمة (زر More Actions) انقر على قسم Detailed Info.

في هذا القسم، انزل إلى الأسفل وبحسب نوع الـ inbound لديك، انسخ المعلومات المطلوبة.

البروتوكولالتسمية في اللوحة
ShadowsocksSS Password
VLESSVLESS UUID
TrojanTrojan Password

في النهاية، يجب أن يكون بحوزتك كلمة مرور للاتصال.

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

من المرجح أن هذا الملف موجود بالفعل لديك، ويستخدمه المستخدمون للاتصال. لا حاجة للمس قسم 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 OWN VALUE!",
"show": false,
"xver": 0,
"shortIds": [""],
"privateKey": "USE OWN KEY!",
"serverNames": ["REPLACE WITH 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" }
]
}
}

إذن، المهمة الأساسية أمامنا: يتصل المستخدمون بالخادم RU-001 عبر بروتوكول VLESS، ثم نعيد توجيه حركة المرور.

Outbound

أولًا، نحتاج إلى بناء الـ outbound.

{
"tag": "SS_OUTBOUND_TO_DE",
"protocol": "shadowsocks",
"settings": {
"servers": [
{
"address": "ADDRESS OF DE-001",
"password": "PASSWORD FROM PREVIOUS STEP",
"port": 9999,
"level": 0,
"method": "chacha20-ietf-poly1305"
}
]
}
}
القيمةما يجب إدخاله
addressعنوان IP أو اسم النطاق الموجَّه نحو خادمك، مثلًا عنوان IP لخادم DE-001
portمنفذ الـ inbound، في حالتنا هو منفذ BRIDGE_DE_IN
passwordكلمة مرور المستخدم للاتصال (قد تختلف القيم بحسب البروتوكول، انظر أعلاه)

في حالة Shadowsocks — لا تستخدم أي طريقة سوى chacha20-ietf-poly1305، لأن Remnawave يدعم هذه الطريقة فقط.

التوجيه

مثال على قاعدة تُرسل كل حركة المرور إلى الـ outbound المحدد أعلاه.

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

مثال على قواعد تُرسل مواقع RU مباشرةً (خروجًا من عقدة RU-001)، وكل شيء آخر إلى DE-001.

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

الآن نجمع التكوين الكامل، وسيبدو هكذا.

{
"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 OWN VALUE!",
"show": false,
"xver": 0,
"shortIds": [""],
"privateKey": "USE OWN KEY!",
"serverNames": ["REPLACE WITH OWN VALUES!"]
}
}
}
],
"outbounds": [
{ "protocol": "freedom", "tag": "DIRECT" },
{ "protocol": "blackhole", "tag": "BLOCK" },
{
"tag": "SS_OUTBOUND_TO_DE",
"protocol": "shadowsocks",
"settings": {
"servers": [
{
"address": "ADDRESS OF DE-001",
"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"
}
]
}
}

بذلك أضفنا SS_OUTBOUND_TO_DE إلى مصفوفة outbounds، وأضفنا القواعد إلى مصفوفة rules داخل كائن routing.

تعمل القواعد في Xray بمبدأ الترتيب. يمكن تفسير قواعدنا تقريبًا على النحو التالي:

  1. إذا كان عنوان IP ضمن geoip:privateBLOCK (يُرسل إلى الـ outbound BLOCK الذي هو blackhole أي يُحجب).
  2. إذا كان النطاق ضمن فئة geosite:private — نفس الإجراء.
  3. كذلك بالنسبة لحركة مرور bittorrent.
  4. إذا كان عنوان IP ضمن geoip:ru — يُرسل إلى DIRECT Outbound، وبالتالي تخرج حركة المرور من خادم RU-001.
  5. إذا كان النطاق ضمن فئة geosite:category-ru — يُرسل أيضًا إلى DIRECT.
  6. إذا جاءت حركة المرور من الـ inbound PUBLIC_RU_INBOUND — نرسلها إلى SS_OUTBOUND_TO_DE (ثم تنتقل إلى خادمنا DE-001).

الخاتمة

في هذا المثال حصلنا على المخطط التالي:

  • يتصل المستخدم بالخادم RU-001 باستخدام بروتوكول VLESS
  • تخضع حركة المرور للقواعد:
    • مواقع (أو IP) روسية — تخرج مباشرةً (DIRECT)
    • كل حركة المرور الأخرى — تُرسل عبر بروتوكول shadowsocks إلى الخادم DE-001

يمكن كذلك استخدام VLESS كبروتوكول عبور، والفرق الرئيسي سيكون في الـ outbound فقط.