
به اشتراک بگذارید

به اشتراک بگذارید
پاسخ کوتاه به پرسش کلودفلر برای سایت ایرانی این است: بستگی دارد بازدیدکنندههای شما از کدام شبکه میآیند. مخاطب داخلی روی سرور تهران یعنی یک گام شبکه و یک TLS handshake اضافه؛ مخاطب بیرون کشور یا فشار ربات یعنی همان لایه ارزش دارد. تصمیم را با اندازهگیری از اتصال خودتان بگیرید، نه با توصیه کلی.
| موضوع | حالت Proxied (ابر نارنجی) | حالت DNS Only (ابر خاکستری) |
|---|---|---|
| پاسخ رکورد A در DNS | یکی از IP های انیکست کلودفلر | آدرس IP واقعی سرور شما |
| مسیر درخواست HTTP | از شبکه کلودفلر به سرور | مستقیم از کاربر به سرور |
| دسترسی مستقیم به مبدأ | تا ۸۰ و ۴۴۳ را به رنج کلودفلر محدود نکنید، باز است | باز است |
| کش و دفاع DDoS لبه | فعال؛ قاعدههای WAF به طرح شما بستگی دارد | هیچکدام اعمال نمیشود |
| آدرس IP بازدیدکننده در لاگ سرور | از هدر CF-Connecting-IP خوانده میشود | همان IP کاربر ثبت میشود |
| مقدار TTL رکورد | ثابت روی ۳۰۰ ثانیه | خودتان تعیین میکنید |
💡 نکته کلیدی
ابر نارنجی یعنی کلودفلر در پاسخ DNS، IP خودش را میدهد؛ ابر خاکستری یعنی فقط نقش DNS دارد.
✅ زمان اتصال هر دو حالت را از اینترنت مخاطب بسنجید.
✅ پروکسی شدن رکورد، سرور را از دسترس مستقیم بیرون نمیبرد؛ آن کار دیوار آتش است.
این یک انتخاب دوگانه ساده نیست. سه متغیر در آن دخالت دارند: مخاطب سایت، مسیر شبکه او تا سرور، و رفتار اپلیکیشن در برابر کش و IP کاربر. پس اول روشن میکنیم هر حالت چه چیزی را عوض میکند، بعد فرمانهای آزمایش را میدهیم و آخر با یک جدول تصمیم میگیرید.
📌 آنچه در این مقاله میخوانید
◀️ کلودفلر روی سرور داخلی دقیقاً چه چیزی را عوض میکند
◀️ هزینههای پنهان یک لایه اضافه در مسیر کاربر داخلی
◀️ تنظیم SSL و کش بدون شکستن ورود کاربر و سبد خرید
◀️ آنچه در سرور شما میشکند و چه زمانی DNS Only انتخاب بهتری است

روشن کردن ابر نارنجی سه چیز را عوض میکند: پاسخ DNS دامنه، مسیر درخواست HTTP و اینکه درخواست اول به کدام لایه میرسد. تا وقتی رکورد DNS Only است، ترافیک وب از شبکه کلودفلر عبور نمیکند.
طبق مستندات رسمی وضعیت پروکسی (آوریل ۲۰۲۶)، رکورد پروکسیشده ترافیک HTTP و HTTPS را از شبکه کلودفلر عبور میدهد و همین امکان کش و قاعدههای امنیتی لبه را میسازد. رکورد DNS Only هم IP سرور را به هر پرسوجوکنندهای نشان میدهد. پس دستاورد مستقیم کلودفلر برای سایت ایرانی بیرون رفتن IP سرور از پاسخ DNS است؛ این با از دسترس خارج شدن سرور یکی نیست.
فقط سه نوع رکورد قابل پروکسی شدن هستند: A، AAAA و CNAME؛ MX و TXT همیشه DNS Only میمانند. رکورد پروکسیشده TTL ثابت ۳۰۰ ثانیه میگیرد و اگر سرور در بازه Proxy Read Timeout پاسخ ندهد، خطای ۵۲۴ میآید.
مستندات کلودفلر صریح است: هر کسی 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/
گام سوم مقایسه است: یک زیردامنه آزمایشی را در هر دو حالت بسازید و فرمان را چند بار اجرا کنید. معیار تصمیم، اختلاف میانه دو حالت در برابر پراکندگی اجراهاست؛ اختلاف کوچکتر از نوسان معمول مسیر، تصمیمی را عوض نمیکند.
دو تنظیم بیشترین خرابی را در کلودفلر برای سایت ایرانی میسازند: حالت رمزنگاری بین لبه و سرور، و قاعده کش. اولی سایت را در حلقه ریدایرکت میاندازد و دومی صفحه شخصیشده یک کاربر را به کاربر بعدی نشان میدهد.
مستندات حالتهای رمزنگاری (آوریل ۲۰۲۶) حالت پیشفرض را 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 هم جلوی کش را نمیگیرد. نتیجه، نمایش سبد خرید یک نفر به نفر بعدی است.
# همان صفحه با کوکی نشست؛ مقدار HIT در پاسخ یعنی قاعده کش اشتباه است
curl -sD - -o /dev/null -b 'wordpress_logged_in_HASH=VALUE' https://www.example.ir/cart/ | grep -i cf-cache-status
در وردپرس اول تکلیف کش را روشن کنید و بعد لایه لبه را اضافه کنید؛ راهنمای فعالسازی CDN در وردپرس همین ترتیب را دارد.

در کلودفلر برای سایت ایرانی سه چیز دیگر مثل قبل کار نمیکنند: 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 هم به همین خطر اشاره دارد.
محدودسازی نرخ و قانون جغرافیایی سمت سرور هم روی داده اشتباه کار میکند.
رکورد MX همیشه DNS Only است و ایمیل از لبه عبور نمیکند. اشتباه رایج، ماندن رکورد A میزبان ایمیل روی همان IP سرور وب است؛ همان راهنمای محافظت از مبدأ توصیه میکند ایمیل و وب روی یک سرور نباشند.
جدول زیر انتخاب را بر پایه مخاطب میچیند، نه فهرست ویژگی؛ با نتایج اندازهگیری خودتان اصلاحش کنید.
| مخاطب و شکل سایت | پیشنهاد نقطه شروع | دلیل |
|---|---|---|
| مخاطب داخلی، سایت محتوایی سبک | اول 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 مستقیم و پنل مدیریت نیاز دارید؛ تست ساعتی رایگان سرور هم ممکن است.
اگر سوالی داشتید، در بخش نظرات با ما در ارتباط باشید.
منابع