بلاگ/راه‌اندازی تانل VLESS + Reality با Xray روی سرور مجازی خارج از ایران
به‌روز شده

راه‌اندازی تانل VLESS + Reality با Xray روی سرور مجازی خارج از ایران

1405/06/270 بازدید
راه‌اندازی تانل VLESS + Reality با Xray روی سرور مجازی خارج از ایران

راه‌اندازی تانل VLESS + Reality با Xray روی سرور مجازی خارج از ایران

نمایی مفهومی از تانل VLESS + Reality بین کلاینت و سرور مجازی خارج از ایران

تانل‌های قدیمی‌تر مبتنی بر V2Ray و VMess با گذشت زمان الگوهای قابل‌شناسایی در ترافیک TLS خود دارند و ابزارهای تحلیل ترافیک می‌توانند آن‌ها را از ترافیک HTTPS معمولی تفکیک کنند. پروتکل Reality که در کنار VLESS در هستهٔ Xray ارائه شده، این مشکل را با روش متفاوتی حل می‌کند: به‌جای شبیه‌سازی TLS، از یک هندشیک TLS واقعی با یک وب‌سایت معتبر استفاده می‌کند و نیازی به دامنه یا گواهی SSL جداگانه ندارد.

در این راهنما مراحل نصب Xray، تولید کلیدهای Reality، پیکربندی سمت سرور و کلاینت و آزمایش اتصال را روی یک سرور مجازی خارج از ایران با جزئیات کامل بررسی می‌کنیم.

پروتکل Reality چیست و چه تفاوتی با روش‌های قدیمی دارد

در تانل‌های مبتنی بر TLS معمولی (مثل VMess+TLS یا V2Ray+WS+TLS)، سرور باید یک گواهی SSL معتبر برای دامنهٔ خودش ارائه کند. این هندشیک TLS، حتی اگر گواهی معتبر باشد، الگوهایی دارد که با نسخهٔ TLS یک سایت واقعی تفاوت جزئی دارد و ابزارهای DPI پیشرفته می‌توانند این تفاوت را تشخیص دهند.

Reality این مشکل را دور می‌زند: سرور به‌جای صدور گواهی برای خودش، هندشیک TLS را عیناً از یک سایت هدف واقعی (مثلاً یک وب‌سایت پربازدید با پشتیبانی TLS 1.3) قرض می‌گیرد. کاربری که کلید معتبر ندارد، دقیقاً همان چیزی را می‌بیند که هنگام بازدید مستقیم از آن سایت می‌دید؛ اما کلاینتی که UUID و کلید عمومی درست را دارد، به‌جای محتوای آن سایت، به تونل واقعی هدایت می‌شود. نتیجه این است که سرور به دامنه یا گواهی SSL نیاز ندارد و اثر انگشت ترافیک به یک اتصال HTTPS معمولی نزدیک‌تر است.

VLESS هم پروتکل انتقالی سبک‌تری نسبت به VMess است؛ بدون رمزنگاری اضافهٔ داخلی کار می‌کند چون این وظیفه را به لایهٔ TLS/Reality واگذار می‌کند، و همین سادگی سربار پردازشی کمتری روی سرور ایجاد می‌کند.

مقایسه Reality با تانل‌های قدیمی‌تر

ویژگیVMess + TLSShadowsocksVLESS + Reality
نیاز به دامنه و گواهی SSLبلهخیرخیر
مقاومت در برابر تحلیل DPI پیشرفتهمتوسطکم تا متوسطبالا
سربار رمزنگاریدارد (رمزنگاری داخلی VMess + TLS)داردکمتر (رمزنگاری فقط در لایهٔ Reality)
پیچیدگی راه‌اندازی اولیهمتوسط (نیاز به دامنه و صدور گواهی)کمکم تا متوسط
وابستگی به اعتبار دامنه سروربلهخیرخیر (از هویت یک سایت دیگر استفاده می‌کند)

