
✅ مراحل نصب و اتصال V2Ray (Xray) روی سرور:
1. نصب Xray روی Ubuntu سرورت:
bash <(curl -Ls https://raw.githubusercontent.com/XTLS/Xray-install/main/install-release.sh)بعد از نصب، فایل باینری xray میاد تو مسیر /usr/local/bin/xray
2. ساخت فایل کانفیگ کلاینت (/etc/xray/config.json)
با توجه به لینک vless://... که دادی، کانفیگت میشه چیزی شبیه این:
{
"log": {
"loglevel": "warning"
},
"inbounds": [
{
"port": 1080,
"listen": "127.0.0.1",
"protocol": "socks",
"settings": {
"auth": "noauth"
}
}
],
"outbounds": [
{
"protocol": "vless",
"settings": {
"vnext": [
{
"address": "193.151.132.31",
"port": 48805,
"users": [
{
"id": "1316d4e4-ca39-485d-9ac1-d26be97255f4",
"encryption": "none",
"flow": ""
}
]
}
]
},
"streamSettings": {
"network": "tcp",
"security": "none",
"tcpSettings": {
"header": {
"type": "none"
}
}
}
}
]
}
3. اجرای Xray:
sudo systemctl restart xray
sudo systemctl status xray
sudo systemctl restart apache2
💡 استفاده از این پراکسی برای درخواستها
curl --socks5 127.0.0.1:1080 https://www.bbc.com/persian❌ دلیل اصلی خطا (refused to connect):
👉 سایت BBC اجازه نمیده که درون یک iframe نمایش داده بشه!
این نه ربطی به VPN داره، نه فیلترینگ، نه سرور، نه Xray.
✋ BBC توی هدر HTTP خودش اینو میفرسته:
X-Frame-Options: SAMEORIGIN✅ مرحله ۱: چک کن IP سرورت چیه (آیا عوض شده یا همونه؟)
curl ipinfo.io
curl ifconfig.me
اگر IP نشون داده شده همون آیپی ایرانیه (یعنی 87.107.164.201) که خب هیچ تغییری نکرده و xray داره بیکار میچرخه 😅
بررسی پیکربندی فایل xray
sudo nano /usr/local/etc/xray/config.jsonبررسی زنده لاگ های xray
در فایل پیکربندی config.json باید بخش log را به شکل زیر تنظیم کنی:
"log": {
"loglevel": "info",
"access": "/var/log/xray/access.log",
"error": "/var/log/xray/error.log"
}
این بخش باعث میشود که لاگهای مربوط به درخواستهای عبوری از پروکسی به فایلهای مشخصشده در مسیر /var/log/xray/access.log و خطاها به /var/log/xray/error.log ذخیره شوند.
ایجاد دایرکتوری برای ذخیره لاگها:
ممکن است دایرکتوریای که برای لاگها انتخاب کردهای هنوز وجود نداشته باشد. پس ابتدا باید آن را ایجاد کنی:
sudo mkdir -p /var/log/xray
sudo chown -R xray:xray /var/log/xray
// then restart service
sudo systemctl restart xray
حالا میتوانی درخواستها را در فایل لاگ مشاهده کنی. برای بررسی لاگها از دستور زیر استفاده کن:
اگر ترجیح میدهید که کاربر xray برای سرویس ایجاد کنید، میتوانید دستور زیر را اجرا کنید:
sudo useradd -r -s /sbin/nologin xray
sudo chown -R xray:xray /var/log/xray
sudo tail -f /var/log/xray/access.logاین دستور بهصورت زنده درخواستهای عبوری را از پروکسی نمایش میدهد.
تست TLS دستی با openssl از طریق پروکسی
ببینیم TLS کامل چطوری گیر میکنه:
torsocks openssl s_client -connect telegram.org:443یا اگر torsocks نداری:
(قبلش باید proxychains نصب باشه و فایل کانفیگش هم درست باشه که از 127.0.0.1:1080 استفاده کنه.)
proxychains openssl s_client -connect telegram.org:443
✅ چی میگه این خروجی؟
فرمان torsocks openssl s_client -connect telegram.org:443 یه تست TLS انجام میده از طریق SOCKS5 پروکسی.
و الان میبینیم که:
- TLS دستدهی کامل انجام شد
- گواهی دامنه
*.telegram.orgدرست و معتبره ✅ - اتصال به پورت 443 سرور تلگرام برقرار شده ✅
- یعنی اتصال از طریق پروکسی به تلگرام موفق بوده 🙌
⛳ چرا curl کار نکرد ولی openssl کار کرد؟
احتمالاً:
curlگیر کرده روی IPv6 (که گفتی هم بود تو خروجی:SOCKS5 connect to IPv6 ...)- یا
curlتو TLS handshake گیر کرده چون بعضی سرورها مثل تلگرام ممکنه روی ALPN یا رفتار خاص TLS حساس باشن
عدد 443 چیه و چرا ازش استفاده میکنیم؟
پورت 443 پورت پیشفرض برای ارتباطات HTTPS هست. وقتی شما به یه سایت امن (یعنی با آدرس https://...) متصل میشی، مرورگر یا ابزارهایی مثل curl یا openssl بهطور پیشفرض سعی میکنن با سرور اون سایت از طریق پورت 443 ارتباط برقرار کنن.
پورتها چطور کار میکنن؟
- HTTP (بدون رمزنگاری): روی پورت
80 - HTTPS (با رمزنگاری SSL/TLS): روی پورت
443
اگه نزنیم چی میشه؟
بیشتر ابزارها (مثل curl, openssl, wget) خودشون تشخیص میدن:
- اگر بنویسی
https://telegram.org→ خودش پورت 443 رو میفهمه. - اگر بنویسی
http://telegram.org→ خودش پورت 80 رو انتخاب میکنه.
ولی وقتی با دستوراتی مثل openssl s_client کار میکنی، باید مستقیم بگی که به کدوم پورت وصل بشه، چون اون مثل مرورگر هوشمند نیست که خودش بفهمه.