−25%

روی پرداخت سالانه Windows، تا ۳۱ اکتبر. مشاهده پلن‌ها

EQVPS
شروع کنید

‏NAT یا IPv4 اختصاصی: یک پورت فوروارد‌شده چه کاری می‌تواند بکند و چه کاری نه

18 مهر 1405 · 6 دقیقه مطالعه · EQVPS Team

بیشتر آدم‌ها حدود ده دقیقه بعد از خرید می‌فهمند NAT یعنی چه. ‏Nginx بالا می‌آید، curl localhost صفحه را برمی‌گرداند، و مرورگر لپ‌تاپ فقط می‌چرخد. چیزی خراب نیست. فقط سرور نشانی IPv4 عمومیِ متعلق به خودش ندارد، و تنها در ورودی‌اش یک پورت است که برای SSH فوروارد شده.

همین یک در برای حجم شگفت‌انگیزی از کار کافی است، و برای بعضی کارهای خیلی رایج اصلاً کافی نیست. اگر هنوز بین دو نوع تعرفه مردد هستید، نوشتهٔ قدیمی‌تر ما IP اختصاصی یا VPS با NAT همان یک سؤالی را می‌پرسد که تکلیف را روشن می‌کند. این نوشته دربارهٔ زندگی با جواب است: سرور NAT در عمل چه کارهایی می‌کند، کجا به دیوار می‌خورد، و وقتی برایتان کوچک شد چطور بیرون بیایید.

واقعاً چه چیزی می‌گیرید

سرور NAT پشت درگاه ما یک نشانی خصوصی دارد. داشبورد یک میزبان و یک پورت شخصی نشان می‌دهد، و این‌طور وصل می‌شوید:

ssh -p 20123 root@host

این پورت به پورت 22 داخل سرور شما می‌رسد. همهٔ پورت‌های ورودی دیگر روی IPv4 از بیرون بسته‌اند و راهی برای فوروارد کردن پورت بیشتر وجود ندارد. سمت خروجی داستان دیگری است: سرور به هر جای اینترنت می‌رسد، جز پورت‌های SMTP یعنی 25 و 465 که روی همهٔ تعرفه‌ها بسته‌اند، چه NAT باشد چه نباشد. قواعد کامل در شبکه و پورت‌ها آمده است.

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

چه چیزهایی پشت یک پورت به‌خوبی اجرا می‌شوند

هر چیزی که خودش گفت‌وگو را شروع کند. این دسته از آنچه به نظر می‌رسد بزرگ‌تر است:

  • ربات‌هایی که polling می‌کنند. ربات Telegram با long polling، ربات Discord روی اتصال gateway، ربات معاملاتی که با API یک صرافی حرف می‌زند. همه خروجی‌اند.
  • ایجنت‌های هوش مصنوعی. ایجنتی که API مدل‌ها را صدا می‌زند، در وب می‌گردد، فایل می‌نویسد و کد اجرا می‌کند، لازم ندارد کسی صدایش بزند. به CPU، حافظه و یک اتصال رو به بیرون نیاز دارد.
  • کارگرها و اسکرپرها. هر چیزی که از صف کار برمی‌دارد، صفحه‌ها را می‌خزد یا طبق برنامه داده همگام می‌کند.
  • ماشین‌های build و runnerها. ‏runnerهای CI معمولاً خودشان در سرور ثبت می‌شوند و کار را می‌کشند، پس روی NAT راحت‌اند.

برای چنین باری، ارزان‌ترین تعرفه صادقانه کافی است. ‏Nano ماهانه 3 دلار است برای 2 vCPU، 1 GB رم و 15 GB دیسک؛ ‏Small هم 8 دلار برای 4 vCPU، 4 GB و 35 GB. فهرست کامل در صفحهٔ جداگانهٔ تعرفه‌های NAT است.

جایی که یک پورت کافی نیست

دیوار، هر چیزی است که در آن طرف دیگر باید اتصال را شروع کند.

