آنچه در این مقاله میخوانید
چگونه ترافیک وب را بدون VPN و با استفاده از تونل SOCKS بهصورت امن هدایت کنیم؟
۲۱ آذر ۱۴۰۴
وقتی در شبکههای عمومی یا ناامن، مثل وایفای کافهها، به اینترنت وصل میشوید، همیشه این نگرانی وجود دارد که کسی فعالیت آنلاین شما را ردیابی کند. VPN میتواند یک راهحل باشد، اما نصب و راهانداری آن همیشه امکانپذیر نیست. در چنین شرایطی، تونل SOCKS5 با استفاده از SSH به کمک شما میآید. این روش ساده سریع و رایگان به شما اجازه میدهد مرور وب را رمزگذاری کنید و بدون نیاز به نرمافزارهای اضافی، ترافیک مرورگر خود را از یک مسیر امن عبور دهید. در این راهنما یاد میگیرید چطور با استفاده از یک سرور لینوکسی و مرورگر فایرفاکس، تونل SOCKS ایجاد کنید و با خیال راحت وبگردی کنید.
در ادامه خواهید خواند:
- پیش نیاز
- مرحله 1 (macOS/Linux): راهاندازی تونل
- مرحله 1 (ویندوز): راهاندازی تونل
- مرحله 2: پیکربندی فایرفاکس برای استفاده از تونل
- مرحله 3: بازگرداندن تنظیمات پروکسی در فایرفاکس
- مرحله 4 (macOS/Linux): ایجاد میانبر برای استفادههای مکرر
- مرحله 5 (اختیاری): رفع اشکال: عبور از فایروالها
- جمع بندی

پیش نیاز
- اگر هنوز از اوبونتو نسخه 16.04 یا پایینتر استفاده میکنید، پیشنهاد میشود به نسخههای جدیدتر ارتقا دهید، چون دیگر برای این نسخهها پشتیبانی ارائه نمیشود.
- یک سرور لینوکسی (مثلا اوبونتو) که کاربر sudo و دسترسی SSH روی آن فعال باشد.
- یک برنامه که بتواند با پروکسی SOCKS کار کند، مثل مرورگر Firefox.
- اگر از ویندوز استفاده میکنید، به ابزار PuTTY یا Windows Subsystem for Linux (WSL) نیاز دارید. (کاربران لینوکس و macOS به این ابزار نیاز ندارند، چون ابزارهای لازم بهصورت پیشفرض روی سیستم نصب هستند.)
مراحل راهاندازی تونل SOCKS
- ایجاد تونل (macOS/Linux یا Windows)
- تنظیم مرورگر فایرفاکس برای استفاده از تونل
- بازگردانی تنظیمات پروکسی در فایرفاکس
- ایجاد میانبر برای استفادههای بعدی (macOS/Linux)
مرحله 1 (macOS/Linux): راهاندازی تونل
روی کامپیوتر محلی خود یک کلید SSH بسازید. پس از ایجاد کلید، مطمئن شوید که کلید عمومی (public key) به فایل authorized_keys روی سرور SSH شما اضافه شده باشد.
سپس یک ترمینال باز کنید تا تونل SSH با پروکسی SOCKS فعال شود.
تونل را با این دستور ایجاد کنید:
ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@your_domain
توضیح پارامترها:
-i: مسیر کلید SSH که برای اتصال به سرور استفاده میشود.-D: به SSH میگوید که میخواهیم یک تونل SOCKS روی پورت مشخص ایجاد کنیم (میتوانید عددی بین 1025 تا 65536 انتخاب کنید).-f: فرآیند را به پسزمینه منتقل میکند.-C: دادهها را قبل از ارسال فشرده میکند.-q: حالت ساکت (quiet) است، یعنی پیامهای اضافی نمایش داده نمیشوند.-N: به SSH میگوید بعد از ایجاد تونل، هیچ دستور دیگری اجرا نکند.
توجه: حتما sammy@your_domain را با نام کاربری sudo و آدرس IP یا دامنه سرور خود جایگزین کنید.
بعد از وارد کردن دستور، فورا به خط فرمان باز میگردید و هیچ پیام موفقیت یا خطایی مشاهده نمیکنید؛ این کاملا طبیعی است.
برای بررسی اینکه تونل در حال اجرا است، دستور زیر را وارد کنید:
ps aux | grep ssh
در خروجی چیزی شبیه به این خواهید دید:
Output
sammy 14345 0.0 0.0 2462228 452 ?? Ss 6:43AM 0:00.00 ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@your_domain
میتوانید ترمینال را ببندید، چون تونل هنوز فعال است. این به دلیل استفاده از پارامتر -f است که جلسه SSH را به پسزمینه منتقل کرده است.
نکته: برای بستن تونل، باید PID آن را پیدا کرده و از دستور kill استفاده کنید. در مثال بالا، PID برابر 14345 است و دستور زیر تونل را میبندد.
kill 14345
نحوه بستن تونل بهطور کامل در مرحله 3 توضیح داده شده است.
با سرویس آماده سرور مجازی لیارا، پروژههات رو روی بستر سریع، پایدار و امن اجرا کن.
✅ نصب فوری✅ منابع اختصاصی✅ دسترسی کامل SSH
خرید و راهاندازی سرور مجازی
مرحله 1 (ویندوز): راهاندازی تونل
1. PuTTY را باز کنید.
اگر هنوز PuTTY را نصب نکردهاید، آن را دانلود کرده و در مکانی که دوست دارید ذخیره کنید PuTTY نیاز به دسترسی ادمین برای نصب ندارد؛ کافی است فایل .exe را دانلود و اجرا کنید.
2. مراحل زیر را برای ایجاد تونل دنبال کنید:
از بخش Session, Host Name (یا آدرس IP سرور) و SSH Port (معمولا 22) را وارد کنید.

در سمت چپ مسیر زیر را دنبال کنید:
Connection > SSH > Tunnels
یک Source port دلخواه بین 1025 تا 65536 وارد کنید، مثلا 1337.

- گزینه Dynamic را انتخاب کنید.
- روی دکمه Add کلیک کنید.
- دوباره به بخش Session در سمت چپ بروید.
- یک نام برای Saved Sessions وارد کنید و روی Save کلیک کنید.
- حالا روی Open کلیک کنید تا اتصال برقرار شود.
- نام کاربری sudo و رمز عبور سرور را وارد کنید تا وارد شوید.
- اکنون میتوانید پنجره PuTTY را کوچک کنید، اما نبندید. اتصال SSH شما فعال است.
نکته: میتوانید نام کاربری sudo (مثلا sammy) و کلید SSH خود را برای همین جلسه ذخیره کنید. با این کار دیگر نیازی به وارد کردن نام کاربری و رمز عبور هر بار که اتصال را برقرار میکنید، نخواهید داشت.
مرحله 2: پیکربندی فایرفاکس برای استفاده از تونل
حالا که تونل SSH خود را ایجاد کردهاید، وقت آن است که مرورگر Firefox را برای استفاده از این تونل تنظیم کنید. توجه داشته باشید که برای کارکرد تونل SOCKS5، باید از یک برنامه محلی استفاده کنید که بتواند از تونل استفاده کند و Firefox این قابلیت را دارد.
این مرحله برای ویندوز، macOS و لینوکس یکسان است.
- مطمئن شوید که شماره پورتی که در دستور SSH استفاده کردهاید را دارید. در مثال ما، عدد 1337 استفاده شده است.
- مرورگر Firefox را باز کنید.
- در گوشه بالای سمت راست، روی آیکون همبرگری کلیک کنید تا منوی Firefox باز شود.
- روی Preferences یا Options کلیک کنید.
- به پایین صفحه بروید و در بخش Network Settings روی دکمه Settings کلیک کنید.
- زیر عنوان Configure Proxy Access to the Internet گزینه Manual proxy configuration را انتخاب کنید.
- در بخش SOCKS Host مقدار
localhostیا127.0.0.1را وارد کنید و برای Port، پورتی که در تونل استفاده کردید (مثلا 1337) را وارد کنید. - نزدیک پایین صفحه، تیک گزینه Proxy DNS when using SOCKS v5 را فعال کنید. این کار باعث میشود که جستجوهای DNS شما نیز رمزگذاری شوند و ISP نتواند وبسایتهایی که بازدید میکنید را ببیند.
- روی OK کلیک کنید تا تنظیمات ذخیره شوند و پنجره بسته شود.
- حالا یک تب جدید در Firefox باز کنید و شروع به مرور وب کنید. تمام ترافیک شما از طریق تونل SSH رمزگذاری شده است و امن خواهد بود.
تست عملکرد پروکسی:
- برای اطمینان از اینکه Firefox از پروکسی استفاده میکند، دوباره به Network Settings بروید و یک Port متفاوت وارد کنید و تنظیمات را ذخیره کنید.
- اگر حالا سعی کنید وبگردی کنید، باید پیام خطا مانند ‘The proxy server is refusing connections’ دریافت کنید. این نشان میدهد که مرورگر واقعا از پروکسی استفاده میکند.
- روش دیگر این است که به یک سایت عمومی برای مشاهده IP، مثل ipecho.net بروید. IP نمایش داده شده باید IP سرور SSH شما باشد، چون حالا سرور به عنوان پروکسی عمل میکند.
با سرویس آماده سرور اوبونتو لیارا، پروژههات رو روی بستر سریع، پایدار و امن اجرا کن.
✅ نصب فوری✅ منابع اختصاصی✅ دسترسی کامل SSH
خرید و راهاندازی سرور اوبونتو
مرحله 3: بازگرداندن تنظیمات پروکسی در فایرفاکس
زمانی که دیگر نیازی به حریم خصوصی تونل SSH ندارید، به تنظیمات پروکسی شبکه در Firefox برگردید. روی دکمه Use system proxy settings کلیک کنید و سپس OK را بزنید.
حالا که Firefox دیگر از تونل SOCKS استفاده نمیکند، میتوانیم تونل را هم ببندیم.
نکته: میتوانید تونل را باز بگذارید تا هر زمان که خواستید، پروکسی را در Firefox فعال یا غیرفعال کنید. اما اگر تونل برای مدت طولانی بلااستفاده بماند، ممکن است خودبهخود بسته شود.
بستن تونل (macOS/Linux)
تونلی که قبلا روی سیستم محلی ایجاد کردیم، به پسزمینه منتقل شده است. بنابراین بستن پنجره ترمینال باعث قطع تونل نمیشود. برای بستن تونل، باید Process ID (PID) آن را پیدا کرده و سپس با دستور kill فرآیند را متوقف کنیم.
ابتدا همه فرآیندهای SSH فعال را جستجو میکنیم:
ps aux |grep ssh
خطی را پیدا کنید که شبیه به دستوری باشد که قبلا برای ایجاد تونل وارد کردید، نمونه خروجی:
Output
sammy 14345 0.0 0.0 2462228 452 ?? Ss 6:43AM 0:00.00 ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@your_domain
عدد 3 تا 5 رقمی که در یکی از ستون اول خط قرار دراد، PID است. در مثال بالا، PID برابر 14345 است. حالا که PID را میدانید، میتوانید با دستور kill تونل را ببندید. کافی است PID را جایگزین کنید:
kill 14345
بستن تونل (ویندوز)
کافی است پنجره PuTTY که برای ایجاد تونل استفاده کردهاید را ببندید. همین عمل باعث قطع تونل خواهد شد.
اوبونتو Ubuntu چیست؟ (معرفی کامل کاربردها + ویژگیها)
اوبونتو
مرحله 4 (macOS/Linux): ایجاد میانبر برای استفادههای مکرر
برای سیستمهای macOS یا Linux میتوانیم یک alias ایجاد کنیم یا یک اسکریپت بسازیم تا به سرعت آن را برای ما راهاندازی کند. در ادامه دو روش برای خودکار کردن فرآیند تونل آمده است:
هر دو روش نیاز به احراز هویت SSH بدون رمز عبور یا passphrase برای سرور دارند.
روش اول: اسکریپت قابل کلیک
اگر میخواهید یک آیکون داشته باشید که با یک کلیک روی آن تونل راهاندازی میشود، میتوانیم یک اسکریپت BASH کوچک بسازیم. این اسکریپت تونل را راهاندازی کرده و سپس Firefox را اجرا میکند. البته اولین بار باید تنظیمات پروکسی را بهصورت دستی در Firefox وارد کنید.
در macOS، فایل اجرایی Firefox که از خط فرمان میتوان آن را اجرا کرد، داخل Firefox.app است. فرض کنید برنامه در Applications باشد، مسیر فایل اجرایی این است:
/Applications/Firefox.app/Contents/MacOS/firefox
در لینوکس، اگر Firefox از طریق مخزن نصب شده یا از قبل نصب بوده است، مسیر آن معمولا:
/usr/bin/firefox
است. میتوانید با دستور which firefox مسیر دقیق را پیدا کنید.
در این اسکریپت، مسیر Firefox را با مسیر مناسب سیستم خود جایگزین کنید. همچنین خط SSH را با دستوری که قبلا تونل را ایجاد کردهاید تطبیق دهید.
1. با استفاده از یک ویرایشگر متن مانند nano، یک فایل جدید بسازید:
nano ~/socks.sh
2. خطوط زیر را وارد کنید:
socks.sh
#!/bin/bash -e
ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@`your_domain`
/Applications/Firefox.app/Contents/MacOS/firefox &
1337را با پورتی که در Firefox وارد کردهاید جایگزین کنید.sammy@your_domainرا با نام کاربری SSH و آدرس IP یا دامنه سرور خود جایگزین کنید.- مسیر Firefox را مطابق مسیر سیستم خود تغییر دهید.
3. فایل را ذخیره کنید. برای nano کلید های CTRL + o و سپس برای خروج CTRL + x.
4. اسکریپت را اجرایی کنید تا با دوبار کلیک اجرا شود:
chmod +x /path/to/socks.sh
در macOS، ممکن است نیاز باشد مرحله اضافی برای اجرای فایل .sh مانند یک برنامه انجام دهید. برای این کار:
- روی
socks.shراست کلیک و Get Info را انتخاب کنید. - بخش Open with را پیدا کنید. اگر فلش کنار آن بسته است، باز کنید.
- به جای Xcode، گزینه Terminal.app را انتخاب کنید. اگر نبود، Other را بزنید و مسیر Applications > Utilities > Terminal.app را انتخاب کنید.

