Skip to content

رفع اشکال و بررسی لاگ‌ها (Troubleshooting)

هدف این صفحه

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

راهنمای خواندن لاگ‌ها

زمانی که برنامه را اجرا می‌کنید (چه در لینوکس، ویندوز یا مک)، پیام‌هایی در ترمینال چاپ می‌شود.

  • INFO: پیام‌های عادی که نشان‌دهنده عملکرد صحیح هستند.
  • WARNING: هشدارهایی که برنامه را متوقف نمی‌کنند اما باید بررسی شوند (مثلاً امنیت پایین).
  • FATAL / ERROR: خطاهای بحرانی که باعث بسته شدن برنامه یا قطع اتصال می‌شوند.

۱. خطاهای سمت کلاینت (Client Side)

در این بخش پیام‌هایی که در ترمینال کامپیوتر یا گوشی خود مشاهده می‌کنید بررسی شده‌اند.

الف. خطاهای راه‌اندازی (Startup)

پیام لاگ (Log Message)علت احتمالیراه حل
Failed to load config: ...فایل client.toml وجود ندارد یا فرمت آن اشتباه است.مطمئن شوید فایل کانفیگ در کنار برنامه است و دستور را درست وارد کرده‌اید (-config).
Failed to generate keys: ...(هنگام استفاده از -gen-keys) برنامه دسترسی نوشتن روی دیسک ندارد.برنامه را با دسترسی Administrator/Root اجرا کنید یا در پوشه‌ای دیگر تست کنید.
Creating SECURE transport (TLS)خطا نیست. نشان می‌دهد حالت امن (mTLS/TLS) فعال شده است.-
Creating INSECURE transport (h2c)خطا نیست. نشان می‌دهد حالت ناامن (Cleartext) فعال است.اگر قصد امنیت دارید، فایل کانفیگ را چک کنید که کلیدها پر شده باشند.
WARNING: server_public_key NOT SET...شما private_key دارید اما server_public_key را خالی گذاشته‌اید.برای جلوگیری از حملات MITM، حتماً کلید عمومی سرور را در client.toml وارد کنید.
Failed to load private key: ...فایل کلید خصوصی (مثلاً client.private.key) پیدا نشد.مسیر فایل را در client.toml چک کنید. آیا فایل وجود دارد؟
[Transport] TLS Fingerprint Spoofing: chromeخطا نیست. نشان می‌دهد کلاینت با موفقیت اثرانگشت مرورگر را تقلید می‌کند.وضعیت عادی است.
[Transport] Security Mode: INSECURE TLSخطا نیست. نشان می‌دهد شما از حالت Insecure TLS استفاده می‌کنید و سرتیفیکت سرور بررسی نمی‌شود.اگر سرور شما CDN ندارد این حالت پیشنهاد می‌شود. برای امنیت بیشتر One-Way TLS را ببینید.
[Token] Security Mode: Token Auth ENABLEDخطا نیست. نشانگر آن است که کلاینت توکن auth_token را بارگذاری کرده است.-

ب. خطاهای اتصال و شبکه (Runtime)

پیام لاگ (Log Message)علت احتمالیراه حل
Failed to dial server: connection refusedسرور خاموش است یا پورت اشتباه وارد شده.سرور را چک کنید که روشن باشد (./phoenix-server). پورت remote_addr را در کلاینت چک کنید.
Failed to dial server: i/o timeoutفایروال سرور یا شبکه ایران پورت را بسته است.پورت سرور را عوض کنید. فایروال سرور (ufw) را چک کنید.
server key verification failed. Expected X, Got Yخیلی مهم: سرور شما جعلی است یا کلید در کانفیگ اشتباه است.کلید عمومی سرور (public key) را در client.toml چک کنید. اگر کلید درست است، احتمالاً تحت حمله MITM هستید!
Failed to listen on 127.0.0.1:1080...پورت ۱۰۸۰ توسط برنامه دیگری (مثلاً یک VPN دیگر) اشغال شده است.در client.toml مقدار local_addr را به پورتی دیگر (مثلاً 1085) تغییر دهید.
SOCKS5 Handler Error: ...مرورگر یا تلگرام ارتباط را قطع کرد یا خطا داد.اگر این خطا زیاد تکرار می‌شود، یعنی ارتباط با اینترنت ناپایدار است.
Error: Shadowsocks inbound found but 'auth' is empty(هنگام -get-ss) پسورد شادوساکس در کانفیگ خالی است.برای اینباند شادوساکس، فیلد auth را با فرمت method:password پر کنید.
tls: peer doesn't support any of the certificate's signature algorithmsناسازگاری utls (مثل Chrome) با سرتیفیکت سرور (Ed25519).وقتی fingerprint روشن است، سرور نمی‌تواند برای سرتیفیکت TLS کلید Ed25519 استفاده کند. (به بخش معماری قسمت ۶ مراجعه کنید).
stream error: stream ID 1; HTTP_1_1_REQUIREDکلاینت انتظار HTTP/2 دارد اما سرور/فیلترینگ HTTP/1.1 جواب می‌دهد.معمولاً سیستم فیلترینگ یا پروکسی بین راه (CDN نامناسب) در حال تغییر ترافیک به HTTP/1.1 است.
Token mismatchتوکن تنظیم شده در کلاینت با توکن سرور همخوانی ندارد.فایل auth_token را در هر دو سمت (سرور و کلاینت) بررسی کنید.