سایت روشن‌ترین مثال است. مرورگرها به پورت 443 (و برای ریدایرکت به 80) وصل می‌شوند، و در تعرفهٔ NAT این پورت‌ها از بیرون اصلاً وجود ندارند. پورت غیراستاندارد هم کمکی نمی‌کند، دست‌کم نه به شکلی که بازدیدکننده‌ها بپذیرند.

دامنهٔ خودتان با HTTPS دو بار به همان دیوار می‌خورد. می‌توانید رکورد DNS را به نشانی درگاه اشاره بدهید، اما جز پورت SSH شما هیچ چیزی که آنجا می‌رسد به سرورتان فرستاده نمی‌شود. روش معمول گرفتن گواهی رایگان هم سرور را روی پورت 80 یا 443 بررسی می‌کند.

‏Webhookها بی‌صدا شکست می‌خورند. اعلان‌های پرداخت، پلتفرم ربات‌ها که به‌روزرسانی می‌فرستد، سرور Git که commit تازه را اعلام می‌کند: همه باید به شما برسند. رباتی که با long polling عالی کار می‌کرد، درست همان لحظه که آن را به webhook می‌برید از کار می‌افتد.

نقطه‌های پایانی VPN، سرورهای بازی و سرورهای ایمیل ذاتاً به پورت ورودی نیاز دارند. همین‌طور هر چیزی که بخواهید همکارتان در مرورگر باز کند.

راه‌حل‌های جایگزین، صادقانه

نشانی IPv6. سرورهای Linux تازه یک نشانی IPv6 عمومی می‌گیرند، و در تعرفه‌های NAT این نشانی مستقیم و روی هر پورتی به سرور می‌رسد. اگر همهٔ کلاینت‌های سرویس شما مال خودتان باشند (لپ‌تاپ، سرورهای دیگر، یک کاوشگر پایش با IPv6)، خوب کار می‌کند. برای سایت عمومی نه: بخشی از بازدیدکننده‌ها هنوز روی شبکه‌های بدون IPv6 هستند و هرگز صفحه را بار نمی‌کنند. تعرفه‌های Windows فعلاً فقط IPv4 دارند.

تونل. می‌توانید یک ایجنت کوچک اجرا کنید که اتصالی خروجی به یک رله در جای دیگر نگه دارد، و رله ترافیک عمومی را از تونل برگرداند. کار می‌کند و برای دمو یا داشبورد داخلی معقول است. اما برای هر چیز مهمی، یک طرف سوم را وسط هر درخواست گذاشته‌اید، به‌اضافهٔ یک قطعهٔ دیگر که ساعت سه بامداد ممکن است خراب شود.

تونل SSH برای خودتان. اگر پنل مدیریت فقط به کار خودتان می‌آید، اصلاً آن را بیرون نگذارید. از همان پورت SSH که دارید فوروارد کنید:

ssh -p 20123 -L 8080:localhost:8080 root@host

بعد http://localhost:8080 را روی دستگاه خودتان باز کنید. این دست‌کم‌گرفته‌ترین ترفند روی سرور NAT است و در هر حال امن‌تر از گذاشتن پنل روی اینترنت.

نظر صادقانهٔ من: IPv6 و تونل‌های SSH ابزارهای خوبی‌اند. اما سرویس عمومی دائمی‌ای که فقط چون سرور IPv4 ندارد از تونل رد می‌شود، معمولاً نشانهٔ این است که NAT برایتان کوچک شده.

رفتن به IPv4 اختصاصی بدون نصب دوباره

لازم نیست چیزی را از نو بسازید. سرور را در داشبورد باز کنید، «تغییر تعرفه» را بزنید و تعرفه‌ای با IP اختصاصی هم‌اندازه یا بزرگ‌تر انتخاب کنید. سرور یک بار ری‌استارت می‌شود و با IPv4 عمومی خودش، دیسکش و هر چیزی که نصب کرده بودید برمی‌گردد. پورت‌های 80، 443 و هر چیزی که در فایروال باز کنید از بیرون در دسترس می‌شوند، و SSH به پورت معمول 22 منتقل می‌شود. جزئیات در تغییر تعرفه آمده است.

