آموزش پورت فورواردینگ (Port Forward) در لینوکس، نحوه ایجاد SSH Tunnel در لینوکس
اگر به عنوان یک کاربر لینوکس به امنیت شبکه و مدیریت ترافیک ورودی و خروجی توجه دارید، احتمالاً با مفهومی به نام پورت فورواردینگ آشنا هستید. این تکنیک بسیار مفید به شما این امکان را می دهد که ترافیک ورودی به یک پورت خاص در سیستم خود را به مقصد دیگری هدایت کنید. این فرآیند در شبکه های مختلف می تواند کاربردهای زیادی داشته باشد؛ از ایجاد تونل های امن برای انتقال داده ها تا دسترسی به منابع در شبکه های محدود.
در این مقاله، قصد داریم به آموزش جامع و کاربردی پورت فورواردینگ در لینوکس بپردازیم و نحوه ی ایجاد SSH Tunnel در لینوکس را بررسی کنیم. اگر شما هم علاقه مند به این هستید که شبکه ی خود را امن تر کنید یا به منابع محدود دسترسی داشته باشید، با این مقاله همراه باشید. همچنین برای آشنایی بیشتر با موارد مرتبط، پیشنهاد می کنیم مقاله دیگری را در زمینه نحوه پارتیشن بندی لینوکس مطالعه کنید.
انواع پورت فورواردینگ در لینوکس
پورت فورواردینگ در لینوکس به سه روش اصلی پیاده سازی می شود که هر کدام کاربرد خاص خود را دارند. این سه نوع عبارتند از: پورت فورواردینگ محلی (Local Port Forwarding)، پورت فورواردینگ از راه دور (Remote Port Forwarding) و پورت فورواردینگ پویا (Dynamic Port Forwarding). در ادامه به بررسی جزئیات هر یک از این روش ها خواهیم پرداخت.
پورت فورواردینگ محلی (Local Port Forwarding)
پورت فورواردینگ محلی یکی از انواع رایج است که به شما این امکان را می دهد که ترافیک ورودی به یک پورت خاص در دستگاه محلی خود را به مقصدی دیگر در شبکه هدایت کنید. برای مثال، فرض کنید که می خواهید ترافیک ورودی به پورت 8080 سیستم خود را به یک سرور داخلی هدایت کنید که از طریق شبکه قابل دسترس است.
برای راه اندازی پورت فورواردینگ محلی در لینوکس، از دستور زیر استفاده می کنید:
ssh -L [Local Port]:[Remote Host]:[Remote Port] [User]@[Remote Server]
پورت فورواردینگ از راه دور (Remote Port Forwarding)
پورت فورواردینگ از راه دور به شما این امکان را می دهد که ترافیک واردشده به یک پورت خاص روی سرور از راه دور را به سیستم محلی خود هدایت کنید. این روش زمانی کاربرد دارد که بخواهید به منابع موجود در شبکه محلی دسترسی داشته باشید و آن ها را از طریق سرور از راه دور در دسترس قرار دهید.
برای استفاده از پورت فورواردینگ از راه دور، دستور زیر را وارد کنید:
ssh -R [Remote Port]:[Local Host]:[Local Port] [User]@[Remote Server]
پورت فورواردینگ پویا (Dynamic Port Forwarding)
پورت فورواردینگ پویا معمولاً برای انتقال ترافیک از طریق پروکسی SOCKS به کار می رود. این روش به شما این امکان را می دهد که ترافیک های مختلف را به صورت امن از طریق یک تونل SSH ارسال کنید.
برای راه اندازی پورت فورواردینگ پویا، از دستور زیر استفاده کنید:
ssh -D [Local Port] [User]@[Remote Server]
پورت فورواردینگ یکی از قابلیت های کلیدی در شبکه های لینوکسی است که به شما این امکان را می دهد که ترافیک ورودی به سیستم خود را به طور بهینه مسیریابی کنید.
ارتباط بین پورت فورواردینگ و SSH Tunneling
پورت فورواردینگ معمولاً همراه با SSH Tunneling به کار می رود تا انتقال داده ها به صورت ایمن از یک شبکه به شبکه ی دیگر انجام شود. SSH، که مخفف Secure Shell است، یک پروتکل شبکه ای امن برای برقراری ارتباطات رمزگذاری شده است. زمانی که از پورت فورواردینگ در کنار SSH استفاده می کنید، می توانید از طریق یک تونل امن داده ها را منتقل کنید.
SSH Tunneling، همانطور که از نامش پیداست، به شما این امکان را می دهد که داده ها را از طریق یک تونل رمزگذاری شده به مقصد مورد نظر منتقل کنید. به این ترتیب حتی در شبکه های غیر ایمن نیز می توانید ارتباطات خود را از دسترسی های غیرمجاز محافظت کنید. برای یادگیری بیشتر در خصوص این موضوع، می توانید مقاله نصب برنامه روی لینوکس را مطالعه کنید که نحوه ی راه اندازی ابزارهای مورد نیاز را برای شما شرح می دهد.
پیش نیازهای ایجاد SSH Tunneling در لینوکس
قبل از شروع به ایجاد تونل SSH، باید از چند پیش نیاز مطمئن شوید:
- نصب SSH Client: برای استفاده از SSH و پورت فورواردینگ، باید SSH Client را بر روی سیستم خود نصب کنید. خوشبختانه، در بیشتر توزیع های لینوکس این ابزار به صورت پیش فرض نصب است و نیازی به نصب جداگانه ندارد.
- دسترسی به سرور SSH: برای راه اندازی تونل SSH، باید به یک سرور که سرویس SSH بر روی آن فعال است، دسترسی داشته باشید.
- پیکربندی فایروال و پورت ها: توجه کنید که فایروال شما اجازه دسترسی به پورت های لازم برای پورت فورواردینگ را بدهد. این پورت ها باید به طور خاص باز و آماده ی استفاده باشند.
ایجاد SSH Tunneling در لینوکس به شکل محلی، ریموت و داینامیک
در این قسمت، به بررسی انواع پورت فورواردینگ در لینوکس خواهیم پرداخت و نحوه ایجاد هر یک از آن ها را به طور دقیق بررسی خواهیم کرد.
1. Local SSH Port Forwarding (پورت فورواردینگ محلی SSH)
فرض کنید به دلیل محدودیت های فایروال یا دلایل دیگر، نمی توانید به اپلیکیشنی که روی پورت ۳۰۰۰ سرور ریموت اجرا می شود دسترسی پیدا کنید. در این حالت، شما می توانید یک تونل SSH ایجاد کنید که به شما اجازه دهد از طریق پورت محلی خود (مثلاً پورت ۸۰۸۰) به اپلیکیشن موجود در پورت ۳۰۰۰ دسترسی پیدا کنید.
برای ایجاد این تونل، دستور زیر را اجرا کنید:
ssh admin@server1.example.com -L 8080:server1.example.com:3000
در اینجا:
- admin@server1.example.com نام کاربری و آدرس سرور ریموت است.
- آپشن -L نشان دهنده پورت فورواردینگ محلی است.
- 8080 پورت محلی شماست که به پورت ۳۰۰۰ سرور ریموت متصل خواهد شد.
- server1.example.com:3000 آدرس و پورت سرور ریموت است که قصد دارید ترافیک به آن هدایت شود.
حالا می توانید مرورگر خود را باز کرده و به آدرس localhost:8080 یا IP-Address:8080 بروید. ترافیک شما از طریق تونل SSH به پورت ۳۰۰۰ سرور ریموت هدایت خواهد شد و شما می توانید به اپلیکیشن دسترسی پیدا کنید.
2. Remote SSH Port Forwarding (پورت فورواردینگ ریموت SSH)
برای راه اندازی Remote SSH Tunnel، باید ابتدا در فایل پیکربندی سرور ریموت این قابلیت را فعال کنید. به طور پیش فرض، SSH اجازه نمی دهد که پورت ها از سرور ریموت به سیستم محلی فوروارد شوند. برای فعال سازی این قابلیت، باید به فایل /etc/ssh/sshd_config/ دسترسی داشته باشید و مقدار GatewayPorts را به yes تغییر دهید.
برای انجام این کار، دستورالعمل زیر را دنبال کنید:
با ویرایشگر دلخواه خود فایل پیکربندی sshd_config را باز کنید:
sudo vim /etc/ssh/sshd_config
- با ویرایشگر دلخواه خود فایل پیکربندی sshd_config را باز کنید
- به دنبال خط GatewayPorts بگردید و آن را به yes تغییر دهید.
فایل را ذخیره کرده و سرور SSH را ریستارت کنید:
sudo systemctl restart sshd
- حالا برای ایجاد یک تونل SSH از نوع ریموت که به همکار شما امکان دسترسی به اپلیکیشن شما را از طریق پورت ۵۰۰۰ سرور ریموت می دهد، دستور زیر را اجرا کنید:
ssh admin@server1.example.com -R 5000:localhost:3000
در اینجا:
- -R برای فوروارد کردن پورت ریموت است.
- 5000 پورت سرور ریموت است که به پورت ۳۰۰۰ سیستم محلی شما متصل می شود.
- localhost:3000 آدرس و پورت سیستم محلی شما است.
با این کار، همکار شما می تواند با مراجعه به آدرس http://server1.example.com:5000 به اپلیکیشن شما که در پورت ۳۰۰۰ سیستم محلی در حال اجرا است دسترسی پیدا کند.
3. Dynamic SSH Port Forwarding (پورت فورواردینگ داینامیک SSH)
اگر می خواهید تمام ترافیک اینترنت خود را از طریق سرور ریموت عبور دهید، می توانید از SOCKS Proxy استفاده کنید. این کار به شما این امکان را می دهد که مرورگر خود را به گونه ای تنظیم کنید که ترافیکش از طریق سرور ریموت هدایت شود.
برای راه اندازی یک پراکسی SOCKS در پورت ۱۰۸۰، دستور زیر را اجرا کنید:
ssh -f -N -D 1080 admin@server1.example.com
در اینجا:
- -f به SSH می گوید که در پس زمینه اجرا شود.
- -N به SSH می گوید که تنها تونل را ایجاد کند و هیچ دستور دیگری اجرا نشود.
- -D 1080 پورت محلی برای پروکسی SOCKS را مشخص می کند.
پس از اجرای این دستور، تنها کافی است که پراکسی SOCKS را در تنظیمات مرورگر خود به localhost و پورت 1080 تنظیم کنید. اکنون تمام ترافیک مرورگر شما از طریق سرور ریموت عبور خواهد کرد و می توانید به اینترنت به صورت امن و خصوصی دسترسی پیدا کنید.
نتیجه گیری
پورت فورواردینگ در لینوکس ابزاری قدرتمند برای مدیریت و مسیریابی ترافیک شبکه است که به شما این امکان را می دهد تا داده ها را به صورت امن از یک شبکه به شبکه ای دیگر منتقل کنید. با استفاده از این تکنیک ها، شما می توانید از امنیت بالایی در انتقال داده ها بهره مند شوید و از حملات یا دسترسی های غیرمجاز جلوگیری کنید. اگر به دنبال قیمت انواع لپ تاپ هستید، پیشنهاد می کنم از فروشگاه اینترنتی ما بازدید کنید تا بهترین گزینه ها را بررسی کنید و نیازهای خود را به راحتی برطرف کنید.