Skip to content

Latest commit

 

History

History
155 lines (118 loc) · 7.75 KB

File metadata and controls

155 lines (118 loc) · 7.75 KB

راهنمای سرعت و پایداری — بخش‌های غیرتونل

این راهنما همه‌ی جاهایی که می‌توان بعد از تونل (rathole + kcp) سرعت و پایداری را بهتر کرد جمع کرده. ترتیب از «بیشترین تأثیر» به «کمترین» است. هر تغییر را جدا اعمال کن و تست بگیر.

یادآوری معماری: کاربر → TLS/۴۴۳/دامنه → nginx (روی rp01) → rathole-server → تونل (websocket یا kcp) → نود → Xray → اینترنت. پس چهار نقطه‌ی قابل‌تنظیم داریم: تونل، کرنل دو سرور، Xray نود، کلاینت کاربر. nginx فقط یک پراکسی سبک در مسیر است.


۰) قبل از هر چیز: گلوگاه را پیدا کن

# کرنل: BBR روشن است؟ (هر دو سرور)
sysctl net.ipv4.tcp_congestion_control      # باید: bbr

# مصرف CPU/شبکه‌ی لحظه‌ای
top -d1            # آیا xray یا nginx یا kcptun CPU را پر کرده؟
# پکت‌لاس/پایداری مسیر سرور-به-سرور
mtr -rwc 30 <IP-طرف-مقابل>
  • اگر mtr لاس بالا داشت → مشکل مسیر است؛ kcp/FEC (تونل) جواب می‌دهد، نه تنظیم Xray.
  • اگر CPU پر بود → مشکل رمزگذاری/مالتی‌پلکس است؛ سراغ بخش Xray برو.
  • اگر هیچ‌کدام و باز هم کند → احتمال throttle شدن IP نود.

۱) Xray — بیشترین تأثیر روی لگ ریلز

۱-۱) mux را خاموش کن (مهم‌ترین تغییر برای ریلز)

mux چند استریم را روی یک کانکشن قاطی می‌کند؛ یک ریلز سنگین بقیه را بلاک می‌کند (head-of-line blocking). در کلاینت (ساب کاربر) و در outbound:

"mux": { "enabled": false }

۱-۲) از رمزگذاری دوبل پرهیز کن

مسیر کاربر↔ایران از قبل TLS دارد و تونل هم رمز دارد. پس اینباندهای تراکر روی نود را سبک نگه دار:

  • VLESS + WS با "security": "none" (TLS=off) روی نود — چون rathole/nginx ترمینیت می‌کند.
  • TLS اضافی فقط جایی که برای استتار لازم است (مثل سرویس game با گواهی واقعی).

۱-۳) sockopt روی outbound نود (خروج به اینترنت)

"streamSettings": {
  "sockopt": {
    "tcpNoDelay": true,
    "tcpFastOpen": true,
    "tcpKeepAliveIdle": 30,
    "mark": 0
  }
}

۱-۴) DNS سریع روی نود (جلوگیری از کندیِ resolve)

در کانفیگ Xray نود:

"dns": { "servers": ["1.1.1.1", "8.8.8.8", "localhost"] }

و outbound با "domainStrategy" معقول. اگر سایت‌ها IPv6 کند دارند، "domainStrategy": "UseIPv4".

۱-۵) بافر و سطح لاگ

"policy": { "levels": { "0": { "bufferSize": 512 } } },
"log": { "loglevel": "warning" }
  • loglevel: warning (نه debug) تا I/O لاگ، CPU را نخورد.
  • bufferSize بزرگ‌تر برای throughput بهتر در فایل‌های حجیم/ویدئو.

۱-۶) نسخه‌ی Xray را به‌روز نگه دار

نسخه‌های جدید بهینه‌سازی‌های TCP/Vision دارند. اگر خیلی قدیمی است، آپدیت کن.


۲) کرنل هر دو سرور — با tune خودکار می‌شود

ratholectl tune     # روی ایران
ratholenode tune    # روی نود

این‌ها را ست می‌کند (بدون ریبوت، بدون قطع تونل):

  • BBR + fq (کنترل ازدحام مدرن؛ مهم‌ترین برد کرنل).
  • بافر بزرگ UDP (rmem_max/wmem_max=25MB) — برای throughput بالای kcp ضروری.
  • file-max / conntrack_max / somaxconn / backlog بالا — رفع ۵۰۲ زیر برست.
  • tcp_fastopen، mtu_probing، slow_start_after_idle=0.

تأیید:

sysctl net.ipv4.tcp_congestion_control net.core.rmem_max

۳) انتخاب تونل و پروفایل FEC

# روی ایران:
ratholectl kcp on 443 balanced      # استتار QUIC + افزونگی ~۳۰٪ (پیش‌فرض)
ratholectl kcp on 443 lossy         # loss زیاد روی مسیر → parity بیشتر
ratholectl kcp on 443 aggressive    # کم‌ترین لتنسی (mode fast3، پنجره بزرگ)
# روی نود (همان پروفایل):
ratholenode kcp on <IRAN_IP>:443 <KEY> <profile>
  • balanced: حالت عادی. شروع از این.
  • lossy: اگر هنوز بافر داری و mtr لاس بالا نشان می‌دهد (مثلاً >۸٪).
  • aggressive: اگر پهنای‌باند کافی است و فقط لتنسی/پایداری می‌خواهی (parity ۴، mode تهاجمی).
  • خاموش‌کردن و برگشت به websocket/۴۴۳: ratholenode kcp off.

استتار: پورت ۴۴۳ روی UDP برای DPI شبیه QUIC/HTTP3 است و با nginx (TCP/443) تداخل ندارد. اگر شبکه UDP بین‌المللی را throttle کرد، یا kcp off کن یا سراغ لایه‌ی obfs برو (پایین).


۴) nginx — معمولاً گلوگاه نیست

از قبل تنظیم شده: proxy_buffering off، tcp_nodelay، timeoutهای طولانی، worker_connections بالا (با tune). نکته‌ها:

  • روی مسیر داده فقط passthrough است؛ جای فشردنِ زیادی نمانده.
  • اگر nginx -t خطا نداد و doctor سبز بود، nginx مشکل سرعت نیست.
  • لاگ دسترسی را برای مسیرهای پرترافیک می‌توانی خاموش کنی تا I/O کم شود (access_log off; در location داده).

۵) کلاینت کاربر (ساب)

  • mux=off (مهم).
  • اگر کلاینت چند کانفیگ دارد، برای ریلز از کانفیگی استفاده کند که روی kcp است.
  • در v2rayNG/نکوباکس: TCP no delay روشن، Mux خاموش، concurrency پایین.
  • اگر کاربر موبایل است و وای‌فای/همراه قاطی می‌شود، tcpKeepAlive کمک می‌کند اتصال زود نمیرد.

۶) IP و نود

  • اگر همه‌ی موارد بالا انجام شد و باز کند بود، احتمالاً IP نود throttle/کثیف است.
  • یک نود/IP تمیزتر امتحان کن؛ با upstream می‌توانی نود دوم را موازی اضافه کنی و کاربران را تقسیم کنی.
  • mtr از نود به مقصد (اینستاگرام) را هم ببین، نه فقط نود↔ایران.

۷) استتار قوی‌تر (اختیاری، دستی)

اگر UDP/443 کافی نبود و شبکه kcp را اذیت کرد، می‌توان UDP را پشت یک لایه‌ی fake-TCP/obfs برد:

  • ابزار: udp2raw (روی هر دو سرور) که UDP را به‌شکل TCP درمی‌آورد و obfs دارد.
  • این فعلاً در اسکریپت خودکار نشده (برای جلوگیری از پیچیدگی تست‌نشده). اگر خواستی بگو تا به‌صورت یک زیرفرمان افزودنی (kcp obfs on) اضافه و در سندباکس تست کنم.

جمع‌بندی ترتیب اقدام

  1. tune روی هر دو سرور + BBR را چک کن.
  2. mux=off و sockopt روی Xray/کلاینت.
  3. تونل: kcp on 443 balanced → تست ریلز → اگر لازم بود lossy/aggressive.
  4. DNS سریع روی نود.
  5. اگر باز کند بود → نود/IP تمیزتر، یا obfs.

هر مرحله را جدا تست کن تا بفهمی کدام واقعاً کمک کرد.