موضوع مقاله: پورت فورواردینگ | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # پورت فورواردینگ | مقدمه: این کار از طریق نگاشت مجدد آدرس IP مقصد و شماره پورت ارتباطی به یک میزبان داخلی انجام می‌شود. | ## بخش 1: پورت فورواردینگ | اهداف و کاربردها پورت فورواردینگ اتصال رایانه‌های از راه دور (به عنوان مثال، میزبان‌های اینترنتی) را به یک رایانه یا سرویس خاص در یک شبکه محلی (LAN) تسهیل می‌کند. میزبان‌ها در شبکه خصوصی به یک سوئیچ اترنت متصل هستند یا از طریق یک شبکه محلی بی‌سیم (WLAN) ارتباط برقرار می‌کنند. از سوی دیگر، رایانه‌های پشت روتر برای میزبان‌های اینترنت نامرئی هستند، زیرا هر کدام تنها با یک آدرس IP خصوصی ارتباط برقرار می‌کنند. هنگام پیکربندی پورت فورواردینگ، مدیر شبکه یک شماره پورت را روی دروازه برای استفاده اختصاصی جهت ارتباط با سرویسی در شبکه خصوصی (که روی یک میزبان خاص قرار دارد) کنار می‌گذارد. میزبان‌های خارجی برای ارتباط با سرویس داخلی شبکه باید این شماره پورت و آدرس دروازه را بدانند. اغلب، شماره پورت‌های سرویس‌های شناخته‌شده اینترنت، مانند پورت ۸۰ برای سرویس‌های وب (HTTP)، در پورت فورواردینگ استفاده می‌شود تا سرویس‌های رایج اینترنتی بتوانند روی میزبان‌های درون شبکه‌های خصوصی پیاده‌سازی شوند کاربردهای رایج پورت فورواردینگ عبارتند از: اجرای یک سرور عمومی HTTP در یک LAN خصوصی. هنگام استفاده در دستگاه‌های دروازه، پورت فورواردینگ می‌تواند با یک قانون واحد برای ترجمه آدرس و پورت مقصد پیاده‌سازی شود (در هسته‌های لینوکس، این یک قانون DNAT است). هنگامی که پورت فورواردینگ روی ماشین‌هایی استفاده می‌شود که دروازه پیش‌فرض (Default gateway) شبکه نیستند، آدرس مبدا باید به آدرس ماشین ترجمه‌کننده تغییر یابد، در غیر این صورت بسته‌ها از مترجم عبور نکرده و اتصال با شکست مواجه می‌شود. زمانی که پورت فورواردینگ توسط یک فرآیند پروکسی (مانند فایروال‌های لایه کاربرد، فایروال‌های مبتنی بر SOCKS یا از طریق پروکسی‌های مدار TCP) پیاده‌سازی می‌شود، هیچ بسته‌ای در واقع ترجمه نمی‌شود، بلکه فقط داده‌ها پروکسی می‌شوند. این امر معمولاً منجر به تغییر آدرس مبدا (و شماره پورت) به آدرس ماشین پروکسی می‌شود. معمولاً در یک زمان مشخص، تنها یکی از میزبان‌های خصوصی می‌تواند از یک پورت فوروارد شده خاص استفاده کند، اما گاهی پیکربندی برای تمایز دسترسی بر اساس آدرس مبدا میزبان اولیه امکان‌پذیر است. سیستم‌عامل‌های شبه‌یونیکس (Unix-like) گاهی از پورت فورواردینگ در مواردی استفاده می‌کنند که شماره پورت‌های کوچکتر از ۱۰۲۴ تنها توسط نرم‌افزارهای در حال اجرا با دسترسی کاربر ریشه (Root) ایجاد می‌شوند. اجرا با امتیازات سوپریوزر (به منظور بایند شدن به پورت) ممکن است یک خطر امنیتی برای میزبان باشد، بنابراین از پورت فورواردینگ برای هدایت یک پورت با شماره پایین به پورت دیگری با شماره بالا استفاده می‌شود تا نرم‌افزار کاربردی بتواند به عنوان یک کاربر معمولی سیستم‌عامل با امتیازات کاهش‌یافته اجرا شود. پروتکل جهانی دوشاخه و بازی (UPnP) قابلیتی را برای نصب خودکار نمونه‌های پورت فورواردینگ در دروازه‌های اینترنت خانگی ارائه می‌دهد. | ## بخش 2: پورت فورواردینگ | UPnP پروتکل دستگاه دروازه اینترنت (IGD) را تعریف می‌کند که یک سرویس شبکه است و از طریق آن، یک دروازه اینترنت حضور خود را در یک شبکه خصوصی از طریق پروتکل کشف سرویس ساده (SSDP) اعلام می‌کند. برنامه‌ای که یک سرویس مبتنی بر اینترنت را ارائه می‌دهد، می‌تواند چنین دروازه‌هایی را کشف کرده و از پروتکل UPnP IGD برای رزرو شماره پورت روی دروازه استفاده کند و باعث شود دروازه بسته‌ها را به سوکت شنود آن هدایت کند. این روش برای این استفاده می‌شود که به کاربر اجازه دهد از رایانه محلی به سرور دیگری متصل شود، یعنی داده‌ها را به طور ایمن از یک برنامه کلاینت دیگر که روی همان رایانه به عنوان کلاینت پوسته امن (SSH) اجرا می‌شود، فوروارد کند. با استفاده از پورت فورواردینگ محلی، می‌توان فایروال‌هایی را که صفحات وب خاصی را مسدود می‌کنند، دور زد. اتصالات از یک کلاینت SSH، از طریق یک سرور SSH به سرور مقصد مورد نظر هدایت می‌شوند. سرور SSH پیکربندی شده است تا داده‌ها را از یک پورت مشخص (که برای میزبانی که کلاینت SSH را اجرا می‌کند، محلی است) از طریق یک تونل امن به یک میزبان و پورت مقصد مشخص هدایت کند. پورت محلی روی همان رایانه کلاینت SSH قرار دارد و این پورت همان «پورت فوروارد شده» است. روی همان رایانه، هر کلاینتی که می‌خواهد به همان میزبان و پورت مقصد متصل شود، می‌تواند طوری پیکربندی شود که به پورت فوروارد شده متصل گردد. پس از برقراری این اتصال، کلاینت SSH به پورت فوروارد شده گوش می‌دهد و تمام داده‌های ارسال شده توسط برنامه‌ها به آن پورت را از طریق یک تونل امن به سرور SSH هدایت می‌کند. سرور داده‌ها را رمزگشایی کرده و سپس آن‌ها را به میزبان و پورت مقصد هدایت می‌نماید. برخی از کاربردهای پورت فورواردینگ محلی عبارتند از: استفاده از پورت فورواردینگ محلی برای دریافت ایمیل اتصال از یک لپ‌تاپ به یک وب‌سایت با استفاده از تونل SSH پورت فورواردینگ از راه دور این شکل از پورت فورواردینگ، برنامه‌های سمت سرور یک اتصال پوسته امن (SSH) را قادر می‌سازد تا به سرویس‌های موجود در سمت کلاینت SSH دسترسی داشته باشند. علاوه بر SSH، طرح‌های تونل‌زنی اختصاصی دیگری نیز وجود دارند که از پورت فورواردینگ از راه دور برای همان هدف عمومی استفاده می‌کنند. به عبارت دیگر، پورت فورواردینگ از راه دور به کاربران اجازه می‌دهد تا از سمت سرور یک تونل، به یک سرویس شبکه از راه دور واقع در سمت کلاینت تونل متصل شوند. برای استفاده از پورت فورواردینگ از راه دور، باید آدرس سرور مقصد (در سمت کلاینت تونل) و دو شماره پورت شناخته شده باشند. | ## بخش 3: پورت فورواردینگ | شماره پورت‌های انتخاب شده به این بستگی دارد که کدام برنامه قرار است استفاده شود. پورت فورواردینگ از راه دور به رایانه‌های دیگر اجازه می‌دهد تا به برنامه‌های میزبانی شده روی سرورهای از راه دور دسترسی داشته باشند. دو نمونه از کاربردهای آن: کارمند یک شرکت، یک سرور FTP را در خانه خود میزبانی می‌کند و می‌خواهد دسترسی به سرویس FTP را به کارمندانی که از رایانه‌های محل کار استفاده می‌کنند، بدهد. برای انجام این کار، کارمند می‌تواند پورت فورواردینگ از راه دور را از طریق SSH روی رایانه‌های داخلی شرکت با گنجاندن آدرس سرور FTP خود و استفاده از شماره پورت‌های صحیح برای FTP (پورت استاندارد FTP پورت TCP/21 است) راه‌اندازی کند. باز کردن جلسات ریموت دسکتاپ (دسترسی به دسکتاپ از راه دور) یکی از کاربردهای رایج پورت فورواردینگ از راه دور است. از طریق SSH، این کار با باز کردن پورت محاسباتی شبکه مجازی (5900) و گنجاندن آدرس رایانه مقصد امکان‌پذیر است. به زبان ساده، وقتی لپ‌تاپ شما به این روش به یک ماشین از راه دور متصل می‌شود، تماس‌های ورودی به آی‌پی آن ماشین از راه دور به لپ‌تاپ شما منتقل می‌شوند و پاسخ نیز به آن بازگردانده می‌شود. هدف این است که کلاینت‌ها بتوانند به طور ایمن به یک سرور قابل اعتماد که به عنوان یک واسطه عمل می‌کند، به منظور ارسال یا دریافت داده‌ها به یک یا چند سرور مقصد متصل شوند. پورت فورواردینگ پویا می‌تواند با راه‌اندازی یک برنامه محلی، مانند SSH، به عنوان یک سرور پروکسی SOCKS پیاده‌سازی شود که می‌تواند برای پردازش انتقال داده‌ها در شبکه یا اینترنت استفاده شود. برنامه‌ها، مانند مرورگرهای وب، باید به طور جداگانه پیکربندی شوند تا ترافیک را از طریق پروکسی هدایت کنند؛ پروکسی‌ای که به عنوان یک تونل ایمن به سرور دیگری عمل می‌کند. هنگامی که دیگر به پروکسی نیازی نباشد، برنامه‌ها باید دوباره به تنظیمات اصلی خود بازگردانده شوند. پس از برقراری اتصال، از DPF می‌توان برای ایجاد امنیت اضافی برای کاربری که به یک شبکه غیرقابل اعتماد متصل است استفاده کرد. پورت فورواردینگ پویا ابزار قدرتمندی با کاربردهای فراوان است؛ به عنوان مثال، کاربری که از طریق یک کافی‌شاپ، هتل یا شبکه با امنیت پایین به اینترنت متصل است، ممکن است مایل باشد از DPF به عنوان راهی برای محافظت از داده‌های خود استفاده کند. همچنین می‌توان از DPF برای دور زدن فایروال‌هایی استفاده کرد که دسترسی به وب‌سایت‌های خارجی را محدود می‌کنند، مانند فایروال‌های موجود در شبکه‌های شرکتی و سازمانی. | ## جمع‌بندی | کد منبع هدایت‌کننده ساده TCP در سی‌شارپ – کد منبع به زبان #C جهت توضیح و اثبات مفهوم هدایت ترافیک TCP.