هیچ‌کدام از این روش‌ها تضمین صددرصدی نمی‌دهند؛ ابزارهای شناسایی هم پیوسته به‌روز می‌شوند. اما در زمان نگارش این مقاله، Reality به دلیل هندشیک TLS واقعی، نسبت به گزینه‌های قدیمی‌تر شناسایی سخت‌تری دارد. برای مقایسه با یک جایگزین دیگر که به‌جای TLS روی UDP کار می‌کند، راه‌اندازی VPN اختصاصی با WireGuard هم گزینه‌ای با معماری سبک‌تر است، هرچند مقاومت آن در برابر DPI با Reality قابل مقایسه نیست.

پیش‌نیازها

  • یک سرور مجازی خارج از ایران با IP عمومی و دسترسی root یا sudo.
  • سیستم‌عامل لینوکس؛ این راهنما روی Ubuntu 22.04/24.04 آزمایش شده و روی توزیع‌های دیگر با تفاوت جزئی در نام سرویس‌ها یکسان است.
  • پورت 443 باز روی فایروال سرور و پنل ارائه‌دهنده.
  • بدون نیاز به دامنه ثبت‌شده یا گواهی SSL.

اگر هنوز سروری برای این کار ندارید، سرور مجازی ابری آریانت با موقعیت‌های مکانی مختلف در خارج از ایران و آی‌پی تمیز، گزینهٔ مناسبی برای این سناریو است.

نصب Xray روی سرور

اسکریپت نصب رسمی پروژه XTLS، هستهٔ Xray را به‌همراه سرویس systemd نصب می‌کند:

bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install

پس از پایان نصب، نسخه را بررسی کنید:

xray version

فایل تنظیمات پیش‌فرض در مسیر /usr/local/etc/xray/config.json قرار می‌گیرد و همین فایل را در مرحلهٔ بعد ویرایش می‌کنیم.

تولید کلیدها و شناسه‌های Reality

Reality به یک جفت کلید X25519، یک UUID برای هر کاربر و یک یا چند shortId نیاز دارد. جفت‌کلید را با خود باینری Xray بسازید:

xray x25519

خروجی دو مقدار PrivateKey و Password (کلید عمومی) می‌دهد. کلید خصوصی روی سرور می‌ماند، کلید عمومی در تنظیمات کلاینت استفاده می‌شود. سپس یک UUID بسازید:

xray uuid

و یک shortId هشت‌بایتی:

openssl rand -hex 8

هر سه مقدار (کلید خصوصی، UUID، shortId) را جایی یادداشت کنید؛ در دو مرحلهٔ بعد به آن‌ها نیاز داریم.

پیکربندی سمت سرور

فایل /usr/local/etc/xray/config.json را با محتوای زیر جایگزین کنید و مقادیر داخل <> را با مقادیر واقعی خود پر کنید:

