شبکه

آی‌پی سرور فیلتر شده است؟ تست فیلتر بودن آی‌پی از داخل و خارج ایران و راه‌حل هر حالت

تصویر شاخص راهنمای تست فیلتر بودن آی‌پی سرور: مقایسه‌ی هم‌زمان ping و اتصال TCP از داخل و خارج ایران، ریست TLS بدون SNI و پاسخ DNS از محدوده‌ی 10.10.34.x برای جدا کردن فیلتر آی‌پی از فیلتر دامنه

آی‌پی سروری «فیلتر» است که از خارج ایران جواب می‌دهد اما از داخل ایران، روی هیچ پورتی و حتی به ping، جواب نمی‌دهد؛ و سرور ایرانی‌ای که فقط از داخل در دسترس است، دسترسی بین‌الملل را از دست داده. هر نتیجه‌ی دیگری — خطای فقط روی HTTPS، دامنه‌ای که به 10.10.34.36 می‌رسد، سروری که از هیچ‌جا جواب نمی‌دهد — مشکل دیگری است و راه‌حل دیگری دارد. این راهنما با آزمایش‌هایی که ۷ مهر ۱۴۰۵ از یک سرور در دیتاسنتر ایران گرفته‌ایم نشان می‌دهد چطور با یک تست هم‌زمان از داخل و خارج این پنج حالت را از هم جدا کنید، چرا curl https://IP از ایران جواب غلط می‌دهد، و اگر آی‌پی واقعاً بسته بود، چطور آن را از داخل پنل عوض کنید.

فیلتر شدن آی‌پی سرور دقیقاً یعنی چه؟ پنج حالتی که با هم اشتباه می‌شوند

«سرورم از ایران باز نمی‌شود» پنج علت متفاوت دارد و فقط یکی از آن‌ها فیلتر شدن آی‌پی است. تفاوتشان در این است که کدام تست، از کدام سمت، شکست می‌خورد:

حالتاز داخل ایراناز خارج ایراننشانه‌ی تعیین‌کننده
۱. سرور یا سرویس از کار افتادهشکستشکستاز هیچ‌جا جواب نمی‌دهد؛ مشکل از خود سرور، فایروال آن یا سرویس است
۲. آی‌پی سرور خارج برای ایران بسته استشکست، روی همه‌ی پورت‌ها و pingسالمتنها حالتی که واقعاً «فیلتر آی‌پی» است
۳. دامنه فیلتر است، نه آی‌پیبا آی‌پی سالم، با نام دامنه شکستسالمDNS از داخل ایران آی‌پی 10.10.34.x می‌دهد یا TLS با آن نام ریست می‌شود
۴. فقط یک پروتکل یا الگو بسته استping و TCP سالم، یک چیز خاص شکستسالممثلاً HTTP/3 روی UDP یا HTTPS بدون نام دامنه
۵. سرور ایران دسترسی بین‌الملل نداردسالمشکستبرعکس حالت ۲؛ کاربر داخلی مشکلی نمی‌بیند

تعویض آی‌پی فقط حالت ۲ و ۵ را درمان می‌کند. در حالت ۳ آی‌پی جدید هم همان‌قدر بسته است، چون مشکل در نام دامنه است؛ و در حالت ۱ و ۴ آی‌پی سالم است. پس پیش از هر اقدامی باید بدانید در کدام ردیف هستید، و این فقط با مقایسه‌ی هم‌زمان دو سمت معلوم می‌شود.

تست از داخل ایران: ping، اتصال TCP و mtr

از اینترنت خودتان — خانگی یا موبایل — سه چیز را بسنجید: ping، باز بودن پورت سرویس و مسیر. در ویندوز، در PowerShell:

ping -n 20 203.0.113.10
Test-NetConnection 203.0.113.10 -Port 22     # TcpTestSucceeded : True / False
tracert -d 203.0.113.10

در لینوکس و مک:

ping -c 20 203.0.113.10
nc -zvw5 203.0.113.10 22
mtr -rwc 30 203.0.113.10

ping به‌تنهایی حکم نیست، چون فایروال خود سرور ممکن است ICMP را ببندد؛ آزمون اصلی، اتصال TCP به پورتی است که سرویس واقعاً روی آن گوش می‌دهد — ۲۲ برای SSH، ۸۰ و ۴۴۳ برای وب. آزمون HTTPS را هم هرگز با آی‌پی خالی نگیرید؛ دلیلش را دو بخش پایین‌تر با خروجی واقعی می‌بینید. در خروجی mtr به جایی نگاه کنید که پاسخ‌ها قطع می‌شوند: اگر آخرین پاسخ از هاپ‌های داخل ایران است، بسته از مرز رد نشده؛ اگر بسته تا شبکه‌ی دیتاسنتر مقصد رسیده و فقط خود سرور جواب نمی‌دهد، مشکل در سرور یا فایروال آن است. اگر روی یک اپراتور باز نمی‌شود و روی اپراتور دیگری باز می‌شود، مشکل از مسیر همان اپراتور است، نه بسته شدن سراسری آی‌پی.

تست هم‌زمان از خارج و داخل ایران با check-host.net

سمت دوم را لازم نیست خودتان فراهم کنید. سایت check-host.net یک آی‌پی یا دامنه را هم‌زمان از ده‌ها نقطه‌ی دنیا می‌آزماید؛ فهرست نودهایش در ۷ مهر ۱۴۰۵، ۵۹ نود داشت که ۸ تای آن‌ها داخل ایران‌اند — چهار نود در تهران و بقیه در اصفهان، شیراز و قم. برای تشخیص فیلتر:

  1. در تب Ping آی‌پی سرور را بدهید و نتیجه‌ی نودهای ایران را با نودهای آلمان، هلند و بقیه مقایسه کنید.
  2. در تب TCP port همان آی‌پی را با پورت سرویس بدهید (مثلاً 203.0.113.10:22)؛ این آزمون از ping مطمئن‌تر است.
  3. اگر نودهای خارج سالم‌اند و همه‌ی نودهای ایران در هر دو تب شکست می‌خورند، به احتمال زیاد در حالت ۲ هستید. اگر همه‌جا شکست است، حالت ۱. اگر فقط بعضی نودهای ایرانی شکست می‌خورند، مشکل از مسیر همان شبکه‌هاست.

نودهای ایرانی check-host در دیتاسنترها هستند و نتیجه‌ی آن‌ها همیشه با اینترنت خانگی یکی نیست؛ پس نتیجه‌ی این سایت را کنار تست خودتان از بخش قبل بگذارید، نه به‌جای آن. برای سرور ایران همین مقایسه را برعکس بخوانید: سالم از ایران و شکست از همه‌ی نودهای خارج یعنی حالت ۵.

دام curl https://IP: چرا «Connection reset» از ایران گمراه‌کننده است

خیلی‌ها برای تست یک سرور خارج از داخل ایران curl https://IP می‌زنند، Connection reset by peer می‌گیرند و نتیجه می‌گیرند آی‌پی فیلتر است. ما همین را ۷ مهر ۱۴۰۵ از یک سرور در دیتاسنتر ایران به یکی از سرورهای خودمان در آلمان امتحان کردیم — سروری که از ایران پینگ ۷۸ تا ۹۰ میلی‌ثانیه و پورت ۴۴۳ باز داشت:

# 1) HTTPS by bare IP: no SNI in the TLS ClientHello
curl -sk https://SERVER-IP/
curl: (56) Recv failure: Connection reset by peer

# 2) the same IP, with the site's real name as SNI
curl -sk --resolve www.example.com:443:SERVER-IP https://www.example.com/
HTTP 200, TLS handshake 0.16 s

# 3) the same IP, with a filtered name as SNI
curl -sk --resolve twitter.com:443:SERVER-IP https://twitter.com/
curl: (56) Recv failure: Connection reset by peer

هر سه درخواست به یک آی‌پی رفته‌اند و آن آی‌پی کاملاً سالم است. تفاوت فقط در فیلد SNI پیام آغاز TLS است — نامی که کلاینت می‌گوید قصد دارد به آن وصل شود: بدون نام، یا با نامی که فیلتر است، اتصال در همان ابتدای TLS از مسیر ریست می‌شود؛ با نام عادی، کد ۲۰۰ برمی‌گردد. همان دو درخواست ریست‌شده — بی‌نام و با نام twitter.com — از یک سرور ما در فنلاند به همان سرور، دست‌دادن TLS را در کمتر از ۰٫۱ ثانیه کامل کردند؛ یعنی ریست از مسیر ایران است، نه از سرور.

دو نتیجه‌ی عملی: HTTPS را همیشه با نام واقعی دامنه تست کنید (سوییچ --resolve آن نام را بدون تغییر DNS روی آی‌پی دلخواه می‌نشاند)، و ریستی که درست بعد از شروع TLS می‌آید را نشانه‌ی فیلتر آی‌پی ندانید — آی‌پی فیلترشده به دست‌دادن TCP هم جواب نمی‌دهد. مرورگرها همیشه SNI می‌فرستند و کاربر عادی این ریست را نمی‌بیند؛ اما اپلیکیشن، وب‌هوک یا اسکریپتی که مستقیم به آی‌پی HTTPS می‌زند، از ایران شکست می‌خورد. این و دو نکته‌ی دیگر اتصال از ایران را در مقایسه‌ی پینگ لوکیشن‌های سرور خارج هم آورده‌ایم.

