خطای ERR_CONNECTION_RESET فقط در یک سایت
یک سایت با ERR_CONNECTION_RESET باز نمیشود و بقیه کار میکنند؟ بررسی گامبهگام: شبکه، افزونهها، پروکسی، DNS، ساعت، و فیلتر SNI با curl.
همهٔ سایتهای دیگر باز میشوند، اما یکی مدام با «This site can't be reached» و ERR_CONNECTION_RESET شکست میخورد. بارگذاری دوباره هم کاری نمیکند. این راهنما یک درخت تصمیم است. هر گام یا علت را پیدا میکند یا یکی را کنار میگذارد، و ترتیب از سریعترین بررسیها به گویاترین بررسی پیش میرود.
«connection reset» واقعاً چه معنایی دارد
یک اتصال TCP میتواند مؤدبانه پایان یابد، یا میتواند با یک بستهٔ reset (RST) فوراً قطع شود. Chrome و دیگر مرورگرهای مبتنی بر Chromium وقتی پیش از تحویل صفحه یک reset برسد، ERR_CONNECTION_RESET را نشان میدهند. Firefox صفحهٔ مشابهی با عنوان «The connection was reset» نشان میدهد. reset ممکن است از سرور سایت بیاید، از نرمافزاری روی کامپیوتر خودتان، یا از دستگاهی در میانهٔ شبکه که وانمود میکند یکی از دو طرف است.
به همین دلیل یک خطا علتهای اینقدر متفاوتی دارد. ترفند این است که بفهمید چه کسی reset را فرستاده و چه زمانی.
گام ۱: آیا واقعاً فقط یک سایت است؟
دو یا سه سایت نامرتبط را باز کنید، از جمله سایتی که کمتر سراغش میروید. اگر چند سایت شکست بخورند، مشکل از اتصال، روتر یا دستگاه شماست، نه آن یک سایت. روتر را دوباره راهاندازی کنید و بررسی کنید آیا دستگاههای دیگر در همان شبکه کار میکنند. اگر فقط یک سایت شکست میخورد، ادامه دهید.
گام ۲: آیا فقط در یک شبکه است؟
این آموزندهترین آزمایش است و رایگان هم هست. سایت را بهجای Wi-Fi با اینترنت همراه باز کنید، یا لپتاپ را به اینترنت گوشی وصل کنید. اگر سایت در یک شبکه باز شود و در دیگری reset شود، شبکهٔ مشکلدار در کار است. علتهای رایج در چرا یک سایت با اینترنت همراه باز میشود اما با Wi-Fi نه؟ پوشش داده شدهاند. اگر همهجا شکست میخورد، احتمال بیشتری دارد که خود سایت یا دستگاه شما مقصر باشد.
گام ۳: مرورگر دیگر، پنجرهٔ خصوصی، بدون افزونه
یک پنجرهٔ خصوصی یا incognito را امتحان کنید که بیشتر افزونهها بهطور پیشفرض در آن خاموشاند. سپس مرورگر دیگری را امتحان کنید. مسدودکنندههای تبلیغات، افزونههای حریم خصوصی، افزونههای «مرور امن» و سیاستهای مرورگر سازمانی همگی میتوانند اتصالها را ببندند. اگر سایت در پنجرهٔ خصوصی کار کرد، افزونهها را یکییکی دوباره روشن کنید تا خطا برگردد.
گام ۴: VPNها، پروکسیها و اسکن HTTPS دیگر را خاموش کنید
هر چیزی که در مسیر ترافیک شما قرار دارد میتواند اتصالی را که نمیپسندد reset کند:
- یک برنامهٔ VPN یا پروکسی دیگر. آن را کاملاً خاموش کنید و دوباره آزمایش کنید.
- «اسکن HTTPS» یا «محافظت وب» آنتیویروس. برخی بستههای امنیتی ترافیک رمزگذاریشده را بازرسی میکنند و اتصالهایی را که پرخطر میدانند قطع میکنند. این قابلیت را برای آزمایش کوتاهمدت متوقف کنید، سپس دوباره روشنش کنید.
- پروکسی سیستم. در Windows، به تنظیمات ← شبکه و اینترنت ← پروکسی نگاه کنید. در macOS، به System Settings ← Network ← اتصال شما ← Details ← Proxies نگاه کنید. پروکسیای که آن را نمیشناسید، یا پروکسی باقیمانده از یک برنامهٔ قدیمی، میتواند تکسایتها را خراب کند. فقط چیزی را حذف کنید که میدانید خودتان تنظیم کردهاید، و روی کامپیوتر مدیریتشده از تیم IT بپرسید.
گام ۵: حافظهٔ موقت DNS را پاک کنید و DNS رمزگذاریشده را امتحان کنید
اگر سایت سرورش را جابهجا کرده باشد، دستگاه شما ممکن است هنوز از آدرس قدیمی استفاده کند که میتواند reset شود یا زمانش تمام شود. حافظههای موقت را پاک کنید:
# Windows (Command Prompt)
ipconfig /flushdns
# macOS
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
# Chrome's own cache: open chrome://net-internals/#dns and click "Clear host cache"
سپس پاسخ شبکهتان را با یک resolver مستقل مقایسه کنید: nslookup example.com و سپس nslookup example.com 1.1.1.1. اگر متفاوت بودند و فقط پاسخ مستقل کار کرد، DNS شبکهٔ شما مشکل است. DNS رمزگذاریشده این نوع مسدودسازی را رفع میکند، همانطور که در DoH و DoT توضیح داده شده. آدرسهای متفاوت بهتنهایی دلیل نیستند، چون سایتهای بزرگ به شبکههای مختلف سرورهای مختلفی میدهند.
گام ۶: تاریخ و ساعت را بررسی کنید
ساعت اشتباه معمولاً بهجای reset خطای گواهی ایجاد میکند، اما بررسی آن ده ثانیه طول میکشد. تاریخ و ساعت خودکار را روشن کنید، سپس صفحه را دوباره بارگذاری کنید. هرگز برای «عبور» از صفحهای که شکست میخورد روی هشدار گواهی کلیک نکنید.
گام ۷: آیا سایت از دسترس خارج است؟
صفحهٔ وضعیت سایت یا حساب رسمی آن در شبکههای اجتماعی را بررسی کنید، یا از یک ابزار عمومی «برای همه از دسترس خارج است یا فقط من» استفاده کنید. اگر سایت از دسترس خارج است، صبر کنید. در نظر داشته باشید که چنین ابزاری از سرورهای خودش آزمایش میکند، پس «در دسترس» بودن آنجا ثابت نمیکند که از شبکهٔ شما قابل دسترسی است.
گام ۸: reset را با curl بخوانید
اگر سایت هنوز فقط در یک شبکه reset میشود، به خود دستدهی نگاه کنید. curl در Windows 10 و 11، macOS و بیشتر سیستمهای Linux وجود دارد. آن را در یک ترمینال اجرا کنید و سایت خودتان را بهجای example.com بگذارید:
curl -v https://example.com
یک اتصال سالم چند خط مانند اینها چاپ میکند، سپس سرآیندهای صفحه را. عبارت دقیق به نسخهٔ curl و کتابخانهٔ TLS شما بستگی دارد:
* Trying 203.0.113.10:443...
* Connected to example.com (203.0.113.10) port 443
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
...
< HTTP/2 200
الگویی که به فیلتر مبتنی بر نام اشاره میکند اینگونه است:
* Trying 203.0.113.10:443...
* Connected to example.com (203.0.113.10) port 443
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* Recv failure: Connection reset by peer
curl: (35) Recv failure: Connection reset by peer
خطبهخط بخوانید. «Connected» یعنی اتصال TCP به آدرس IP سرور برقرار شد، پس آدرس بهطور کامل مسدود نیست. «Client hello» نخستین پیام TLS است و نام سایت را بهصورت متن ساده در فیلدی به نام SNI حمل میکند. «Connection reset by peer» درست پس از آن یعنی چیزی اتصال را به محض دیده شدن آن نام، پیش از آنکه سرور بتواند پاسخ دهد، قطع کرد. برخی شبکهها بهجای آن اتصال را بیصدا میبندند، که curl آن را بهصورت پایان غیرمنتظرهٔ فایل یا خطای «syscall» در SSL گزارش میکند و Chrome ممکن است ERR_CONNECTION_CLOSED نشان دهد.
با نتیجههای دیگر مقایسه کنید:
| آنچه curl نشان میدهد | معنای محتمل |
|---|---|
| Could not resolve host | خرابی DNS یا مسدودسازی DNS. به گام ۵ برگردید |
| گیر کردن در «Trying» و سپس اتمام زمان | آدرس IP قابل دسترسی نیست: مسدودسازی IP، فایروال یا سرور از کار افتاده |
| reset یا بسته شدن درست پس از «Client hello»، فقط در یک شبکه | احتمالاً فیلتر SNI در آن شبکه |
| دستدهی کامل میشود، سپس یک کد خطای HTTP | سایت پاسخ داد. مشکل از سمت آن یا حساب شماست |
برای قویتر کردن نتیجه، همان دستور را در شبکهٔ دیگری اجرا کنید. اگر آنجا کار کرد، فیلتر متعلق به شبکهٔ اول است. این حدسی دربارهٔ یک وضعیت نادر نیست. پژوهشی در سال ۲۰۲۰ از OONI و Centre for Internet and Society نشان داد اتصالهای TLS برای برخی سایتها در Bharti Airtel درست پس از ClientHello قطع میشدند، و در Reliance Jio بر اساس SNI همراه با آدرس مقصد. CIS جداگانه گزارش داد Jio از بازرسی SNI استفاده میکند و این گزارش در انجمن ntc.party بحث شد. پیشزمینهٔ بیشتر: چگونه بفهمیم یک وبسایت مسدود شده است.
GreenTunnel کجا کمک میکند و کجا نه
GreenTunnel یک VPN محلی روی دستگاه است که ما میسازیم، پس این بخش را با دانستن اینکه بیطرف نیستیم بخوانید. دو مورد از علتهای بالا را هدف میگیرد:
- فیلتر SNI. نخستین بستههای TLS یک اتصال را تغییر شکل میدهد، مثلاً با تقسیم Client hello یا رکورد TLS آن، تا فیلتری که دنبال نام سایت میگردد آن را یکپارچه پیدا نکند. چگونه کار میکند: SNI، DPI و تقسیم رکورد TLS.
- مسدودسازی DNS. جستوجوها از طریق DNS رمزگذاریشده (DoH یا DoT) به Cloudflare، Google یا Quad9 میروند، پس شبکه نمیتواند بیصدا پاسخ جعلی برگرداند.
ابزار بررسی URL آن مقایسههای گامهای ۵ و ۸ را برای یک سایت در شبکهای که در آن هستید اجرا میکند و میگوید سایت با فیلتر نام مسدود شده، پاسخ DNS جعلی گرفته، با آدرس IP مسدود شده، یا مشکلی ندارد. اگر روشی کار کند، میتوانید روی استفاده از این روش بزنید.
در این موارد کمکی نمیکند:
- سایت از دسترس خارج است، یا reset از سرور خود سایت یا سرویس محافظتی آن میآید،
- مسدودسازی با آدرس IP است، که بهصورت اتمام زمان در «Trying» دیده میشود،
- محل کار، مدرسه یا شبکهٔ مدیریتشدهٔ دیگری عمداً سایت را مسدود کرده است. قواعد آن شبکه را مالکش تعیین میکند. به سیاست احترام بگذارید و اگر برای کارتان به دسترسی نیاز دارید از مدیر شبکه بخواهید،
- علت یک افزونه، آنتیویروس یا DNS کهنه روی دستگاه خودتان است. آنها را مستقیم درست کنید.
محدودیتها و استفادهٔ مسئولانه، بیپرده
GreenTunnel آدرس IP شما را پنهان نمیکند و ابزار ناشناسماندن نیست. نمیتواند از مسدودسازی IP، قطع شبکه یا فهرستهای مجاز عبور کند و قول باز کردن هیچ سایت مشخصی را نمیدهد. فیلترها با گذشت زمان تغییر میکنند و بین ISPها متفاوتاند، پس نتیجهٔ امروز ممکن است ماه بعد فرق کند.
پرسشهای متداول
آیا ERR_CONNECTION_RESET همیشه نشانهٔ مسدود بودن سایت است؟
نه. افزونهها، اسکن HTTPS آنتیویروس، پروکسی باقیمانده، DNS کهنه یا خود سایت همگی میتوانند علت آن باشند. مسدودسازی فقط وقتی محتمل میشود که reset در یک شبکه، درست پس از Client hello، رخ دهد و سایت در جای دیگری کار کند.
چرا سایت با اینترنت همراه کار میکند اما با Wi-Fi reset میشود؟
دو شبکه از ارائهدهندگان، resolverها و فیلترهای متفاوتی استفاده میکنند. یکی از آنها ممکن است نام سایت را بخواند یا به DNS متفاوت پاسخ دهد. curl -v را روی هر دو اجرا کنید و مقایسه کنید هر کدام کجا متوقف میشود.
آیا پاک کردن کوکیها reset اتصال را درست میکند؟
بهندرت. کوکیها پس از برقراری اتصال فرستاده میشوند، در حالی که بیشتر resetها پیش از آن رخ میدهند. پاک کردن دادههای سایت وقتی کمک میکند که خود سایت یک نشست خراب را رد کند، که معمولاً بهجای آن یک خطای HTTP نشان میدهد.
آیا GreenTunnel میتواند resetی را که فایروال شرکتم ایجاد کرده درست کند؟
برای این کار ساخته نشده است. یک شبکهٔ مدیریتشده سایتها را بر اساس سیاست مالکش مسدود میکند. بهجای تلاش برای دور زدن آن، از مدیر شبکه بخواهید.
منابع
- OONI و Centre for Internet and Society، Investigating TLS blocking in India، ژوئیهٔ ۲۰۲۰.
- Centre for Internet and Society، Reliance Jio is using SNI inspection to block websites.
- انجمن ntc.party، SNI filtering by Indian ISP Reliance Jio.
- پروژهٔ curl، راهنمای curl (گزینهٔ
-v).