Skip to content

ERROR Relay failed: timeout #327

Description

@armanfallah82

بنده با عوض کردن جیمیل و ساخت Deploment جدید هم این مشکل رو دارم تقریبا از ساعت ۱۳
در حالت apps script
2026-04-27T13:37:27.413613Z ERROR Relay failed: timeout2026-04-27T13:37:27.852853Z ERROR Relay failed: timeout2026-04-27T13:37:30.219530Z ERROR Relay failed: timeout

Activity

  1. IIAF-SAM commented on Apr 27, 2026

    @IIAF-SAM

    The exact same problem is in #313, and there's a lot of explanation about it there. Definitely check it out. It's better to also close this issue since there's already an issue open about it.

  2. therealaleph commented on Apr 27, 2026

    @therealaleph
    Owner

    @armanfallah82 — Relay failed: timeout از حدود ساعت ۱۳ ظهر تهران، با ساخت deployment جدید + gmail جدید همون مشکل ادامه دارد. این به‌احتمال زیاد همان مسئله #313 است.

    چندین کاربر گزارش دادند که Apps Script UrlFetchApp.fetch() outbound از داخل ایران از حدود ۱۲ ظهر دیروز filter شده — صرف نظر از deployment ID یا account جدید چون مشکل در سطح Iran→Apps-Script request است، نه deployment.

    تأیید کنید که این همان مسئله است:

    curl -s -X POST 'https://script.google.com/macros/s/YOUR_DEPLOYMENT_ID/exec' \
      -H 'Content-Type: application/json' \
      -d '{"k":"YOUR_AUTH_KEY","u":"https://httpbin.org/get","m":"GET"}' \
      --max-time 15

    مستقیم از داخل ایران بدون mhrv-rs اجرا کنید. اگر:

    • timeout می‌ده = همان #313 (Apps Script outbound from Iran filtered). به آن thread برای continue discussion + workarounds منتقل بشید.
    • JSON {"r":"...","s":200,...} برمی‌گردونه = Apps Script کار می‌کنه. مشکل path mhrv-rs است. log debug بفرستید.
    • HTML برمی‌گردونه = deployment public نیست. Deploy settings → "Anyone" access.

    نسخه v1.7.8 (یا v1.7.9): auto-blacklist deployment‌های stuck داره. اگر فقط برخی deployment‌ها timeout می‌دن (نه همه)، sessionها خود به خود به deployment‌های healthy روتو می‌کنن. اگر همه timeout می‌دن، blacklist هم کمکی نمی‌کنه چون هیچ کدام در دسترس نیست.

    خلاصه:

    1. Direct curl را اجرا کنید + نتیجه share کنید
    2. اگر اجرای curl هم timeout = #313. این issue را می‌بندم و آنجا ادامه discussion
    3. اگر JSON = bug در mhrv-rs path. توجه به log + version بدید

    این مشکل احتمالاً Iran-side (filter) است نه bug در mhrv-rs. این issue را همین الان نمی‌بندم تا confirmed بشه.


    [reply via Anthropic Claude | reviewed by @therealaleph]

  3. armanfallah82 commented on Apr 27, 2026

    @armanfallah82
    Author

    curl: (35) Recv failure: Connection reset by peer
    در خروجی دستورتان این رو دریافت کردم مقادیر هم جایگزاری کردم
    version mhrv-rs هم 17.8 هستش

  4. therealaleph commented on Apr 27, 2026

    @therealaleph
    Owner

    @armanfallah82 — Connection reset by peer خبر مهمی است که حدس‌های قبلی رو تنگ‌تر می‌کنه. این یعنی ISP ایران خود middlebox میانه connection رو RST می‌کنه، نه اینکه packet‌ها timeout بشن — یعنی DPI هست، نه firewall ساده.

    این مسئله رو در #313 تحلیل کردم. خلاصه:

    • Direct curl به script.google.com در ISP شما RST می‌گیره از middlebox ایران
    • این به این معنا که traffic Iran→script.google.com با SNI=script.google.com فیلتر می‌شه
    • mhrv-rs از SNI rewrite استفاده می‌کنه (SNI=www.google.com بجای script.google.com)، پس اگر فیلتر فقط روی SNI باشه، mhrv-rs بدون تأثیر می‌مونه

    ولی شما در apps_script mode هم timeout می‌گیرید — یعنی mhrv-rs هم به همون IP که به‌طور پیش‌فرض ست شده (216.239.38.120) timeout می‌گیره. این یعنی فیلتر یا روی destination IP یا روی چیز عمیق‌تر است.

    Action: google_ip متفاوتی امتحان کنید

    ده‌ها Google front IP وجود داره. اگر 216.239.38.120 در black list ISP باشد، دیگران ممکن است نباشند:

    # پنج تا alternative IP رو تست کنید:
    for ip in 216.239.38.120 142.251.214.78 172.217.18.78 64.233.180.78 74.125.196.78; do
      echo -n "$ip: "
      timeout 5 openssl s_client -connect "$ip:443" -servername www.google.com \
        < /dev/null 2>/dev/null \
        | grep -E "subject=|issuer=" | head -1 || echo "FAIL"
    done

    IP‌هایی که subject=...Google برمی‌گردونن = reachable. یکی از اونها رو در mhrv-rs config.json به‌جای google_ip پیش‌فرض ست کنید:

    {
      "google_ip": "142.251.214.78",  // یا هر IP که در test کار کرد
      "front_domain": "www.google.com",
      ...
    }

    Restart mhrv-rs + ببینید ارور Relay failed: timeout رفع می‌شه یا نه.

    اگر هیچ‌کدام از IP‌ها کار نکرد: فیلتر روی چیزی عمیق‌تر از destination IP است (مثل TLS fingerprint مخصوص mhrv-rs که Iran DPI یاد گرفته). در این مورد، tracked در roadmap #313 برای v1.8.x شامل: IP rotation list داخل mhrv-rs + TLS fingerprint randomization (JA3 mimic Chrome).

    v1.7.9 deployment auto-blacklist (#319): اگر برخی IPها کار می‌کنند و برخی نه، mhrv-rs خود به خود deployment‌های که زیاد timeout دارن رو blacklist می‌کنه + بعد از ۲ دقیقه retry می‌کنه. ولی این بر اساس deployment ID است نه IP — برای رفع IP-level filter باید google_ip رو manually عوض کنید.

    این issue رو می‌بندم چون مسئله سمت ISP است نه bug در mhrv-rs. ادامه discussion + workaround در #313. نتیجه IP rotation رو در آنجا share کنید — به ما کمک می‌کنه دیگران رو هم guide کنیم.


    [reply via Anthropic Claude | reviewed by @therealaleph]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions