پاسخ کوتاه به پرسش کلودفلر برای سایت ایرانی این است: بستگی دارد بازدیدکننده‌های شما از کدام شبکه می‌آیند. مخاطب داخلی روی سرور تهران یعنی یک گام شبکه و یک TLS handshake اضافه؛ مخاطب بیرون کشور یا فشار ربات یعنی همان لایه ارزش دارد. تصمیم را با اندازه‌گیری از اتصال خودتان بگیرید، نه با توصیه کلی.

موضوعحالت Proxied (ابر نارنجی)حالت DNS Only (ابر خاکستری)
پاسخ رکورد A در DNSیکی از IP های انی‌کست کلودفلرآدرس IP واقعی سرور شما
مسیر درخواست HTTPاز شبکه کلودفلر به سرورمستقیم از کاربر به سرور
دسترسی مستقیم به مبدأتا ۸۰ و ۴۴۳ را به رنج کلودفلر محدود نکنید، باز استباز است
کش و دفاع DDoS لبهفعال؛ قاعده‌های WAF به طرح شما بستگی داردهیچ‌کدام اعمال نمی‌شود
آدرس IP بازدیدکننده در لاگ سروراز هدر CF-Connecting-IP خوانده می‌شودهمان IP کاربر ثبت می‌شود
مقدار TTL رکوردثابت روی ۳۰۰ ثانیهخودتان تعیین می‌کنید

💡 نکته کلیدی

ابر نارنجی یعنی کلودفلر در پاسخ DNS، IP خودش را می‌دهد؛ ابر خاکستری یعنی فقط نقش DNS دارد.
✅ زمان اتصال هر دو حالت را از اینترنت مخاطب بسنجید.
✅ پروکسی شدن رکورد، سرور را از دسترس مستقیم بیرون نمی‌برد؛ آن کار دیوار آتش است.

این یک انتخاب دوگانه ساده نیست. سه متغیر در آن دخالت دارند: مخاطب سایت، مسیر شبکه او تا سرور، و رفتار اپلیکیشن در برابر کش و IP کاربر. پس اول روشن می‌کنیم هر حالت چه چیزی را عوض می‌کند، بعد فرمان‌های آزمایش را می‌دهیم و آخر با یک جدول تصمیم می‌گیرید.

نمودار مسیر درخواست کاربر به سرور تهران

کلودفلر روی سرور داخلی دقیقاً چه چیزی را عوض می‌کند

روشن کردن ابر نارنجی سه چیز را عوض می‌کند: پاسخ DNS دامنه، مسیر درخواست HTTP و اینکه درخواست اول به کدام لایه می‌رسد. تا وقتی رکورد DNS Only است، ترافیک وب از شبکه کلودفلر عبور نمی‌کند.

طبق مستندات رسمی وضعیت پروکسی (آوریل ۲۰۲۶)، رکورد پروکسی‌شده ترافیک HTTP و HTTPS را از شبکه کلودفلر عبور می‌دهد و همین امکان کش و قاعده‌های امنیتی لبه را می‌سازد. رکورد DNS Only هم IP سرور را به هر پرس‌وجوکننده‌ای نشان می‌دهد. پس دستاورد مستقیم کلودفلر برای سایت ایرانی بیرون رفتن IP سرور از پاسخ DNS است؛ این با از دسترس خارج شدن سرور یکی نیست.

حالت Proxied در برابر DNS Only؛ تفاوت در لایه رکورد

فقط سه نوع رکورد قابل پروکسی شدن هستند: A، AAAA و CNAME؛ MX و TXT همیشه DNS Only می‌مانند. رکورد پروکسی‌شده TTL ثابت ۳۰۰ ثانیه می‌گیرد و اگر سرور در بازه Proxy Read Timeout پاسخ ندهد، خطای ۵۲۴ می‌آید.

پنهان شدن IP بدون بستن مبدأ، پنهان‌سازی نیست

