پیشنویس:پورت حمل و نقل
این مقاله در حال ترجمه از ویکی اینگیلیسی است.
در شبکه های کامپیوتری ، انتقال پورت یا نگاشت پورت ، برنامه ای از برگردان نشانی شبکه (NAT) است که ترکیب درخواست ارتباط را از یک آدرس و شماره پورت به دیگری هدایت می کند، در حالی که بسته ها در حال عبور از دروازه شبکه، مانند روتر یا فایروال هستند. این تکنیک معمولاً برای در دسترس قرار دادن خدمات روی یک میزبان مستقر در یک شبکه محافظت شده یا پنهان شده (شبکه داخلی) برای میزبان ها در طرف مقابل دروازه (شبکه خارجی)، با نگاشت مجدد آدرس IP مقصد و شماره پورت یک میزبان داخلی ارتباط استفاده می شود. [۱] [۲]
اهداف
[ویرایش]در یک شبکه محلی معمولی، گره ها از طریق یک DSL یا مودم کابلی که به روتر یا مترجم آدرس شبکه (NAT/NAPT) متصل است، به اینترنت دسترسی پیدا می کنند. میزبان ها در شبکه خصوصی به یک سوئیچ اترنت متصل می شوند یا از طریق یک شبکه محلی بی سیم ارتباط برقرار می کنند. رابط خارجی دستگاه NAT با یک آدرس IP عمومی پیکربندی شده است. از سوی دیگر، رایانههای پشت روتر برای میزبانهای اینترنت نامرئی هستند، زیرا هر یک فقط با یک آدرس IP خصوصی ارتباط برقرار میکنند.
در هنگام پیکربندی انتقال پورت، مدیر شبکه یک شماره پورت را برای استفاده انحصاری در ارتباط با یک سرویس در شبکه خصوصی که در یک میزبان خاص واقع شده است، در گیتوی تعیین میکند. میزبانهای خارجی باید این شماره پورت و آدرس گیتوی را بدانند تا بتوانند با سرویس داخلی شبکه ارتباط برقرار کنند. اغلب، شمارههای پورت سرویسهای اینترنتی معروف مانند شماره پورت ۸۰ برای سرویسهای وب (HTTP) در انتقال پورت استفاده میشود، تا سرویسهای متداول اینترنتی بتوانند در میزبانهای داخلی شبکه پیادهسازی شوند.
بعضی از کاربردهای معمول شامل موارد زیر میشوند
- اجرای یک سرور HTTP عمومی درون یک شبکه محلی خصوصی (LAN)
- اجازه دسترسی به پروتکل پوسته ایمن (Secure Shell) به یک میزبان در شبکه محلی خصوصی از طریق اینترنت
- اجازه دسترسی FTP به یک میزبان در شبکه محلی خصوصی از اینترنت
- اجرای یک سرور بازی عمومی درون یک شبکه محلی خصوصی
مدیران شبکه انتقال پورت را در دروازه سیستم عامل پیکربندی می کنند. در هسته های لینوکس ، این کار با استفاده از قوانین فیلتر بسته در iptables یا netfilter انجام می شود. سیستمعاملهای BSD و macOS قبل از Yosemite (OS 10.10.X) این کار را با استفاده از ماژول Ipfirewall (ipfw) انجام می دهند. در حالی که سیستمهای عامل macOS از یوزمایت به بعد این کار را با استفاده از ماژول Packet Filter (pf) انجام میدهند.
وقتی از انتقال پورت بر روی دستگاههای دروازه استفاده میشود، ممکن است با یک قانون تنها برای ترجمه آدرس و پورت مقصد پیادهسازی شود. (در هستههای لینوکس، این کار با قانون DNAT انجام میشود). در این حالت، آدرس و پورت مبدأ بدون تغییر باقی میمانند. وقتی بر روی دستگاههایی استفاده میشود که دروازه پیشفرض شبکه نیستند، آدرس مبدأ باید به آدرس دستگاه ترجمهکننده تغییر یابد، در غیر این صورت بستهها از طریق ترجمهکننده عبور میکنند و اتصال قطع میشود.
وقتی یک انتقال پورت توسط یک فرآیند پروکسی (مانند فایروالهای لایه برنامه، فایروالهای مبتنی بر SOCKS، یا از طریق پروکسیهای مدار TCP) پیادهسازی میشود، هیچ بستهای در واقع ترجمه نمیشود، فقط دادهها ارسال میشوند. این معمولاً منجر به تغییر آدرس مبدأ (و شماره پورت) به آدرس دستگاه پروکسی میشود.
معمولاً تنها یکی از میزبانهای خصوصی میتواند در یک زمان از یک پورت انتقالی خاص استفاده کند، اما در برخی موارد، پیکربندی امکانپذیر است تا دسترسی با آدرس مبدأ میزبان اصلی تفاوت گذاری شود.
سیستمهای عامل شبیه به Unix گاهی اوقات از انتقال پورت استفاده میکنند که در آن شمارههای پورت کوچکتر از ۱۰۲۴ فقط توسط نرمافزارهایی که به عنوان کاربر root در حال اجرا هستند، ایجاد میشوند. اجرای برنامه با امتیازات کاربر فوقالعاده (برای متصل کردن پورت) ممکن است یک ریسک امنیتی برای میزبان باشد، بنابراین از انتقال پورت برای هدایت یک پورت با شماره پایین به یک پورت با شماره بالا استفاده میشود، به طوری که نرمافزار برنامه به عنوان یک کاربر عمومی سیستم عامل با امتیازات کمتر اجرا شود.
پروتکل Universal Plug and Play (UPnP) ویژگیای را فراهم میکند که به صورت خودکار نمونههای انتقال پورت را در دروازههای اینترنتی محلی نصب میکند. UPnP پروتکل دستگاه دروازه اینترنتی (IGD) را تعریف میکند که یکی از خدمات شبکه است که در آن یک دروازه اینترنتی حضور خود را در یک شبکه خصوصی از طریق پروتکل Simple Service Discovery Protocol (SSDP) اعلام میکند. یک برنامه که خدمت مبتنی بر اینترنت را ارائه میدهد، ممکن است چنین دروازههایی را کشف کرده و از پروتکل UPnP IGD استفاده کند تا یک شماره پورت را در دروازه رزرو کند و باعث انتقال بستهها به سوکت گوش دهنده خود شود.
انواع
[ویرایش]انتقال پورت ممکن است بر اساس انواع خاص زیر تفکیک شود: انتقال پورت محلی (local)، انتقال پورت از راه دور (remote)، و انتقال پورت پویا (dynamic).
اتقال پورت محلی
[ویرایش]انتقال پورت محلی (local port forwarding) پرکاربردترین نوع انتقال پورت است. از آن برای این استفاده میشود که یک کاربر از رایانه محلی به سروری دیگر متصل شود، به عبارت دیگر، دادهها را به صورت امن از یک برنامه مشتری دیگری که بر روی همان رایانه اجرا میشود به جلو منتقل کند، مانند یک مشتری پیوسته ایمن (SSH). با استفاده از انتقال پورت محلی، میتوان از طریق فایروالهایی که برخی از صفحات وب را مسدود میکنند، عبور کرد.
اتصالات از یک مشتری SSH، از طریق یک سرور SSH، به سرور مقصد مورد نظر انتقال داده میشوند. سرور SSH به گونهای پیکربندی شده است که دادهها را از یک پورت مشخص (که محلی برای میزبانی است که مشتری SSH را اجرا میکند) از طریق یک تونل امن به یک میزبان و پورت مشخص میفرستد. پورت محلی بر روی همان رایانهای است که مشتری SSH در آن اجرا میشود، و این پورت پورت "انتقال شده" است. در همان رایانه، هر مشتری که میخواهد به همان میزبان و پورت مقصد متصل شود، میتواند پیکربندی شود تا به جای مستقیم به میزبان و پورت مقصد، به پورت انتقال شده متصل شود. پس از ایجاد این اتصال، مشتری SSH بر روی پورت انتقال شده گوش میدهد و تمام دادههای ارسالی توسط برنامهها را به آن پورت، از طریق یک تونل امن به سمت سرور SSH ارسال میکند. سرور دادهها را رمزگشایی کرده و سپس آنها را به میزبان و پورت مقصد هدایت میکند.
برخی استفادههای از انتقال پورت محلی:
- استفاده از انتقال پورت محلی برای دریافت ایمیل
- اتصال از یک لپ تاپ به یک وب سایت با استفاده از یک تونل SSH.
انتقال پورت از راه دور
[ویرایش]این نوع انتقال پورت، برنامههای موجود در سمت سرور اتصال امن (SSH) را قادر میسازد تا به خدماتی که در سمت مشتری اتصال SSH واقع شدهاند، دسترسی داشته باشند. علاوه بر SSH، روشهای تونلی خصوصی وجود دارند که از انتقال پورت از راه دور برای همان هدف عمومی استفاده میکنند. به عبارت دیگر، انتقال پورت از راه دور به کاربران اجازه میدهد تا از سمت سرور یک تونل، SSH یا دیگری، به یک سرویس شبکه از راه دور که در سمت مشتری تونل قرار دارد، متصل شوند.
برای استفاده از انتقال پورت از راه دور، باید آدرس سرور مقصد (در سمت مشتری تونل) و دو شماره پورت مشخص باشد. شماره پورتهای انتخاب شده وابسته به برنامهای است که میخواهید استفاده کنید.
انتقال پورت از راه دور به سایر کامپیوترها امکان دسترسی به برنامههای میزبان شده در سرورهای از راه دور را میدهد. دو مثال:
- یک کارمند شرکت یک سرور FTP را در خانهاش میزبانی میکند و میخواهد دسترسی به خدمات FTP را به کارمندانی که از کامپیوترهای محل کار استفاده میکنند، بدهد. برای این کار، یک کارمند میتواند از طریق SSH انتقال پورت از راه دور را در کامپیوترهای داخلی شرکت تنظیم کند و آدرس سرور FTP خود را اضافه کند و از شماره پورتهای مناسب برای FTP استفاده کند (پورت استاندارد FTP TCP/21 است).
- باز کردن جلسات ریموت دسکتاپ یک استفاده متداول از انتقال پورت از راه دور است. از طریق SSH، این میتواند با باز کردن پورت شبکه مجازی کامپیوتر (5900) و اضافه کردن آدرس کامپیوتر مقصد انجام شود.
انتقال پورت پویا
[ویرایش]انتقال پورت پویا (Dynamic Port Forwarding یا DPF) یک روش بر اساس درخواست برای عبور از یک دیوار آتشه یا NAT استفاده از شکافهای دیوار آتش است. هدف این است که به مشتریان امکان دهد به طور امن به یک سرور اعتمادپذیر متصل شوند که به عنوان میانجی برای ارسال/دریافت داده به یک یا چند سرور مقصد عمل میکند.
DPF را می توان با راه اندازی یک برنامه محلی مانند SSH به عنوان یک سرور پراکسی SOCKS پیاده سازی کرد که می تواند برای پردازش انتقال داده ها از طریق شبکه یا از طریق اینترنت استفاده شود. برنامه هایی مانند مرورگرهای وب باید به صورت جداگانه پیکربندی شوند تا ترافیک را از طریق پروکسی هدایت کنند، که به عنوان یک تونل امن به سرور دیگری عمل می کند. هنگامی که پروکسی دیگر مورد نیاز نیست، برنامه ها باید دوباره به تنظیمات اصلی خود پیکربندی شوند. به دلیل الزامات دستی DPF، اغلب از آن استفاده نمی شود. [۳]
پس از برقراری اتصال، DPF میتواند برای ارائه امنیت اضافی به کاربر متصل به یک شبکه غیرقابل اعتماد استفاده شود. از آنجا که دادهها باید از طریق تونل امن به یک سرور دیگر عبور کنند، پیکربندی اولیه کاربر از مهاجمان پاکتی که ممکن است در شبکه محلی رخ دهد، محافظت میکند.
DPF ابزاری قدرتمند با کاربردهای متعدد است؛ به عنوان مثال، یک کاربر که از اینترنت از طریق یک کافی شاپ، هتل، یا شبکه کماعتماد دیگر متصل است ممکن است بخواهد از DPF به عنوان یک راه برای حفاظت از دادهها استفاده کند. DPF همچنین میتواند برای عبور از دیوارههای آتشی که دسترسی به وبسایتهای خارجی را محدود میکنند، مانند در شبکههای شرکتی، استفاده شود.
همچنین ببینید
[ویرایش]- Port Control Protocol (PCP)
- NAT Port Mapping Protocol (NAT-PMP)
- Firewall pinhole
- NAT traversal
- Packet forwarding
- Port address translation (PAT)
- Port triggering
- UDP Helper Address
منابع
[ویرایش]- ↑ "Definition of: port forwarding". PC Magazine. Archived from the original on 2012-06-03. Retrieved 2008-10-11.
- ↑ Rory Krause. "Using ssh Port Forwarding to Print at Remote Locations". Linux Journal. Retrieved 2008-10-11.
- ↑ "SSH/OpenSSH/PortForwarding - Community Ubuntu Documentation". Help.ubuntu.com. 2013-12-13. Retrieved 2014-01-30.
پیوند به بیرون
[ویرایش]- Alan Stafford. "Warp Speed Web Access: Sharing the Bandwidth". PC World. Archived from the original on 2008-03-18. Retrieved 2008-10-11.
- Using UPnP for Programmatic Port Forwardings and NAT Traversal – Free software which uses UPnP and the Internet Gateway Device Protocol (IGD) to automate port forwarding
- TCP forwarding source code in C# – Source code in C# explaining/PoC TCP forwarding.
- Open.NAT – Lightweight and easy-to-use .NET class library to allow port forwarding in NAT devices that support UPNP and PMP.
- Port Checker Port Forwarding Testing Tool