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

به اشتراک بگذارید
وایتلیست IP پنل پیامک یعنی سرویسدهنده فقط درخواستهایی را میپذیرد که از نشانی IP ثبتشده شما بیرون آمده باشد و بقیه را رد میکند. در درگاه بانکی هم یک آدرس سرور ثبت میشود؛ تنها چیزی که از مستندات عمومی برمیآید، الزام اعلام آن آدرس است. اگر سرور را جابهجا کردهاید و کد یکبارمصرف سایت ارسال نمیشود، همین فهرست اولین جایی است که باید ببینید.
دو اصطلاح را همین اول روشن کنیم. «وایتلیست» همان فهرست IP مجاز است و در ادامه فقط همین واژه را به کار میبریم. «آدرس Main Server» هم یعنی آدرس عمومی سروری که درخواستهای سایت از آن بیرون میرود، نه آدرس دامنه.
| پرسش | سمت پنل پیامک | سمت درگاه بانکی | کاری که باید بکنید |
|---|---|---|---|
| چه چیزی ثبت میشود؟ | آدرس IP خروجی سرور | آدرس Main Server پذیرنده، طبق مستندات زرینپال | آدرس عمومی خروجی را دقیق بهدست آورید |
| پیشفرض چیست؟ | در مستندات GatewayAPI همه آدرسها مجازند | در مستندات عمومی نیامده است | سیاست را کتبی بپرسید |
| جهت دومی هم دارد؟ | بله؛ آدرسهای callback سرویسدهنده | مستند عمومیای ندیدیم | فهرست آدرسهای بازگشت را بخواهید |
| بزرگترین تله | آدرس کارت شبکه با آدرس خروجی یکی نیست | واسطههایی مثل NAT و CDN | آدرس واقعی را از بیرون ببینید |
| روز مهاجرت | آدرس قدیم و جدید را همزمان ثبت کنید | آدرس جدید را پیش از مهاجرت اعلام کنید | حذف آدرس قدیمی در آخر |
💡 نکته کلیدی
وایتلیست یک قفل ساده است؛ اگر کلید API شما لو برود، درخواست مهاجم از آدرس دیگری پذیرفته نمیشود.
✅ پیش از هر ثبتی، آدرس خروجی سرور را از بیرون ببینید، نه از خروجی کارت شبکه.
✅ ثبت وقتی پایدار میماند که آدرس اختصاصی باشد، مثل Vps ایران با IP مستقیم.
این مقاله را مثل پر کردن یک فرم جلو میبریم. اول روشن میکنیم سرویسدهنده واقعاً چه عددی را میبیند. بعد همان عدد را از دل سرور بیرون میکشیم. سپس سراغ این میرویم که از پشتیبانی چه بپرسید، و آخر هم ترتیب کارها در روز جابهجایی سرور. اگر وقت کم دارید، جدول «در یک نگاه» و چکلیست بخش چهارم برای شروع کافیاند.
📌 آنچه در این مقاله میخوانید
◀️ سازوکار وایتلیست در پنل پیامک و درگاه بانکی
◀️ پیدا کردن IP خروجی واقعی سرور و ثبت درست آن
◀️ تفاوت سرویسدهندهها و پرسشهایی که پیش از ثبت باید بپرسید
◀️ چکلیست مهاجرت سرور بدون قطع پیامک و پرداخت