۲. خطاهای سمت سرور (Server Side)

این پیام‌ها را در ترمینال VPS مشاهده می‌کنید.

الف. خطاهای عمومی

پیام لاگ (Log Message)علت احتمالیراه حل
Failed to load config: ...فایل server.toml پیدا نشد یا خراب است.فایل کانفیگ را چک کنید.
Starting Phoenix Server on :443خطا نیست. سرور با موفقیت روی پورت ۴۴۳ روشن شد.-
Server failed: listen tcp :443: bind: access deniedسرور اجازه دسترسی به پورت‌های زیر ۱۰۲۴ را ندارد.سرور را با sudo اجرا کنید یا پورت را بالای ۱۰۲۴ (مثلاً 8443) بگذارید.
Server failed: listen tcp :443: bind: address already in useبرنامه دیگری (مثل Nginx یا Apache) روی این پورت فعال است.آن برنامه را متوقف کنید یا پورت ققنوس را تغییر دهید.

ب. خطاهای امنیتی (Security)

پیام لاگ (Log Message)علت احتمالیراه حل
Client authentication failed(در حالت mTLS) کلاینت کلید خصوصی معتبر ندارد.کلید عمومی کلاینت را در authorized_clients سرور اضافه کنید.
Handshake error: remote error: bad certificateکلاینت گواهی نامعتبر فرستاده یا کلیدها همخوانی ندارند.مطمئن شوید جفت کلیدهای کلاینت و سرور با هم ست هستند (Ed25519).
http2: server: error reading preface from clientکلاینت دارد با پروتکل غیر HTTP/2 (مثلاً مرورگر عادی یا اسکنر) وصل می‌شود.این معمولاً نشان‌دهنده Probing توسط فیلترچی است و سرور به درستی ارتباط را قطع کرده است.
request rejected: invalid auth tokenتوکن کلاینت ارسال شده صحیح نیست یا خالی است.مطمئن شوید auth_token کلاینت دقیقاً با سرور یکی باشد. کلاینت متخلف مسدود شد.

۳. سناریوهای معمول و راهکارها

سناریو ۱: برنامه وصل می‌شود اما سایت‌هایی مانند یوتیوب باز نمی‌شوند

  • علت: احتمالاً enable_udp در سرور خاموش است ولی کلاینت سعی دارد UDP بفرستد، یا DNS مشکل دارد.
  • راه حل: در مرورگر چک کنید آیا سایت‌های HTTP باز می‌شوند؟ اگر فقط تلگرام باز می‌شود، enable_udp را چک کنید.

سناریو ۲: سرعت صفر است یا ارتباط قطع و وصل می‌شود

  • علت: پکت لاس شدید در شبکه یا مسدود شدن پورت.
  • راه حل: پورت سرور را تغییر دهید. از حالت mTLS استفاده کنید تا شناسایی نشوید.

سناریو ۳: ارور bad certificate دریافت می‌کنم

  • علت: کلیدهای کلاینت و سرور با هم مچ نیستند.
  • راه حل: یکبار دیگر با -gen-keys کلید بسازید و دقیقاً طبق راهنما کپی‌پیست کنید. دقت کنید که کلید عمومی سرور باید در کلاینت باشد و برعکس (برای mTLS).

سناریو ۴: ارور tls: peer doesn't support signature algorithms در کروم Fingerprint

  • علت: شما fingerprint = "chrome" را روشن کرده‌اید اما سرور از سرتیفیکت Ed25519 استفاده می‌کند. (Chrome از Ed25519 برای سرتیفیکت TLS سرور پشتیبانی نمی‌کند).
  • راه حل:
    • یا fingerprint را خاموش کنید.
    • یا در سرور یک کلید ECDSA بسازید (درحال‌حاضر ققنوس از طریق سورس‌کد از آن پشتیبانی می‌کند ولی برای تولید دستی باید از openssl استفاده کنید). پیشنهاد ساده‌تر استفاده از safari یا firefox یا خاموش کردن این گزینه است.

سناریو ۵: ترافیک من کلاً بعد از چند ثانیه قطع (Drop) می‌شود

  • علت: سیستم DPI اپراتور شما متوجه غیرمعمول بودن ترافیک (اثرانگشت کتابخانه Go) شده و پکت‌ها را دراپ می‌کند.
  • راه حل: مطمئن شوید قابلیت fingerprint = "chrome" فعال باشد و tls_mode روی insecure تنظیم شده باشد (در صورتی که CDN ندارید). این باعث می‌شود ترافیک شما کاملاً شبیه یک مرورگر واقعی به نظر برسد.

تحت مجوز GPLv2 منتشر شده است.