دامنه فیلتر است یا آی‌پی؟ نشانه‌ی 10.10.34.x

وقتی نام یک دامنه در ایران فیلتر است، پاسخ DNS آن از داخل کشور به آی‌پی واقعی نمی‌رسد و یک نشانی خصوصی از محدوده‌ی 10.10.34.x برمی‌گردد. در همان آزمایش، پرسش نام twitter.com از داخل ایران، هم از رزولور اپراتور و هم از رزولور خارجی OpenDNS، پاسخ 10.10.34.36 گرفت؛ رسیدن این پاسخ از رزولور خارجی یعنی جواب در مسیر جایگزین می‌شود، پس عوض کردن DNS دستگاه هم این نتیجه را عوض نمی‌کند. برای دامنه‌ی خودتان:

nslookup www.example.com
nslookup www.example.com 208.67.222.222

اگر یکی از پاسخ‌ها 10.10.34.x بود، یا اتصال با نام دامنه ریست می‌شد اما همان آی‌پی با نام دیگری جواب می‌داد، در حالت ۳ هستید: خود نام دامنه بسته است و انتقال سایت به سرور یا آی‌پی دیگر کمکی نمی‌کند. در این حالت آی‌پی را عوض نکنید، چون هزینه دارد و چیزی را درست نمی‌کند.

نمودار تشخیص فیلتر بودن آی‌پی سرور: تست هم‌زمان ping و TCP از داخل و خارج ایران، جدا کردن سرور خاموش، آی‌پی فیلترشده، دامنه‌ی فیلترشده با پاسخ DNS از محدوده‌ی 10.10.34.x، ریست TLS بدون SNI و سرور ایران بدون دسترسی بین‌الملل
یک تست، دو سمت: جای شکست تعیین می‌کند با کدام حالت طرفید و آیا تعویض آی‌پی اصلاً کمکی می‌کند.

جدول تشخیص: نتیجه‌ی تست‌ها چه می‌گوید و قدم بعدی چیست؟

نتیجهتشخیصقدم بعدی
از داخل و خارج، ping و TCP هر دو شکستسرور، سرویس یا فایروال آناز کنسول تحت وب پنل وضعیت سرور، سرویس و فایروال را ببینید
از خارج سالم؛ از ایران ping و همه‌ی پورت‌ها شکست، روی چند اپراتورآی‌پی سرور خارج برای ایران بسته استتعویض آی‌پی از پنل (بخش بعد)
از ایران ping و TCP سالم، فقط HTTPS با آی‌پی خالی ریستآی‌پی سالم است؛ ریست به‌خاطر نبود SNIبا نام دامنه و --resolve تست کنید؛ کاری لازم نیست
با نام دامنه شکست، DNS از ایران 10.10.34.xدامنه فیلتر استتعویض آی‌پی یا سرور کمکی نمی‌کند
فقط HTTP/3 یا سرویس UDP کار نمی‌کندمحدودیت پروتکل در مسیر بین‌المللسرویس را روی TCP ارائه کنید
از ایران سالم؛ از همه‌ی نودهای خارج شکستسرور ایران دسترسی بین‌الملل نداردتیکت با آی‌پی و نتیجه‌ی تست (بخش آخر)
فقط روی یک اپراتور شکستمسیر همان اپراتوربا mtr همان خط، مشکل را به اپراتور گزارش دهید

آی‌پی سرور خارج فیلتر است: تعویض آی‌پی از پنل

برای سرورهای خارج از ایران (زیرساخت هتزنر)، تعویض آی‌پی سلف‌سرویس است و تیکت نمی‌خواهد. در صفحه‌ی سرور:

  1. سرور را از تب «نمای کلی» کاملاً خاموش کنید؛ هتزنر جابه‌جایی آی‌پی را فقط روی سرور خاموش انجام می‌دهد.
  2. در کارت «تعویض آی‌پی (IPv4)»، هزینه‌ی تعویض را ببینید. این مبلغ بر اساس تعرفه‌ی آی‌پی هتزنر حساب می‌شود، پیش از تأیید همان‌جا نمایش داده می‌شود و فقط پس از تعویض موفق از کیف پول کسر می‌شود.
  3. برای تأیید، نام سرور را دقیقاً وارد کنید و «دریافت آی‌پی جدید» را بزنید. آی‌پی جدید به‌صورت تصادفی از استخر هتزنر می‌آید و سرور خودکار روشن می‌شود.