در وایتلیست IP پنل پیامک، سرویسدهنده آدرس مبدأ اتصال TCP شما را با فهرستی که خودتان ثبت کردهاید مقایسه میکند. اگر یکی بود، درخواست جلو میرود؛ اگر نبود، همانجا رد میشود. کلید API، نام کاربری و امضای درخواست هیچکدام جای این مقایسه را نمیگیرند.
این قفل دو طرف دارد و خیلی از تیکتها از قاطی شدن همین دو طرف میآید. جهت اول خروجی شماست: سرور شما وبسرویس را صدا میزند و سرویسدهنده آدرس شما را میسنجد. راهنمای وایتلیست GatewayAPI همین جهت را توضیح داده است. آنجا پیشفرض این است که همه آدرسهای IPv4 و IPv6 مجازند؛ تا دو گزینه «اجازه به همه» را برندارید، محدودیتی اعمال نمیشود. بعد در بخش Developer و زیرمنوی IP Whitelist یک آدرس یا بازه CIDR با برچسب اضافه میکنید.
جهت دوم برعکس است: سرویسدهنده به سمت شما میآید. مستندات Plivo این حالت را برای callback شرح میدهد و میگوید ترافیک آن آدرسها را به سمت وباپلیکیشن خود باز کنید. آن صفحه آدرسها را «NAT gateway IP» سرورهای واسط خود مینامد، فقط برای دو ناحیه در آمریکا فهرست کرده و برای تغییرشان خبرنامه گذاشته است؛ یعنی این فهرست ثابت نیست.
درباره درگاه بانکی، تنها چیزی که از مستندات رسمی خواندیم الزام اعلام آدرس است: مستندات درگاه زرینپال زیر عنوان «آدرس آیپی IP پذیرنده» از پذیرنده میخواهد آدرس Main Server سایت خود را بهدست آورد و اعلام کند. همان صفحه نه متن خطایی دارد و نه از رفتار سرویس در صورت نخواندن آدرس چیزی گفته، پس ما هم چنین رفتاری به آن نسبت نمیدهیم.
هدف، محدود کردن دامنه خرابی است. وقتی کلید لو میرود، مهاجم از زیرساخت خودش درخواست میفرستد و وایتلیست آن را رد میکند؛ مستندات GatewayAPI همین سناریو را دلیل فعال کردن محدودیت میداند. در پنل خودتان این تنظیم معمولاً زیر تنظیمات، امنیت یا وبسرویس است و اگر پیدا نکردید، نامش را از پشتیبانی بپرسید.
🔸 سرویسدهنده کدام آدرس را میبیند؟
آدرسی که میبیند، مبدأ بستههای TCP است، نه آنچه در هدرهای HTTP نوشتهاید. جایی که بالانسر وسط است، آدرس اصلی در هدرها منتقل میشود؛ سند RFC 7239 هدر Forwarded و پارامتر for را برای همین تعریف کرده است.
همین سند هشدار میدهد این هدرها قابل اعتماد نیستند، چون هر گره میانی و حتی خود کلاینت میتواند تغییرشان دهد.
⚠️ چیزی که هیچوقت نباید جابهجا شود
برای ثبت آدرس، فقط به عدد IP نیاز است. کلید API، رمز پنل، کلید درگاه و توکنها را در تیکت یا اسکرینشات نفرستید.
اگر کلیدی را جایی فرستادهاید، باطلش کنید و کلید تازه بسازید؛ محدود کردن آدرس جای این کار را نمیگیرد.
مهمترین خطای عملی در وایتلیست IP پنل پیامک این است که آدرس روی کارت شبکه را ثبت کنند. آن آدرس ممکن است خصوصی باشد و سرویسدهنده هرگز آن را نبیند. عددی که باید ثبت شود، آدرسی است که یک سرور بیرونی هنگام اتصال شما میبیند.
این فرمانها را روی خود سرور اجرا کنید، نه روی لپتاپ. دو فرمان اول آدرسهای IPv4 و IPv6 کارت شبکه را نشان میدهند. فرمان سوم آدرس مبدأ محلی را میدهد که هسته لینوکس برای این مسیر انتخاب میکند، یعنی همان عددی که پشت NAT به کار سرویسدهنده نمیآید. دو فرمان آخر همان را برمیگردانند که طرف مقابل میبیند.
ip -4 addr show
ip -6 addr show
ip route get 1.1.1.1
curl -4 https://api.ipify.org
curl -6 https://api6.ipify.org
خروجی فرمان سوم یک سطر است و عددی که به کارتان میآید بعد از کلمه src مینشیند:
1.1.1.1 via 192.0.2.1 dev eth0 src 192.0.2.50 uid 0
اگر فرمان پنجم با خطای اتصال برگشت، یعنی سرور IPv6 ندارد و همین پاسخ درست است، نه نشانه خرابی. اگر خروجی فرمان چهارم با آدرس کارت شبکه یکی بود، همان را ثبت کنید. اگر فرق داشت، سرور پشت لایه ترجمه آدرس است؛ از ارائهدهنده بپرسید آدرس عمومی خروجی کدام است و آیا آدرس اختصاصی ثابت میدهد. تفاوتشان را در راهنمای آیپی اختصاصی آوردهایم.
| آدرسی که میبینید | معنایش | اقدام درست |
|---|---|---|
| آدرس 10.x.x.x یا 172.16 تا 172.31 یا 192.168.x.x | آدرس خصوصی داخلی، طبق RFC 1918 | ثبت نکنید؛ آدرس عمومی خروجی را بگیرید |
| آدرس در بازه 100.64.0.0/10 | فضای آدرس اشتراکی که RFC 6598 برای CGNAT رزرو کرده است | قابل ثبت نیست؛ آدرس اختصاصی بخواهید |
| آدرس عمومی کارت شبکه برابر با خروجی curl | آدرس خروجی واقعی سرور | همین را ثبت کنید |
| آدرس عمومی کارت شبکه غیر از خروجی curl | خروجی از آدرس دیگری NAT میشود | آدرس خروجی را از زیرساخت بپرسید |
| آدرس IPv6 فعال در خروجی فرمان دوم | مسیر دوم خروجی | ثبتش کنید یا خروجی را به IPv4 ببندید |
چرا بازه 100.64.0.0/10 جداگانه آمده است؟ RFC 6598 آن را بهعنوان Shared Address Space برای شمارهگذاری مسیر میان تجهیزات CGNAT و مشتری رزرو کرده است. همان سند میگوید این بستهها قابل مسیریابی جهانی نیستند و باید در ورودی شبکه ارائهدهنده فیلتر شوند. پس آدرسی در این بازه، اختصاصی شما نیست.
اگر سرور هم IPv4 دارد و هم IPv6، ترتیب انتخاب آدرس در سیستمعامل معمولاً IPv6 را مقدم میداند؛ قاعدهاش در RFC 6724 آمده و تصمیمگیرنده سیستمعامل است، نه کتابخانه HTTP. نتیجه این است که آدرس IPv4 را ثبت کردهاید و درخواست از IPv6 بیرون میرود و رد میشود. یا هر دو را ثبت کنید، یا خروجی را روی IPv4 قفل کنید. سه خط زیر قفل و باز کردن آدرس بازگشت روی فایروال را نشان میدهند:
curl -4 https://api.ipify.org
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
sudo ufw allow from 203.0.113.10 to any port 443 proto tcp
🔶 از سمت زیرساخت چه چیزی لازم است
برای ثبت پایدار، سرور باید IP مستقیم خودش را داشته باشد. سرور مجازی ایران وبداده در دیتاسنتر تهران و روی شبکه رسپینا میزبانی میشود. هر سرور IP مستقیم با پشتیبانی IPv4 و IPv6 دارد. تغییر IP هم از همان پنل و بدون تیکت انجام میشود.
اسنپشات و بازگردانی هم در پنل هست و روز مهاجرت به کار میآید.

سیاست وایتلیست IP پنل پیامک و درگاه، میان سرویسدهندهها یکسان نیست. در مستندات GatewayAPI این محدودیت اختیاری و خودسرویس است و در مستندات زرینپال اعلام آدرس بخشی از اطلاعات فنی پذیرنده است. برای بقیه سرویسها چیزی نمیدانیم و باید پرسید.
در این مقاله فقط رفتاری نقل میشود که در مستندات عمومی خود سرویسدهنده آمده باشد؛ سه نمونه زیر از همان مستندات خوانده شدهاند. درباره بانکها و شرکتهای PSP ایرانی مستند عمومی در دسترس نبود و ما هم سیاستی به آنها نسبت نمیدهیم.
| مستند رسمی | چه چیزی را مستند کرده است | نکته عملی برای شما |
|---|---|---|
| راهنمای GatewayAPI | محدود کردن ارسال به آدرسهای تأییدشده؛ پیشفرض همه مجاز؛ افزودن IP یا بازه CIDR | خودتان فعالش کنید و برای آدرس متغیر، بازه را ثبت کنید |
| مستندات Plivo | آدرسهای NAT gateway که callback از آنها میآید، برای دو ناحیه، با خبرنامه تغییرات | آنها را روی فایروال باز و دورهای بازبینی کنید |
| مستندات درگاه زرینپال | الزام اعلام آدرس Main Server سایت پذیرنده | آدرس سرور اصلی را درست بهدست آورید و اعلام کنید |
پاسخ پرسش ششم بیشتر از بقیه به کارتان میآید؛ پیام خطا در هر سرویس شکل دیگری دارد و در مستندات عمومی نیامده. نمونههایی از خطاهای درگاه و جای بررسیشان را در رفع خطاهای درگاه پرداخت در WHMCS جمع کردهایم.
⚠️ سیاست سرویسدهنده را حدس نزنید
اگر مستندی ندارید، سیاست بانک یا PSP را حدس نزنید. بپرسید، پاسخ را با تاریخ ثبت کنید و همان را مرجع بگذارید.
جملههایی مثل «همه بانکها IP میخواهند» بدون سند، فقط مهاجرت بعدی را خراب میکنند.

ترتیب کارها در روز جابهجایی سرور، تفاوت میان قطعی چنددقیقهای و یک روز بدون ارسال پیامک است. اصل ماجرا ساده است: در وایتلیست IP پنل پیامک و درگاه، آدرس تازه را پیش از مهاجرت اضافه کنید و آدرس قدیمی را بعد از تأیید سلامت حذف کنید.
| نشانه | جای بررسی | اقدام |
|---|---|---|
| کد یکبارمصرف ارسال نمیشود و پاسخ سرویس خطای دسترسی است | لاگ برنامه و پاسخ خام وبسرویس | آدرس خروجی را با آدرس ثبتشده مقایسه کنید |
| پیام خطای درگاه به آدرس سرور اشاره میکند | آدرس Main Server اعلامشده | آدرس را اصلاح و دوباره اعلام کنید |
| درگاه باز میشود ولی وضعیت تراکنش بهروز نمیشود | مسیر callback و فایروال ورودی | فهرست آدرسهای بازگشت را بخواهید و باز کنید |
| ارسال از یک سرور کار میکند و از دیگری نه | آدرس خروجی هر دو سرور | آدرس سرور دوم را هم ثبت کنید |
| همه چیز درست است ولی گاهی رد میشود | خروجی IPv6 و چند مسیر خروجی | هر دو آدرس را ثبت کنید یا خروجی را قفل کنید |
منظور از «پاسخ خام» سه چیز با هم است: کد وضعیت HTTP، بدنه پاسخ و هدرها. روی سرور با افزودن گزینه i به همان فرمان curl میگیریدش و در برنامه با لاگ کردن بدنه پیش از پارس کردن. همان متن تعیین میکند مشکل از وایتلیست است یا از امضای درخواست.
📌 یادآوری روز مهاجرت
آدرس قدیمی را آخر از همه حذف کنید و تا آن لحظه سرور قبلی را خاموش نکنید.
✅ یک فایل ساده با چهار ستون نگه دارید: نام سرویس، آدرس ثبتشده، تاریخ ثبت، تأییدکننده.
پرسشهایی که کاربران پیش از ثبت آدرس بیشتر میپرسند
چون آدرس خروجی سرور تازه در وایتلیست سرویس ثبت نشده است. پاسخ خام وبسرویس را ببینید؛ اگر خطای دسترسی بود، آدرس خروجی را بهدست آورید و ثبتش کنید.
سه چیز را به ترتیب ببینید: کد وضعیت و بدنه پاسخ درگاه، تطابق آدرس Main Server اعلامشده با آدرس خروجی واقعی سرور، و وضعیت پذیرنده در پنل سرویسدهنده. اگر پاسخ به آدرس سرور اشاره نمیکند، ریشه جای دیگری است.
متن این خطا در هر سرویس فرق دارد و در مستندات عمومی نیامده، پس معنایش را از همان سرویسدهنده بپرسید. آنچه مستند است، الزام اعلام آدرس Main Server در مستندات زرینپال است؛ اول همین تطابق را بررسی کنید.
از خود سرور، نه از پنل میزبانی و نه از ابزار جستوجوی دامنه. روی سرور یک درخواست به سرویسی بیرونی بزنید؛ آدرسی که برمیگرداند همان است که سرویسدهنده میبیند.
آدرس کارت شبکه خصوصی است و قابل ثبت نیست؛ آدرس عمومی خروجی را از ارائهدهنده بگیرید. اگر در بازه 100.64.0.0/10 بود، طبق RFC 6598 اشتراکی است و قابل اتکا نیست.
اگر آدرس سرور ثابت است، یک آدرس تک دقیقتر است. راهنمای GatewayAPI برای آدرسهای متغیر بازه CIDR را پیشنهاد میکند، به شرط شناختن بازه؛ بازه بزرگتر، فایده امنیتی کمتر.
اگر سرویس به سمت شما callback میفرستد، بله. مستندات Plivo آدرسهای NAT gateway خود را برای همین فهرست کرده است. اگر سرویسدهنده شما فهرستی منتشر نکرده، از پشتیبانی بخواهید و خودتان بازه نسازید.
اگر سرور IPv6 فعال دارد بله، چون ترتیب انتخاب آدرس در سیستمعامل معمولاً IPv6 را مقدم میداند. وگرنه خروجی برنامه را روی IPv4 قفل کنید.
نه. کنترل دسترسی روی آدرس مبدأ اتصال انجام میشود و RFC 7239 تصریح میکند هدرهایی مثل Forwarded قابل اعتماد نیستند.
جمعبندی؛ آدرس ثابت، مهاجرت آرام هر چه گفتیم روی یک جمله میچرخد: وایتلیست IP پنل پیامک آدرس مبدأ اتصال سرور شما را میسنجد. این آدرس همان چیزی نیست که روی کارت شبکه میبینید، پس اول آن را از بیرون ببینید و بعد ثبت کنید. جهت دوم ماجرا را هم فراموش نکنید؛ سرویسهایی که callback میفرستند فهرست آدرسهای خودشان را منتشر میکنند و آن فهرست تغییر میکند. درباره درگاه بانکی، تنها چیزی که مستندات رسمی میگوید الزام اعلام آدرس Main Server است؛ بقیه رفتارها را حدس نزنید و همان هفت پرسش را بپرسید. روز مهاجرت ترتیب را رعایت کنید: آدرس جدید را اضافه کنید، آزمایش بگیرید، ترافیک را ببرید و آدرس قدیمی را آخر از همه پاک کنید. اگر آدرس سرور اختصاصی و پایدار باشد، این مراحل یکبار انجام میشود و دفعه بعد فقط یک سطر به فهرست اضافه میکنید.
🚀 سرور با IP مستقیم برای سرویسهای حساس
اگر سرویس پیامک و پرداخت سایت شما به یک آدرس پایدار نیاز دارد، پلنهای سرور مجازی ایران وبداده با IP مستقیم و تغییر IP از پنل را ببینید. امکان تست ساعتی رایگان سرور هم وجود دارد.
اگر سوالی داشتید، در بخش نظرات با ما در ارتباط باشید.
منابع