راه اندازی Xray روی سرور لینوکس (VLESS + REALITY)
این راهنمای ساده برای اجرای Xray روی VPS و اتصال از اپلیکیشن کلاینت است.
محتوای این راهنما
- الگوی
config.jsonسمت سرور برای VLESS + REALITY - راهاندازی IPv6 روی VPS
- مدیریت کاربران
- مانیتورینگ و عیبیابی
پیشنیازها
- یک VPS لینوکس
- دسترسی root یا sudo
- نصب Xray
- یک اپلیکیشن که VLESS + REALITY را پشتیبانی کند
1) ساخت VPS
- یک ارائهدهنده ابری مناسب انتخاب کنید.
- یک ماشین مجازی با Ubuntu LTS بسازید.
- برای تا چهار کاربر، ۱ vCPU و ۱ گیگابایت RAM یک شروع مناسب است.
- احراز هویت SSH را فعال کنید.
- آدرس 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 بردارید:
YOUR_INTERFACE_NAME: نام رابط شبکه در خروجیip -br link؛ برای مثالens3.YOUR_MAC_ADDRESS: نشانی MAC در خروجیcat /sys/class/net/YOUR_INTERFACE_NAME/address؛YOUR_INTERFACE_NAMEرا با نام واقعی رابط شبکه جایگزین کنید.YOUR_IPV4/CIDRوYOUR_IPV6/CIDR: نشانیهای اختصاصیافته و طول پیشوند را از پنل ارائهدهنده یا خروجیip addr showبردارید. اگر ارائهدهنده از NAT استفاده کند، ممکن است IPv4 عمومی درip addrنمایش داده نشود.YOUR_IPV4_GATEWAYوYOUR_IPV6_GATEWAY: دروازههای پیشفرض را از خروجیip -4 route show defaultوip -6 route show defaultیا پنل ارائهدهنده بردارید.YOUR_DNS_IPV4_1وYOUR_DNS_IPV4_2: نشانی سرورهای DNS را از پنل ارائهدهنده یا خروجیresolvectl statusبردارید.
طول پیشوند (عدد بعد از /) را ارائهدهنده تعیین میکند؛ مقدار اختصاصیافته را بهکار ببرید و /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 استفاده کنید، نه کلید خصوصی.
- برای هر کاربر یک UUID بسازید. آن را در ورودی همان کاربر در فهرست
clientsفایلconfig.jsonو VLESS URL او قرار دهید؛ UUID کاربر را مشخص میکند. - یک جفت کلید REALITY بسازید. کلید خصوصی را در فیلد
privateKeyپیکربندی سرور و کلید عمومی متناظر را با نامpbkدر VLESS URL قرار دهید. - یک Short ID بسازید. آن را به فهرست
shortIdsدر پیکربندی سرور اضافه کنید و همان مقدار را با نامsidدر VLESS URL قرار دهید.
دستور 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 این اتصال ورودی را مشخص میکند. در این نمونه:
destنام میزبان و پورتی است که REALITY به آن متصل میشود؛ در اینجاYOUR_SNI_HOST:443است.serverNamesنام میزبانی را مشخص میکند که در فیلد TLS SNI پذیرفته میشود. مقدارsniدر VLESS URL باید دقیقاً با آن یکسان باشد.privateKeyکلید خصوصی و محرمانه سرور برای REALITY است. آن را فقط در این فایل نگه دارید؛ کلید عمومی متناظر را با نامpbkدر VLESS URL بگذارید.shortIdsفهرست شناسههای کوتاهی است که سرور میپذیرد. مقدارsidدر VLESS URL باید با یکی از آنها یکسان باشد.- برای این نمونه،
showراfalseوxverرا0نگه دارید.
مقدار 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
مقدارهای جاینگهدار را اینطور جایگزین کنید:
YOUR_UUID: UUID کاربر؛ باید با مقدارidهمان کاربر درconfig.jsonیکسان باشد.YOUR_SERVER_ADDRESS: IP عمومی VPS یا نام میزبان آن. برای IPv6، نشانی را داخل کروشه بگذارید و پسوند CIDR را ننویسید:@[YOUR_IPV6]:443. برای IPv4 (@YOUR_IPV4:443) و نام میزبان (@YOUR_HOSTNAME:443) کروشه نگذارید. هر جاینگهدار را با نشانی واقعی سرور خود جایگزین کنید.YOUR_SNI_HOST: نام میزبان دقیق درrealitySettings.serverNamesو بخش نام میزبان درdest؛ نام کامل را بنویسید، مانندwww.example.com، بدونhttps://یا مسیر.YOUR_PUBLIC_KEY: کلید عمومی متناظر باprivateKeyسرور؛ ممکن است در خروجیxray x25519با عنوانPasswordنمایش داده شود.YOUR_SHORT_ID: یکی از مقدارهایrealitySettings.shortIds.YOUR_LABEL: برچسبی اختیاری و غیرحساس برای اتصال در اپلیکیشن کلاینت است؛ برای احراز هویت استفاده نمیشود و درconfig.jsonقرار نمیگیرد.
VLESS URL هر کاربر حاوی UUID اوست که مانند اعتبارنامه دسترسی عمل میکند. هر URL را بهصورت خصوصی فقط با کاربر مربوط به آن بهاشتراک بگذارید. کلید خصوصی REALITY فقط در config.json سرور قرار میگیرد و هرگز نباید در VLESS URL باشد.
7) اضافه کردن کاربران جدید
UUID جدیدی بسازید و آن را به فهرست clients در config.json اضافه کنید. پیکربندی را آزمایش و Xray را مجدداً راهاندازی کنید، سپس با آن UUID یک VLESS URL بسازید و بهصورت خصوصی با کاربر بهاشتراک بگذارید.
8) مانیتورینگ و عیبیابی
برای بررسی اجرا بودن Xray و دیدن گزارشها هنگام وصل نشدن کلاینت، این دستورها را جداگانه اجرا کنید:
- بررسی کنید سرویس Xray در حال اجراست یا نه:
sudo systemctl status xray --no-pager
- نمایش ۱۰۰ گزارش اخیر:
sudo journalctl -u xray -n 100 --no-pager -l
- دنبالکردن زنده گزارشهای جدید هنگام عیبیابی؛ برای توقف
Ctrl+Cرا بزنید:
sudo journalctl -u xray -f
نکات
- آدرسهای واقعی IP، UUIDها، کلیدهای خصوصی، کلیدهای عمومی، Short IDها و لینکهای VLESS را commit نکنید.
- اگر این اطلاعات عمومی شده است، مجدداً Rotate کنید.
- برای هر کاربر UUID جداگانه استفاده کنید.
- UUID داخل هر VLESS URL اعتبارنامه همان کاربر است. URL را بهصورت خصوصی بهاشتراک بگذارید؛ هرکس آن را بهدست آورد میتواند با آن UUID متصل شود.
- بسته به ارائهدهنده ابری، ممکن است بتوان IP عمومی VPS را تغییر داد. در این صورت، نشانی سرور را در VLESS URL هر کاربر هم بهروزرسانی کنید.
- IP کاربران در لاگها حساس است.