چند نکته که خوب است پیش از کلیک بدانید:

  • مابه‌التفاوت نسبی باقی‌ماندهٔ دورهٔ فعلی را از موجودی‌تان می‌پردازید. ‏Nano-IP ماهانه 8 دلار است در برابر 3 دلار Nano؛ ‏Small-IP هم 16 دلار در برابر 8 دلار.
  • در محل سرور شما باید یک نشانی آزاد وجود داشته باشد. اگر الان نباشد، داشبورد پیش از هر کسر مبلغی خبرتان می‌کند.
  • اگر پیکربندی شبکه را داخل سرور دستی تغییر داده‌اید، بعد از ری‌استارت بررسی‌اش کنید. روی ایمیج استاندارد خودکار اعمال می‌شود.
  • اول نسخهٔ پشتیبان بگیرید. فقط یک ری‌استارت است، اما داده‌ها مال شماست.

جایی که NAT مناسب نیست، و جایی که IPv4 هم مناسب نیست

‏NAT برای هر چیز عمومی، هر چیزی که webhook می‌گیرد و هر چیزی که به نشانی ثابتی نیاز دارد که کسی آن را در فهرست مجاز بگذارد، انتخاب اشتباهی است. روزها را صرف دور زدنش نکنید. اختلاف قیمت Nano و Nano-IP ماهانه 5 دلار است.

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

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

سؤالات متداول

می‌توانم روی VPS با NAT سایت راه بیندازم؟

روی IPv4 نه. در تعرفهٔ NAT پورت‌های 80 و 443 از اینترنت در دسترس نیستند، پس مرورگرها نمی‌توانند از طریق IPv4 وصل شوند. سرورهای Linux روی NAT یک نشانی IPv6 عمومی می‌گیرند که روی هر پورتی اتصال می‌پذیرد، اما سایتی که فقط با IPv6 در دسترس باشد برای بازدیدکنندگانی که شبکه‌شان IPv6 ندارد دیده نمی‌شود. برای یک سایت واقعی، تعرفه‌ای با IPv4 اختصاصی بگیرید.

می‌توانم در تعرفهٔ NAT پورت فوروارد‌شدهٔ بیشتری بگیرم؟

نه. سرور NAT یک پورت شخصی برای SSH دارد (روی Windows برای RDP). اگر پورت ورودی بیشتری لازم دارید، تعرفه‌های IP اختصاصی دقیقاً برای همین هستند.

ربات Telegram یا Discord روی NAT کار می‌کند؟

بله، تا وقتی خود ربات به بیرون وصل شود. ‏long polling و اتصال‌های gateway خروجی‌اند، پس کار می‌کنند. ‏webhook لازم دارد که پلتفرم به سرور شما برسد، و NAT این را روی IPv4 اجازه نمی‌دهد.

برای رفتن از NAT به IP اختصاصی باید سرور را دوباره نصب کنم؟

نه. در داشبورد «تغییر تعرفه» را بزنید و تعرفه‌ای با IP اختصاصی هم‌اندازه یا بزرگ‌تر انتخاب کنید. سرور یک بار ری‌استارت می‌شود، دیسک و نرم‌افزارهایش می‌مانند، و شما فقط مابه‌التفاوت نسبی باقی‌ماندهٔ دوره را می‌پردازید.

نشانی IP خروجی سرور NAT مال من است؟

نه. در NAT نشانی خروجی متعلق به خود شما نیست، پس نمی‌توانید اعتبار فرستندهٔ خودتان را روی آن بسازید یا برایش DNS معکوس تنظیم کنید. اگر یک API، یک شریک یا یک سرور ایمیل باید به نشانی ثابتی اعتماد کند، تعرفه‌ای با IPv4 اختصاصی انتخاب کنید.

نظرات

هنوز نظری نیست. اولین نفر باشید.

یک نظر بگذارید

نظرات پیش از نمایش بررسی می‌شوند.