مستندات کلودفلر صریح است: هر کسی IP سرور را پیدا کند می‌تواند مستقیم درخواست بفرستد و از همه محافظت‌ها عبور کند. راهنمای محافظت از سرور مبدأ قدم لازم را می‌گوید: ترافیکی که از رنج‌های IP کلودفلر نمی‌آید باید روی سرور بسته شود. فهرست رسمی این رنج‌ها در صفحه IP های کلودفلر است و تغییر می‌کند، پس فرمان زیر آن را در لحظه می‌خواند.

# فقط رنج‌های رسمی کلودفلر به پورت 80 و 443 دسترسی داشته باشند
for net in $(curl -s https://www.cloudflare.com/ips-v4) $(curl -s https://www.cloudflare.com/ips-v6); do
  ufw allow proto tcp from "$net" to any port 80,443
done
ufw deny 80/tcp && ufw deny 443/tcp

آزمون این ادعا یک فرمان است: درخواست را با نام دامنه اما روی IP سرور بفرستید؛ پاسخ ۲۰۰ یعنی مبدأ باز مانده.

curl -I --max-time 10 --resolve www.example.ir:443:ORIGIN_IP https://www.example.ir/

🔸 دو گزینه مستندشده دیگر

گزینه Authenticated Origin Pulls یا AOP با mTLS تضمین می‌کند درخواست از شبکه کلودفلر آمده؛ روی هر چهار طرح هست و با حالت‌های Off و Flexible کار نمی‌کند.
گزینه Cloudflare Tunnel هم سرور را با اتصال خروجی وصل می‌کند و پورت ورودی عمومی لازم ندارد.

زیردامنه‌ای مثل mail که با همان IP به شکل DNS Only بماند هم سرور را لو می‌دهد. همان راهنما می‌گوید رکوردهای DNS Only را بازبینی و بعد از انتقال IP سرور را عوض کنید، چون رکوردهای تاریخی دامنه عمومی می‌مانند. مرور تغییر نیم‌سرور دامنه ترتیب کار را روشن می‌کند.

پورت‌های پروکسی‌شده و مرز طرح رایگان

🔸 فهرست پورت‌های پیش‌فرض

بر پایه مستندات پورت‌های شبکه کلودفلر (آوریل ۲۰۲۶): پورت‌های HTTP شامل 80، 8080، 8880، 2052، 2082، 2086 و 2095 و پورت‌های HTTPS شامل 443، 2053، 2083، 2087، 2096 و 8443 هستند.
روی نام پروکسی‌شده، پورت بیرون از این فهرست پاسخ نمی‌گیرد؛ راه‌حل مستند، خاکستری کردن زیردامنه یا Spectrum است.

پس پنل مدیریتی روی پورت غیر استاندارد باید به زیردامنه‌ای جدا با DNS Only برود. مرز طرح رایگان هم مهم است: Universal SSL و Always Use HTTPS و کش پیش‌فرض و AOP روی آن هستند. اما طبق جدول دسترسی مستندات WAF کلودفلر (سپتامبر ۲۰۲۶) تنها Free Managed Ruleset فعال است؛ قاعده‌های مدیریت‌شده کلودفلر و OWASP از Pro به بالا هستند. پس «پروکسی شدم، یعنی WAF دارم» درست نیست.

هزینه‌های پنهان یک لایه اضافه در مسیر کاربر داخلی

هزینه‌های پنهان یک لایه اضافه در مسیر کاربر داخلی

هر درخواست پروکسی‌شده یک گام شبکه و یک TLS handshake بیشتر دارد: کاربر با نزدیک‌ترین نقطه کلودفلر TLS برقرار می‌کند و کلودفلر اتصال دومی با سرور می‌سازد. هزینه دوم این است که اگر آن نقطه بیرون کشور باشد، ترافیک کاربر داخلی به مسیر بین‌الملل اپراتور وابسته می‌شود؛ مسیری بیرون از کنترل شما.

چرا پاسخ به شبکه بازدیدکننده بستگی دارد

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

⚠️ چیزی که نمی‌توان از پیش وعده داد

هیچ منبعی از قبل نمی‌گوید این لایه در شبکه مخاطب شما سایت را سریع‌تر یا کندتر می‌کند. کیفیت مسیر بین‌الملل و تغییر مسیر اپراتور خارج از کنترل شما و کلودفلر است.
پس آزمایش بعدی را اجرا کنید.

روش آزمایش از اتصال خودتان؛ سه فرمان کوتاه

اول ببینید رکوردهای A و AAAA به کجا اشاره می‌کنند: پاسخ یکی از IP های کلودفلر یعنی پروکسی‌شده، برگشتن IP سرور یعنی DNS Only. هدر cf-ray نشان می‌دهد پاسخ از لبه آمده و برای سنجش کش، cf-cache-status را با GET ببینید.

dig +short www.example.ir A
dig +short www.example.ir AAAA
curl -sD - -o /dev/null https://www.example.ir/ | grep -iE 'cf-ray|cf-cache-status'

یک نتیجه‌گیری اشتباه رایج را کنار بگذارید: مقدار DYNAMIC یا BYPASS یعنی پاسخ کش نشده، نه اینکه از لبه عبور نکرده. برای HTML همین طبیعی است و نشانه معتبر عبور از لبه، وجود cf-ray است.

گام دوم سنجیدن زمان است. چون time_appconnect تجمعی است، با time_connect می‌توانید سهم TLS را از سهم مسیر جدا کنید.

curl -o /dev/null -s -w 'dns:%{time_namelookup} connect:%{time_connect} tls:%{time_appconnect} ttfb:%{time_starttransfer}\n' https://www.example.ir/

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

تنظیم SSL و کش بدون شکستن ورود کاربر و سبد خرید

دو تنظیم بیشترین خرابی را در کلودفلر برای سایت ایرانی می‌سازند: حالت رمزنگاری بین لبه و سرور، و قاعده کش. اولی سایت را در حلقه ریدایرکت می‌اندازد و دومی صفحه شخصی‌شده یک کاربر را به کاربر بعدی نشان می‌دهد.

انتخاب حالت رمزنگاری بین لبه و سرور

مستندات حالت‌های رمزنگاری (آوریل ۲۰۲۶) حالت پیش‌فرض را Automatic SSL/TLS معرفی می‌کند و پنج حالت دستی را کنارش می‌گذارد، با توصیه صریح به Full یا Full (strict). تفاوتشان اعتبارسنجی گواهی سرور است: در Full بررسی نمی‌شود، در Full (strict) باید معتبر و هم‌خوان با نام میزبان باشد.

حالتاتصال لبه تا سرورشرط سمت سرور
حالت Automatic SSL/TLS (پیش‌فرض)کلودفلر امن‌ترین حالت ممکن را می‌گیردبسته به گواهی روی سرور
حالت Offبدون رمزنگاریتوصیه نمی‌شود
حالت Flexibleاتصال HTTP بدون رمزنگاریسرور نباید HTTP را به HTTPS ریدایرکت کند
حالت Fullاتصال HTTPS بدون بررسی گواهیپورت 443 باز و گواهی، حتی خودامضا
حالت Full (strict)اتصال HTTPS با بررسی گواهیگواهی معتبر از CA عمومی یا Origin CA کلودفلر
حالت Strict (SSL-Only Origin Pull)همیشه HTTPS با بررسی گواهیمثل Full (strict)، فقط روی Enterprise

⚠️ حلقه ریدایرکت در حالت Flexible

اگر سرور همه درخواست‌های HTTP را به HTTPS ریدایرکت می‌کند، Flexible را انتخاب نکنید: لبه با HTTP وصل می‌شود، سرور به HTTPS برمی‌گرداند و چرخه تا خطای ERR_TOO_MANY_REDIRECTS تکرار می‌شود.
همان صفحه می‌گوید Flexible تنها روی پورت 443 پشتیبانی می‌شود و بقیه پورت‌های HTTPS به Full برمی‌گردند؛ راه درست، نصب گواهی روی سرور است.

خطای ۵۲۵ یعنی TLS میان لبه و سرور شکل نگرفته؛ معمولاً پورت 443 بسته است، گواهی ندارید یا SNI پشتیبانی نمی‌شود. خطای ۵۲۶ یعنی گواهی شرط‌های Full (strict) را ندارد. هر دو را باید روی سرور حل کرد.

ریدایرکت HTTP به HTTPS را هم در لبه بگذارید، نه در سرور: گزینه Always Use HTTPS روی هر چهار طرح هست و مستنداتش توصیه می‌کند ریدایرکت را روی سرور نگذارید. برای محتوای ترکیبی گزینه جداگانه‌ای هست: Automatic HTTPS Rewrites ارجاع‌های ناامن داخل HTML را اصلاح می‌کند.

خطر کش شدن صفحه ورود و سبد خرید

کش پیش‌فرض بر پایه پسوند فایل کار می‌کند و HTML و JSON را کش نمی‌کند. سند رفتار پیش‌فرض کش (سپتامبر ۲۰۲۶) فهرست پسوندها را می‌دهد: css و js و jpg و png و webp و woff2 و pdf هستند و html نیست؛ robots.txt هم کش می‌شود. پس تا قاعده دستی نساخته‌اید، داشبورد کاربر کش نمی‌شود.

خطر از جایی شروع می‌شود که با یک Cache Rule مقدار Edge Cache TTL را روی HTML اعمال کنید، یا در وردپرس سراغ Cache Everything و APO بروید. همان سند می‌گوید این قاعده هدرهای پاسخ سرور را نادیده می‌گیرد؛ حتی Cache-Control با private یا Set-Cookie هم جلوی کش را نمی‌گیرد. نتیجه، نمایش سبد خرید یک نفر به نفر بعدی است.

  • قاعده کش HTML را فقط روی مسیرهای عمومی اعمال کنید
  • مسیرهای /cart و /checkout و /my-account و /wp-admin و /wp-login.php را بیرون بگذارید
  • وجود کوکی نشست مثل wordpress_logged_in را شرط رد شدن از کش کنید
  • هدر cf-cache-status را با کاربر مهمان و با کاربر وارد‌شده ببینید
# همان صفحه با کوکی نشست؛ مقدار HIT در پاسخ یعنی قاعده کش اشتباه است
curl -sD - -o /dev/null -b 'wordpress_logged_in_HASH=VALUE' https://www.example.ir/cart/ | grep -i cf-cache-status

در وردپرس اول تکلیف کش را روشن کنید و بعد لایه لبه را اضافه کنید؛ راهنمای فعال‌سازی CDN در وردپرس همین ترتیب را دارد.

تنظیم SSL و کش بدون شکستن ورود کاربر و سبد خرید
کلودفلر برای سایت ایرانی

آن‌چه در سرور شما می‌شکند و چه زمانی DNS Only انتخاب بهتری است

در کلودفلر برای سایت ایرانی سه چیز دیگر مثل قبل کار نمی‌کنند: IP کاربر در لاگ سرور، سرویس غیر وب روی پورت غیر استاندارد، و هر قاعده امنیتی که روی IP مبدأ تکیه دارد.

برگرداندن IP واقعی بازدیدکننده به سرور

با پروکسی شدن رکورد، لاگ سرور IP کلودفلر را ثبت می‌کند نه IP کاربر؛ آدرس واقعی در هدر CF-Connecting-IP می‌آید. راهنمای بازگرداندن IP اصلی بازدیدکننده (آوریل ۲۰۲۶) روش هر وب‌سرور را می‌دهد. در nginx این خطوط به بستر http در nginx.conf می‌روند و ماژول ngx_http_realip_module باید فعال باشد. خط set_real_ip_from را برای همه رنج‌های رسمی تکرار کنید.

# /etc/nginx/nginx.conf داخل بستر http
set_real_ip_from 103.21.244.0/22;   # برای هر رنج فهرست رسمی یک خط
set_real_ip_from 2400:cb00::/32;    # رنج‌های IPv6 را جا نگذارید
real_ip_header CF-Connecting-IP;

در آپاچی اول ماژول را در شل فعال کنید و بعد دایرکتیوها را در فایل کانفیگ بگذارید. این دو را مخلوط نکنید: a2enmod فرمان شل است و آپاچی با دیدن آن در کانفیگ بالا نمی‌آید.

sudo a2enmod remoteip && sudo systemctl reload apache2
# /etc/apache2/conf-available/remoteip.conf
RemoteIPHeader CF-Connecting-IP
RemoteIPTrustedProxy 103.21.244.0/22
RemoteIPTrustedProxy 2400:cb00::/32

در آپاچی مقدار %h در LogFormat را هم به %a عوض کنید. کلودفلر ماژول mod_remoteip را توصیه می‌کند و دیگر mod_cloudflare را نگه‌داری نمی‌کند.

⚠️ جایی که این تنظیم حیاتی می‌شود

ابزارهایی مثل fail2ban روی IP مبدأ تصمیم می‌گیرند. بدون این تنظیم می‌توانند رنج خود کلودفلر را مسدود کنند و دسترسی بخشی از بازدیدکننده‌ها قطع شود؛ مستندات قاعده‌های دسترسی IP هم به همین خطر اشاره دارد.
محدودسازی نرخ و قانون جغرافیایی سمت سرور هم روی داده اشتباه کار می‌کند.

رکوردهایی که باید DNS Only بمانند

رکورد MX همیشه DNS Only است و ایمیل از لبه عبور نمی‌کند. اشتباه رایج، ماندن رکورد A میزبان ایمیل روی همان IP سرور وب است؛ همان راهنمای محافظت از مبدأ توصیه می‌کند ایمیل و وب روی یک سرور نباشند.

  • رکورد MX و SPF و DKIM و DMARC: همیشه DNS Only
  • زیردامنه SSH و FTP و پنل مدیریت: DNS Only روی یک نام جدا
  • رکورد تأیید مالکیت سرویس ثالث: DNS Only، چون پروکسی شدن تأیید را می‌شکند

جدول تصمیم بر اساس مخاطب سایت

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

مخاطب و شکل سایتپیشنهاد نقطه شروعدلیل
مخاطب داخلی، سایت محتوایی سبکاول DNS Only را بسنجیدیک گام شبکه کمتر؛ HTML هم پیش‌فرض کش نمی‌شود
مخاطب داخلی، فشار ربات و اسکنحالت Proxied با مبدأ بستهفیلتر درخواست خودکار پیش از رسیدن به سرور
مخاطب بین‌المللی یا فارسی‌زبان خارج کشورحالت Proxied را بسنجیداحتمال نزدیک‌تر بودن نقطه لبه؛ با cf-ray بسنجید
فروشگاه با ورود کاربر و سبد خریدحالت Proxied با قاعده کش دقیقخطر کش شدن صفحه شخصی‌شده
سرویس غیر وب روی همان دامنهرکورد جدا با DNS Onlyپورت‌های غیر استاندارد پروکسی نمی‌شوند

برگشت ساده است: وضعیت رکوردهای A و AAAA را به DNS Only عوض کنید؛ فقط چون TTL سیصد ثانیه است، تا چند دقیقه بخشی از ریزالورها پاسخ قبلی را می‌دهند.

🔶 چرا سرور با IP مستقیم کار را ساده می‌کند

آزمایش دو حالت وقتی معنی دارد که سرور IP مستقیم داشته باشد. سرور ایران وب‌داده در دیتاسنتر تهران و روی شبکه رسپینا میزبانی می‌شود و IP مستقیمش از اینترنت بین‌الملل هم در دسترس است.
تغییر IP و ارتقای منابع هم از پنل و بدون تیکت است.

پرسش‌هایی که پیش از تغییر وضعیت رکورد باید جوابشان را بدانید:

با روشن کردن ابر نارنجی، سرور من از دسترس مستقیم خارج می‌شود؟

نه. پروکسی شدن فقط IP را از پاسخ DNS بیرون می‌برد. مستندات کلودفلر می‌گوید هر کسی IP مبدأ را پیدا کند می‌تواند مستقیم درخواست بفرستد و از همه محافظت‌ها عبور کند. پس پورت ۸۰ و ۴۴۳ را به رنج‌های کلودفلر محدود کنید یا از AOP یا Cloudflare Tunnel استفاده کنید.

بیرون رفتن IP سرور از پاسخ DNS و فیلتر شدن بخشی از درخواست‌های خودکار. سود سرعت قطعی نیست و با فرمان‌های بخش دوم سنجیده می‌شود.

خطای ۵۲۵ یعنی TLS میان لبه و سرور شکل نگرفته؛ معمولاً پورت 443 بسته است، گواهی ندارید یا SNI پشتیبانی نمی‌شود. خطای ۵۲۶ یعنی گواهی سرور شرط‌های Full (strict) را ندارد.

نه. طبق جدول دسترسی مستندات WAF، روی رایگان تنها Free Managed Ruleset فعال است؛ قاعده‌های مدیریت‌شده کلودفلر و OWASP از Pro به بالا هستند.

نه. مقدار DYNAMIC یا BYPASS یعنی آن پاسخ کش نشده و برای HTML طبیعی است. نشانه معتبر عبور از لبه، وجود هدر cf-ray است.

ماژول realip را با set_real_ip_from روی همه رنج‌های رسمی و real_ip_header برابر CF-Connecting-IP تنظیم کنید. در آپاچی mod_remoteip را فعال و در LogFormat مقدار %h را به %a عوض کنید.

وضعیت رکورد A و AAAA را به DNS Only عوض کنید. تغییر در لبه فوری است، اما چون TTL رکورد پروکسی‌شده سیصد ثانیه است، تا چند دقیقه بخشی از ریزالورها پاسخ قبلی را می‌دهند.

جمع‌بندی؛ تصمیم را روی داده خودتان بگیرید کلودفلر برای سایت ایرانی نه یک توصیه ثابت دارد و نه پاسخ بله و خیر. آن‌چه قطعی است، رفتار مستندشده خود سرویس است: رکورد پروکسی‌شده IP سرور را از پاسخ DNS بیرون می‌برد، TTL را روی ۳۰۰ ثانیه ثابت می‌کند، تنها روی فهرست مشخصی از پورت‌ها کار می‌کند و HTML را پیش‌فرض کش نمی‌کند. قطعی نیست اثر این لایه روی سرعت در شبکه مخاطب شما. پس ترتیب کار این است: اول پورت ۸۰ و ۴۴۳ را به رنج‌های رسمی کلودفلر محدود و رکوردهای DNS Only را بازبینی کنید، وگرنه پنهان‌سازی IP روی کاغذ می‌مانَد. بعد حالت رمزنگاری را روی Full یا Full (strict) ببرید. بعد IP واقعی بازدیدکننده را با realip یا mod_remoteip برگردانید، وگرنه لاگ و محدودسازی نرخ اشتباه کار می‌کند. در پایان هر دو حالت را از اتصال مخاطب هدف بسنجید؛ اگر نتیجه به سود لایه اضافه نبود، برگشت به DNS Only یک کلیک است.

🚀 قدم بعدی

برای آزمایش هر دو حالت به سروری با IP مستقیم و پنل مدیریت نیاز دارید؛ تست ساعتی رایگان سرور هم ممکن است.

اگر سوالی داشتید، در بخش نظرات با ما در ارتباط باشید.

منابع

وب داده
وب داده

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

مقاله‌ها: 251
پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *