راه اندازی Xray روی سرور لینوکس (VLESS + REALITY)

این راهنمای ساده برای اجرای Xray روی VPS و اتصال از اپلیکیشن کلاینت است.

محتوای این راهنما

پیش‌نیازها


1) ساخت VPS

  1. یک ارائه‌دهنده ابری مناسب انتخاب کنید.
  2. یک ماشین مجازی با Ubuntu LTS بسازید.
  3. برای تا چهار کاربر، ۱ vCPU و ۱ گیگابایت RAM یک شروع مناسب است.
  4. احراز هویت SSH را فعال کنید.
  5. آدرس IPv4 و در صورت امکان IPv6 و gateway را یادداشت کنید.
sudo apt update && sudo apt upgrade -y

2) فعال‌سازی IPv6

گاهی ارائه‌دهندگان اینترنت کاربران (ISP) ممکن است IPv4 را مسدود کنند، اما IPv6 را نه. در این راهنما، منظور از ارائه‌دهنده ابری شرکتی است که VPS شما را میزبانی می‌کند. IPv6 را در پنل مدیریت ارائه‌دهنده ابری فعال و نشانی IPv6 و gateway اختصاص‌یافته را بررسی کنید.

ip -6 addr show
ip -6 route

نمونه Netplan زیر را فقط زمانی به‌کار ببرید که ارائه‌دهنده ابری IPv6 را خودکار پیکربندی نمی‌کند. آن را بدون تغییر اعمال نکنید؛ مقدارهای دقیق را از تنظیمات شبکه ارائه‌دهنده یا خود VPS بردارید:

طول پیشوند (عدد بعد از /) را ارائه‌دهنده تعیین می‌کند؛ مقدار اختصاص‌یافته را به‌کار ببرید و /24 یا /64 را حدس نزنید.

نمونه پیکربندی Netplan:

network:
  version: 2
  ethernets:
    YOUR_INTERFACE_NAME:
      match:
        macaddress: "YOUR_MAC_ADDRESS"
      addresses:
      - "YOUR_IPV4/CIDR"
      - "YOUR_IPV6/CIDR"
      nameservers:
        addresses:
        - "YOUR_DNS_IPV4_1"
        - "YOUR_DNS_IPV4_2"
        search: []
      routes:
      - to: "0.0.0.0/0"
        via: "YOUR_IPV4_GATEWAY"
      - to: "::/0"
        via: "YOUR_IPV6_GATEWAY"
sudo netplan apply

3) تولید مقادیر اتصال Xray

در این راهنما با دو مورد جداگانه سروکار داریم: config.json فایل پیکربندی Xray روی سرور است، اما VLESS URL حاوی اطلاعات اتصالی است که در اپلیکیشن کلاینت وارد می‌شود. در VLESS URL از کلید عمومی REALITY استفاده کنید، نه کلید خصوصی.

دستور xray x25519 کلید خصوصی و کلید عمومی متناظر را نمایش می‌دهد. در بعضی نسخه‌های Xray، مقدار کلید عمومی کلاینت با عنوان Password نشان داده می‌شود؛ همان مقدار را برای pbk به‌کار ببرید، نه کلید خصوصی را. دستور openssl rand -hex 8 در هر بار اجرا یک Short ID شانزده‌رقمی تولید می‌کند. برای ساخت UUID در لینوکس دستور cat /proc/sys/kernel/random/uuid و در macOS دستور uuidgen را اجرا کنید.

cat /proc/sys/kernel/random/uuid
/usr/local/bin/xray x25519
openssl rand -hex 8

4) تنظیم و اجرای Xray

دستور زیر کل نمونه را در فایل پیکربندی سرور Xray به نشانی /usr/local/etc/xray/config.json می‌نویسد و اگر فایل از قبل وجود داشته باشد، آن را جایگزین می‌کند. پیش از جایگزینی، از فایل موجود نسخه پشتیبان بگیرید؛ اگر Xray را از قبل پیکربندی کرده‌اید، همان فایل را ویرایش کنید.

realitySettings فایل جداگانه‌ای نیست؛ بخشی از config.json است که تنظیمات REALITY این اتصال ورودی را مشخص می‌کند. در این نمونه:

مقدار 0.0.0.0 در بخش listen یعنی Xray روی همه رابط‌های شبکه IPv4 منتظر اتصال می‌ماند؛ این IP عمومی VPS شما نیست. مقدارهای 0.0.0.0/0 و ::/0 در نمونه Netplan هم به معنی مسیر پیش‌فرض هستند. این مقدارهای ویژه را تغییر ندهید.

این نمونه فقط روی IPv4 گوش می‌دهد. برای پذیرش اتصال‌های IPv6، مقدار listen ورودی را از 0.0.0.0 به :: تغییر دهید.

مقدارهای YOUR_... را جایگزین کنید، اما علامت‌های نقل‌قول، ویرگول‌ها و آکولادهای JSON را نگه دارید.

sudo tee /usr/local/etc/xray/config.json << 'EOF'
{
  "log": { "loglevel": "warning" },
  "inbounds": [
    {
      "listen": "0.0.0.0",
      "port": 443,
      "protocol": "vless",
      "settings": {
        "clients": [
          { "id": "YOUR_UUID_USER1", "flow": "xtls-rprx-vision" },
          { "id": "YOUR_UUID_USER2", "flow": "xtls-rprx-vision" }
        ],
        "decryption": "none"
      },
      "streamSettings": {
        "network": "tcp",
        "security": "reality",
        "realitySettings": {
          "show": false,
          "dest": "YOUR_SNI_HOST:443",
          "xver": 0,
          "serverNames": ["YOUR_SNI_HOST"],
          "privateKey": "YOUR_PRIVATE_KEY",
          "shortIds": ["YOUR_SHORT_ID"]
        }
      }
    }
  ],
  "outbounds": [{ "protocol": "freedom" }]
}
EOF
sudo /usr/local/bin/xray -test -config /usr/local/etc/xray/config.json
sudo systemctl restart xray

پیش از استفاده از آدرس IPv6 در VLESS URL، مطمئن شوید Xray اتصال‌های IPv6 را می‌پذیرد. دستور sudo ss -lntp 'sport = :443' را اجرا کنید. وجود LISTEN و [::]:443 شنونده IPv6 را تأیید می‌کند؛ 0.0.0.0:443 یعنی شنونده فقط IPv4 است. این بررسی خود VPS را نشان می‌دهد، نه فایروال ابری را. فایروال ابری نیز باید جداگانه TCP 443 ورودی روی IPv6 را مجاز کند.


5) تنظیمات فایروال

اگر هر دو فایروال ارائه‌دهنده ابری و فایروال سرور فعال هستند، ترافیک ورودی TCP روی پورت 443 را در هر دو برای Xray مجاز کنید.

sudo ufw allow 443/tcp
sudo ufw reload

6) قالب VLESS URL

vless://YOUR_UUID@YOUR_SERVER_ADDRESS:443?encryption=none&security=reality&sni=YOUR_SNI_HOST&fp=chrome&pbk=YOUR_PUBLIC_KEY&sid=YOUR_SHORT_ID&flow=xtls-rprx-vision#YOUR_LABEL

مقدارهای جای‌نگهدار را این‌طور جایگزین کنید:

VLESS URL هر کاربر حاوی UUID اوست که مانند اعتبارنامه دسترسی عمل می‌کند. هر URL را به‌صورت خصوصی فقط با کاربر مربوط به آن به‌اشتراک بگذارید. کلید خصوصی REALITY فقط در config.json سرور قرار می‌گیرد و هرگز نباید در VLESS URL باشد.


7) اضافه کردن کاربران جدید

UUID جدیدی بسازید و آن را به فهرست clients در config.json اضافه کنید. پیکربندی را آزمایش و Xray را مجدداً راه‌اندازی کنید، سپس با آن UUID یک VLESS URL بسازید و به‌صورت خصوصی با کاربر به‌اشتراک بگذارید.


8) مانیتورینگ و عیب‌یابی

برای بررسی اجرا بودن Xray و دیدن گزارش‌ها هنگام وصل نشدن کلاینت، این دستورها را جداگانه اجرا کنید:

sudo systemctl status xray --no-pager
sudo journalctl -u xray -n 100 --no-pager -l
sudo journalctl -u xray -f

نکات