سه نکته پیش از زدن دکمه: آی‌پی قبلی برای همیشه آزاد می‌شود و برگشت‌پذیر نیست؛ رکوردهای DNS و rDNS به آی‌پی جدید منتقل نمی‌شوند و باید دوباره تنظیمشان کنید؛ و تضمینی نیست که آی‌پی تازه هم از ایران باز باشد، پس بلافاصله همان تست‌های بالا را تکرار کنید. تعداد تعویض در هر ۲۴ ساعت سقف دارد. اگر دامنه روی نیم‌سرورهای مهران هاست است، TTL رکورد A را از قبل روی ۶۰ ثانیه بگذارید تا آی‌پی جدید در یک دقیقه به همه برسد؛ مسیر کامل تغییر رکورد در راهنمای اتصال دامنه به سرور مجازی آمده است.

اگر آنچه روی سرور دارید یک وب‌سایت است، راه دیگری هم هست: کلید CDN کنار همان رکورد A در پنل DNS. با روشن شدن آن، بازدیدکننده به نودهای لبه‌ی CDN وصل می‌شود و آی‌پی سرور مبدأ در DNS دیده نمی‌شود. حالت پیش‌فرض «خودکار» محل مبدأ را می‌سنجد و برای مبدأ خارج از ایران فقط نودهای خارج را جلو می‌گذارد؛ عوضش نکنید، چون نود داخل ایران برای رسیدن به مبدأ باید از همان مسیر بسته عبور کند. سازوکار CDN را در CDN چیست باز کرده‌ایم.

آی‌پی سرور ایران دسترسی بین‌الملل ندارد: نگهبان فیلترینگ و تعویض آی‌پی

برای سرورهای ابری داخل ایران، مهران هاست سامانه‌ای به نام «نگهبان فیلترینگ» دارد که هر نیم ساعت آی‌پی سرورهای فعال و روشن را از خارج از کشور می‌آزماید. آی‌پی‌ای که در دو بررسی پیاپی هیچ پاسخی ندهد، در فهرست آی‌پی‌های فیلترشده ثبت می‌شود و به تیم فنی هشدار می‌رود؛ از آن به بعد به مشتری تازه‌ای داده نمی‌شود و به‌طور منظم دوباره آزموده می‌شود، و فقط بعد از سه بررسی سالمِ پشت‌سرهم به چرخه برمی‌گردد. آی‌پی سرورِ روشنی که حذف می‌شود هم پیش از بازگشت به استخر آی‌پی‌ها همین آزمون را از خارج می‌گذراند.

سرور شما در این فرایند خودکار دست نمی‌خورد. طبق بند ۱۰ قوانین سرویس، اختلالی که از تصمیم مراجع تنظیم‌گر یا فیلترینگ باشد خارج از کنترل ارائه‌دهنده است و پس از بررسی، امکان تعویض آی‌پی فراهم می‌شود. پس اگر سرور ایرانتان از خارج در دسترس نیست، تیکت بزنید و سه چیز را بنویسید: آی‌پی سرور، مقصد یا سرویسی که باز نمی‌شود، و خروجی تست‌ها — نتیجه‌ی check-host یا mtr. رفتار عادی سرور ایران با اینترنت بین‌الملل، و اینکه چه چیزهایی در روزهای عادی هم از داخل کار نمی‌کنند، در تست دسترسی سرور ایران به اینترنت بین‌الملل آمده است.

همان ساعت اول تحویل، آی‌پی را تست کنید

بهترین زمان کشف آی‌پی بسته، پیش از نصب سرویس و تنظیم DNS است. چون سرورها ساعتی حساب می‌شوند، این آزمون تقریباً هزینه‌ای ندارد: سرور را بسازید، در همان ده دقیقه‌ی اول ping و TCP را از خط خودتان و از check-host بگیرید، و اگر آی‌پی سرور خارج از ایران بسته بود، پیش از هر کاری آن را از پنل عوض کنید. اگر دیگر سرور را نمی‌خواهید، حذفش کنید؛ حذف، هزینه‌ی ساعتی را همان لحظه قطع می‌کند. انتخاب لوکیشن مناسب از نظر پینگ را هم در مقایسه‌ی پینگ آلمان، فنلاند، آمریکا و سنگاپور از ایران ببینید؛ و اگر سرور تازه می‌خواهید، یک سرور خارج از ایران بسازید و همین تست‌ها را رویش اجرا کنید.