5. حالا برای بازکردن پروکسی SOCKS کافی است روی فایل socks.sh دوبار کلیک کنید. اسکریپت یک پنجره ترمینال را باز میکند، اتصال SSH را شروع کرده و Firefox را ارجا میکند. میتوانید پنجره ترمینال را ببندید، به شرطی که تنظیمات پروکسی در Firefox باقی مانده باشد.
این اسکریپت کمک میکند پروکسی را سریع راهاندازی کنید، اما برای بستن تونل باید مراحل دست قبلی (شناسایی و kill کردن SSH) را انجام دهید.
روش دوم: ایجاد Alias در خط فرمان
اغلب از خط فرمان استفاده میکنید و میخواهید تونل را سریع راهاندازی کنید، میتوانید یک alias ایجاد کنید.
1. اولین کار پیدا کردن مکانی برای ذخیره alias است. مکان فایلها بسته به توزیع لینوکس یا نسخه macOS متفاوت است. معمولا یکی از این فایلها مناسب است:
~/.bashrc
~/.zshrc
~/.bash_aliases
~/.bash_profile
~/.profile
2. بعد از پیداکردن فایل مناسب، این alias را اضافه کنید (در انتهای فایل یا جای مناسب):
.bashrc
alias firesox='ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@your_domain && /Applications/Firefox.app/Contents/MacOS/firefox &'
1337را با پورتی که در Firefox استفاده کردهاید جایگزین کنید.sammy@your_domainرا با نام کاربری و آدرس سرور خود جایگزین کنید.- مسیر Firefox را مطابق سیستم خود تغییر دهید.
3. aliasها تنها زمانی بازگذاری میشوند که یک shell جدید را باز کنید. بنابراین جلسه ترمینال خود را ببندید و یک ترمینال جدید باز کنید.
4. حالا هر وقت دستور زیر را تایپ کنید:
firesox
این alias تونل را راهاندازی کرده، Firefox را اجرا میکند و شما به خط فرمان باز میگردید. مطمئن شوید Firefox هنوز روی پروکسی تنظیم شده باشد. اکنون میتوانید بهصورت امن مرور کنید.
مبانی SSH: کار با سرورها، کلاینتها و کلیدهای SSH
مبانی SSH
مرحله 5 (اختیاری): رفع اشکال: عبور از فایروالها
اگر اتصال شما بدون مشکل کار میکند، همه چیز آماده است و میتوانید ادامه ندهید. اما اگر متوجه شدید نمیتوانید اتصال SSH برقرار کنید و دلیل آن فایروال محدودکننده است، احتمالا پورت 22 که برای ایجاد تونل لازم است، مسدود شده است.
اگر کنترل تنظیمات SSH سرور پروکسی را دارید، میتوانید SSH را طوری تنظیم کنید که روی پورتی غیر از 22 گوش دهد.
کدام پورتها معمولا باز هستند؟
پورتهایی که معمولا باز هستند عبارت هستند از:
- 80: ترافیک وب معمولی
- 433: ترافیک وب امن (TLS)
اگر سرور SSH شما محتوای وب ارائه نمیدهد، میتوانیم SSH را طوری تنظیم کنیم که از یکی از این پورتهای وب برای ارتباط استفاده کند، به جای پورت پیشفرض 22، بهترین گزینه 443 است، زیرا انتظار میرود ترافیک رمزگذاری شده روی این پورت باشد و ترافیک SSH ما هم رمزگذاری خواهد شد.
مراحل تنظیم پورت SSH جدید
1. استفاده از مکانی که فایروال ندارد.
2. تنظیمات SSH سرور را ویرایش کنید:
sudo nano /etc/ssh/sshd_config
3. خطی که نوشته شده Port 22 را پیدا کنید.
میتوانیم بهطور کامل 22 را جایگرین کنیم با یک پورت دوم برای SSH اضافه کنیم. پیشنهاد میکنیم چند پورت برای SSH فعال کنیم. بنابراین یک خط جدید زیر Port 22 اضافه میکنیم:
. . .
Port 22
Port 443
. . .
4. SSH را ریاستارت کنید تا تنظیمات جدید بارگذاری شود. بسته به توزیع شما، نام سرویس SSH ممکن است متفاوت باشد، اما معمولا ssh یا sshd است. اگر یکی کار نکرد، دیگری را امتحان کنید:
sudo service ssh restart
5. برای بررسی اینکه پورت جدید کار میکند، یک شل جدید باز کنید (شل فعلی را هنوز نبندید تا بهطور تصادفی خودتارن را از دسترسی محروم نکنید) و با پورت جدید وارد شوید:
ssh sammy@your_domain -p 443
اگر موفق شدید، اکنون میتوانید از هر دو شل خارج شوید و تونل SSH خود را با پورت جدید باز کنید:
ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@your_domain -p 443
تنظیمات Firefox همانند قبل باقی میماند، زیرا به پورت SSH وابسته نیست، فقط به پورت تونل (در مثال ما 1337) وابسته است.
چگونه از دستورات تاریخچه و گسترش های Bash در یک سرور لینوکسی استفاده کنیم؟
تاریخچه Bash
جمع بندی
تونل SOCKS یک راهکار ساده و کارآمد برای مرور امن اینترنت است، حتی زمانی که امکان استفاده از VPN را ندارید یا به شبکههای عمومی و ناامن متصل هستید. با استفاده از این روش، ترافیک مرورگر شما بهطور کامل رمزگذاری میشود و اطلاعات شما از دید افراد یا سرویسهای مزاحم مخفی میماند. راهاندازی آن سریع است، کنترل کامل اتصال در دست شماست و میتوانید بهراحتی تنظیمات را فعال یا غیرفعال کنید. بنابراین، تونل SOCKS گزینهای مطمئن و انعطافپذیر برای حفظ امنیت و حریم خصوصی هنگام وبگردی بهشمار میآید.