{
  "inbounds": [
    {
      "listen": "0.0.0.0",
      "port": 443,
      "protocol": "vless",
      "settings": {
        "clients": [
          {
            "id": "<UUID>",
            "flow": "xtls-rprx-vision"
          }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "tcp",
        "security": "reality",
        "realitySettings": {
          "dest": "www.microsoft.com:443",
          "serverNames": ["www.microsoft.com"],
          "privateKey": "<PRIVATE_KEY>",
          "shortIds": ["<SHORT_ID>"]
        }
      }
    }
  ],
  "outbounds": [
    { "protocol": "freedom" }
  ]
}

نکتهٔ مهم دربارهٔ dest و serverNames: باید یک دامنهٔ واقعی و پربازدید باشد که TLS 1.3 و HTTP/2 را پشتیبانی کند و از داخل ایران هم قابل دسترسی باشد، چون سرور هندشیک را واقعاً به آن آدرس ارسال می‌کند. سایت‌های بزرگ با CDN توزیع‌شده معمولاً گزینهٔ مطمئن‌تری هستند تا دامنه‌های کوچک یا کم‌بازدید.

فایل را با دستور زیر از نظر ساختار JSON بررسی کنید، سپس سرویس را فعال و اجرا کنید:

xray run -test -config /usr/local/etc/xray/config.json
sudo systemctl enable xray
sudo systemctl restart xray
sudo systemctl status xray

در نهایت پورت 443 را در فایروال باز کنید:

sudo ufw allow 443/tcp

مسیر ترافیک در تانل VLESS + Reality: کلاینت مجاز به تونل واقعی هدایت می‌شود و بازدیدکنندهٔ بدون کلید صرفاً محتوای سایت هدف را می‌بیند

پیکربندی سمت کلاینت

روی دستگاه کلاینت، برنامه‌های سازگار با VLESS و Reality مثل v2rayN و NekoRay (ویندوز)، v2rayNG (اندروید) یا Streisand (iOS) را نصب کنید. ساده‌ترین راه، ساخت یک لینک اشتراک‌گذاری به فرمت زیر و وارد کردن آن در برنامه است:

vless://<UUID>@<SERVER_IP>:443?encryption=none&security=reality&sni=www.microsoft.com&fp=chrome&pbk=<PUBLIC_KEY>&sid=<SHORT_ID>&type=tcp&flow=xtls-rprx-vision#my-reality-tunnel

مقادیر <UUID>، <SERVER_IP>، <PUBLIC_KEY> و <SHORT_ID> را با مقادیر واقعی سرور جایگزین کنید. پارامتر sni باید دقیقاً همان مقداری باشد که در serverNames سمت سرور گذاشتید. اکثر برنامه‌های کلاینت این لینک را با اسکن یا چسباندن مستقیم می‌پذیرند و بقیهٔ فیلدها را خودکار پر می‌کنند.

تست اتصال

پس از وارد کردن پروفایل، اتصال را از دو زاویه بررسی کنید. اول، از خود کلاینت به یک سرویس بررسی IP وصل شوید و مطمئن شوید آی‌پی نمایش‌داده‌شده همان آی‌پی سرور مجازی است، نه آی‌پی محلی. دوم، روی سرور لاگ سرویس را زیر نظر بگیرید تا هندشیک‌های موفق را ببینید:

sudo journalctl -u xray -f

اگر اتصال برقرار نمی‌شود، رایج‌ترین علت‌ها این‌هاست: پورت 443 روی فایروال یا پنل ارائه‌دهنده بسته مانده، مقدار sni سمت کلاینت با serverNames سمت سرور یکی نیست، یا ساعت سیستم سرور با زمان واقعی هماهنگ نیست (هندشیک TLS به زمان سیستم حساس است).

نکات امنیتی و کاهش ریسک شناسایی

چند نکتهٔ عملی برای نگهداری بلندمدت یک تانل پایدار:

  • هستهٔ Xray را به‌روز نگه دارید؛ آسیب‌پذیری‌ها و روش‌های شناسایی جدید هر چند وقت یک‌بار کشف می‌شوند و آپدیت مقابله با آن‌ها را ساده‌تر می‌کند.
  • برای هر کاربر یک UUID جداگانه بسازید تا در صورت افشای یکی، بقیه تحت تأثیر قرار نگیرند.
  • دسترسی SSH به سرور را هم با کلید امن کنید، نه فقط تنظیمات Xray؛ تانل امن روی یک سرور با SSH ناامن فایده چندانی ندارد.
  • تغییرات مکرر و بی‌دلیل در پورت یا shortId معمولاً لازم نیست؛ ثبات پیکربندی در بلندمدت مؤثرتر از تغییر مداوم است، مگر اینکه نشانه‌ای از اختلال ببینید.
  • ترافیک غیرعادی حجیم یا الگوی مصرف پیوسته و یکنواخت در ساعات غیرمعمول، خودش یک نشانهٔ قابل‌تشخیص است؛ مصرف طبیعی‌تر ریسک را کمتر می‌کند.

جمع‌بندی

VLESS همراه با Reality روی Xray، بدون نیاز به دامنه یا گواهی SSL، یک تانل شخصی می‌سازد که هندشیک TLS آن با یک سایت واقعی یکسان است. این ترکیب باعث می‌شود اثر انگشت ترافیک نسبت به VMess یا Shadowsocks به یک اتصال HTTPS معمولی نزدیک‌تر باشد. مراحل اصلی شامل نصب Xray، تولید کلید X25519 و UUID، تنظیم config.json با dest و serverNames مناسب، و ساخت لینک کلاینت است.

برای این نوع تانل به یک سرور مجازی خارج از ایران با آی‌پی پایدار نیاز دارید. سرور مجازی آریانت را می‌توانید در چند دقیقه راه‌اندازی کنید و همین امروز پیکربندی بالا را روی آن آزمایش کنید.