سؤالات پرتکرار

چطور بفهمم آی‌پی سرورم فیلتر شده است؟

همان تست را هم‌زمان از داخل و خارج ایران بگیرید: ping و اتصال TCP به پورت سرویس، مثلاً ۲۲ یا ۴۴۳. اگر از خارج هر دو سالم‌اند و از داخل ایران روی چند اپراتور هیچ‌کدام جواب نمی‌دهد، آی‌پی برای ایران بسته است. اگر از هیچ‌جا جواب نمی‌گیرید، مشکل از خود سرور یا فایروال آن است. اگر ping و TCP از ایران سالم است و فقط HTTPS خطا می‌دهد، آی‌پی فیلتر نیست و باید سراغ نام دامنه یا پروتکل بروید.

آیا با check-host.net می‌شود فیلتر بودن آی‌پی را فهمید؟

بله، به شرط مقایسه‌ی دو گروه نود. check-host.net آی‌پی را هم‌زمان از ده‌ها نقطه می‌آزماید و در ۷ مهر ۱۴۰۵ هشت نود داخل ایران داشت، در تهران، اصفهان، شیراز و قم. در تب‌های Ping و TCP port، اگر نودهای خارجی سالم و همه‌ی نودهای ایرانی ناموفق باشند، احتمال فیلتر بالاست. نودهای ایرانی این سایت در دیتاسنترها هستند، پس نتیجه را با تست از اینترنت خودتان هم تأیید کنید.

چرا curl https://IP از ایران خطای Connection reset by peer می‌دهد؟

چون درخواست HTTPS با آی‌پی خالی، نام سایت را در فیلد SNI پیام آغاز TLS نمی‌فرستد و چنین اتصال‌هایی از داخل ایران به مقصد خارجی در همان ابتدا ریست می‌شوند. در آزمایش ما همان سرور با نام واقعی دامنه و سوییچ --resolve کد ۲۰۰ داد و از خارج ایران هر دو حالت کار می‌کرد. پس این خطا نشانه‌ی فیلتر آی‌پی نیست؛ HTTPS را همیشه با نام دامنه تست کنید و برای سرویس‌هایتان دامنه و گواهی معتبر بگذارید.

آی‌پی 10.10.34.36 چیست و چرا دامنه‌ام به آن می‌رسد؟

آی‌پی‌های محدوده‌ی 10.10.34.x نشانی‌های خصوصی‌اند که از داخل ایران به‌جای آی‌پی واقعی دامنه‌های فیلترشده برگردانده می‌شوند. در آزمایش ما حتی پرسش از رزولور خارجی OpenDNS هم همین پاسخ را گرفت، یعنی جواب در مسیر جایگزین می‌شود و تغییر DNS دستگاه کمکی نمی‌کند. اگر دامنه‌ی شما از داخل ایران به این محدوده می‌رسد، خود نام دامنه بسته است و انتقال سایت به آی‌پی یا سرور دیگر مشکل را حل نمی‌کند.

آی‌پی سرور خارجم فیلتر شده؛ چطور عوضش کنم؟

در پنل مهران هاست، سرور را از تب نمای کلی خاموش کنید و در کارت تعویض آی‌پی، با وارد کردن نام سرور، آی‌پی جدید بگیرید. هزینه بر اساس تعرفه‌ی آی‌پی هتزنر پیش از تأیید نمایش داده می‌شود و فقط بعد از تعویض موفق کسر می‌شود؛ آی‌پی جدید تصادفی است و سرور خودکار روشن می‌شود. آی‌پی قبلی برای همیشه آزاد می‌شود، رکوردهای DNS را خودتان به آی‌پی جدید ببرید و تعداد تعویض در ۲۴ ساعت سقف دارد.

آموزش‌های مرتبط

سرور مجازی آلمان، فنلاند، آمریکا یا سنگاپور؟ پینگ و مسیر واقعی از ایران به ۶ لوکیشن هتزنر

پینگ واقعی از دیتاسنتر ایران به ۶ لوکیشن هتزنر: آلمان ۷۷ تا ۸۲، فنلاند ۱۰۲، اشبرن ۱۷۰ و اورگن و سنگاپور ۲۶۰ میلی‌ثانیه؛ با traceroute، افت بسته، ترافیک و جدول انتخاب.

آماده‌ی تمرین عملی هستید؟

سرور ابری ساعتی مهران هاست در ۶۰ ثانیه تحویل می‌شود — تمرین کنید و فقط بابت همان ساعت‌ها پرداخت کنید. هزینه را پیش از ثبت‌نام با محاسبه‌گر برآورد کنید.