arc/docs/TELEGRAM_PROXY_FIREWALL_FIX.md
2026-04-14 19:34:55 +03:30

4.9 KiB
Executable file

رفع مشکل اتصال Proxy به سرور اصلی

مشکل

لاگ‌ها نشان می‌دهند که سرور proxy نمی‌تواند به سرور اصلی (hsxn.hesabix.ir) متصل شود:

[ERROR] ❌ Failed to forward webhook - DETAILED ERROR
"error":"Could not connect to server. Check firewall and network settings."
"curl_errno":7

خطای curl_errno: 7 (CURLE_COULDNT_CONNECT) به معنای این است که:

  • فایروال سرور اصلی، IP سرور proxy را block کرده است
  • یا مشکل شبکه بین دو سرور وجود دارد

راه‌حل‌ها

1. تست اتصال

ابتدا از اسکریپت تست استفاده کنید:

cd /var/www/ark/telegram_proxy
php test_connection.php

این اسکریپت بررسی می‌کند که:

  • DNS resolution کار می‌کند
  • اتصال TCP برقرار می‌شود
  • درخواست HTTP/HTTPS موفق است

2. پیدا کردن IP سرور Proxy

برای پیدا کردن IP سرور proxy:

# از داخل سرور proxy
curl -s ifconfig.me
# یا
hostname -I

یا از لاگ‌های proxy می‌توانید IP را ببینید.

3. Whitelist کردن IP در فایروال سرور اصلی

اگر از UFW استفاده می‌کنید:

# روی سرور اصلی
sudo ufw allow from <PROXY_IP> to any port 443
sudo ufw allow from <PROXY_IP> to any port 80

اگر از iptables استفاده می‌کنید:

# روی سرور اصلی
sudo iptables -A INPUT -p tcp -s <PROXY_IP> --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <PROXY_IP> --dport 80 -j ACCEPT
sudo iptables-save

اگر از Cloudflare یا CDN استفاده می‌کنید:

  • بررسی کنید که IP سرور proxy در whitelist قرار دارد
  • یا از "IP Access Rules" در Cloudflare استفاده کنید

4. بررسی تنظیمات Nginx/Apache

مطمئن شوید که nginx/apache روی سرور اصلی، درخواست‌ها را از IP proxy می‌پذیرد.

برای nginx، بررسی کنید که در nginx.conf یا فایل site شما محدودیتی وجود ندارد:

# اگر چنین محدودیتی دارید، آن را حذف یا تغییر دهید:
# deny all;
# allow 192.168.1.0/24;

5. استفاده از IP مستقیم (موقت)

اگر مشکل DNS وجود دارد، می‌توانید موقتاً از IP مستقیم استفاده کنید:

  1. IP سرور اصلی را پیدا کنید:

    nslookup hsxn.hesabix.ir
    
  2. در telegram_proxy/config.php، internal_webhook_url را به IP تغییر دهید:

    'internal_webhook_url' => 'https://<IP>/api/v1/integrations/telegram/webhook/...'
    

توجه: این راه‌حل موقت است و برای SSL certificate مشکل ایجاد می‌کند. بهتر است مشکل فایروال را حل کنید.

6. بررسی SSL Certificate

اگر مشکل SSL وجود دارد:

# تست SSL از سرور proxy
openssl s_client -connect hsxn.hesabix.ir:443 -showcerts

مطمئن شوید که:

  • Certificate معتبر است
  • Certificate برای domain صحیح است
  • Certificate منقضی نشده است

7. بررسی لاگ‌های سرور اصلی

بررسی کنید که آیا درخواست‌ها به سرور اصلی می‌رسند یا نه:

# لاگ‌های nginx
sudo tail -f /var/log/nginx/access.log | grep telegram

# لاگ‌های apache
sudo tail -f /var/log/apache2/access.log | grep telegram

اگر درخواست‌ها در لاگ نیستند، یعنی فایروال یا nginx آن‌ها را block کرده است.

چک‌لیست

  • IP سرور proxy را پیدا کردید
  • IP را در فایروال سرور اصلی whitelist کردید
  • اتصال TCP را تست کردید (test_connection.php)
  • تنظیمات nginx/apache را بررسی کردید
  • SSL certificate معتبر است
  • لاگ‌های سرور اصلی را بررسی کردید

تست نهایی

بعد از اعمال تغییرات:

  1. اسکریپت تست را اجرا کنید:

    php telegram_proxy/test_connection.php
    
  2. یک پیام به ربات تلگرام بفرستید

  3. لاگ‌های proxy را بررسی کنید:

    tail -f telegram_proxy/proxy_*.log
    
  4. لاگ‌های سرور اصلی را بررسی کنید تا ببینید درخواست‌ها دریافت می‌شوند

دریافت کمک

اگر مشکل حل نشد:

  1. خروجی test_connection.php را ذخیره کنید
  2. لاگ‌های کامل proxy را ذخیره کنید
  3. خروجی iptables -L یا ufw status را ذخیره کنید
  4. این اطلاعات را به تیم پشتیبانی ارسال کنید