راه‌اندازی پراکسی در لینوکس

یکی از اولین نیازها برای مهاجرت به لینوکس استفاده از پراکسی هست، بخصوص که بسیاری از شرکت‌ها تحریممون کردند و توسعه نرم‌افزار رو با مشکل مواجه می‌کنند. متاسفانه آموزش‌های مناسبی هم براش سراغ ندارم در نتیجه تصمیم گرفتم این آموزش رو بنویسم، امیدوارم برای تازه کاران مفید باشه.
سعی می‌کنم به مرور زمان تکمیلش کنم شما هم می‌تونید کمک کنید ایراداش رو بگید روش‌های دیگه رو آموزش بدید.
منتظر ایشو‌ها یا پول ریکوست‌هاتون هستم.

برای اینکه بتونیم تحریم‌هارو دور بزنیم لازمه با ip غیر از ip ایران به اینترنت وصل بشیم. برای اینکار میشه تونلی به یک سرور خارج ایران زد و بعد ترافیک اینترنت رو از اون تونل انتقال داد. پس آموزش به دو قسمت کلی تقسیم میشه: ساخت تونل و رد کردن ترافیک از توش

حواستون باشه میرورهای موجود در ایران ممکنه برنامه‌هایی که برای دور زدن استفاده می‌شه رو نداشته باشند در نتیجه از میرورهای خارج ایران استفاده کنید. (یادتون نره لیست مخازنن رو آپدیت کنید)

ساخت تونل

نکته: این تونل‌ها تا زمانی که ترمینال باز هست کار می‌کنه و با بستن ترمینال بسته می‌شه. اگر می‌خواید ترمینال رو ببندید می‌تونید اول دستور screen و یا nohup رو بزنید تا تونل با بستن ترمینال باز بمونه (ممکنه لازم باشه screen و nohup رو نصب کنید) ولی من پیشنهاد میدم یه گوشه‌های باز نگهش دارید تا اگر خطایی داد ببنید مشکل چیه

اگر دقیقا طبق این نوشته‌ها پیش برید stunnel و tor به صورت سرویس بعد از هر بار روشن شدن سیستم روی سیستم شما اجرا میشند ولی بقیه رو باید دستی اجرا کنید.

پیشنهاد میکنم هر کدوم از سرویس‌هارو رو یک پورت لوکال اجرا کنید (الان همشون رو 1080 هستند) تا بتونید در صورت نیاز همزمان ازشون استفاده کنید. روش‌های دیگه‌ای هم هست که میتونه هر وقت سرعت یه سرویس بالاتر بود ترافیک رو از اون روش انتقال بده که سعی میکنم به زودی اضافش کنم.

راه‌اندازی تونل به وسیله shadow socks

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

```bash $ sudo apt install libevent-dev $ sudo apt install python-pip $ sudo apt install python-dev $ sudo apt install python-m2crypto $ sudo pip install gevent $ sudo pip install shadowsocks ```

الان شدو ساکس رو سیستم شما نصب شده و با دستور زیر می‌تونید یک تونل رو سیستم خودتون ایجاد کنید.

```bash $ sslocal -s “server” -k password -t 600 -p port -l 1080 -m encryption ```

به جای "server" آی‌پی یا آدرس سرور، به جای "password" پسورد و جای "port" پورت، جای "encryption" انکریپشن سرویس رو وارد کنید و به جای "local port" پورت لوکال سیستم که خودتون تایینش می‌کنید. بعد تونل رو سیستم شما ایجاد میشه و باید به مرحله رد کردن ترافیک از تونل برید.

میشه دستورات بالا رو تو یه فایل به این شکل ذخیره کرد

```json { "server": "sever addr", "server_port": port, "local_port": 1080, "password": "password", "timeout":600, "method":"aes-256-cfb" } ```

و دستور رو اینجوری زد

```bash $ sslocal -c path_file ```

شدو ساکس در پورت‌های مختلف و انکریپشن‌های متفاوت سرعت‌های مختلفی میده.

تونل با کمک ssh

نمی‌دونم اسم این تونل چیه ولی ازش استفاده می‌کنم اگر دسترسی ssh به یک سرور دارید می‌تونید به این طریق یک تونل رو سیستم خودتون ایجاد کنید

```bash $ ssh user@server.address -D 1080 ```

به این طریق یک تونل رو پورت ۱۰۸۰ سیستمتون ایجاد میشه

تونل با کمک tor

تور یکی از امن ترین شبکه‌های دنیاست

```bash $ sudo apt install tor $ sudo apt install python-pip $ sudo apt install python-dev gcc $ sudo pip install obfsproxy ```

سپس تنظیمات تور رو باید انجام بدید

```bash $ sudo nano /etc/tor/torrc ```

موارد زیر رو به انتهای فایل اضافه کنید با کنترل + x و انتخاب y می‌تونید تغییرات رو ذخیره کنید

```bash SocksPort 1080 SocksListenAddress 127.0.0.1 Bridge obfs3 194.132.209.187:39413 Bridge obfs3 194.68.32.131:56006 Bridge obfs3 107.191.58.23:34344 UseBridges 1 ClientTransportPlugin obfs2,obfs3 exec /usr/local/bin/obfsproxy --managed ```

تعدادی از پل‌های تور هم در این تنظیمات هستند، پل‌ها ممکن است بسته شوند از https://bridges.torproject.org می‌تونید پل‌های جدید بگیرید و با موارد بالا جایگزین کنید.

بعد ذخیره تنظیمات با دستور زیر تور را دوباره راه‌اندازی کنید

```bash $ sudo service tor restart ```

حالا تونل در سیستم شما اجرا شده و لازمه ترافیک رو ازش رد کنید

ساخت تونل با yourfreedom

باید قبلش برید تو سایتش ثبت‌نام کنید http://your-freedom.net
از قسمت دانلود نسخه جاوا دانلود کنید
از حالت فشرده خارج کنید
با cd به محل اکسترکت شده برید و دستور زیر رو وارد کنید

```bash java -jar freedom.jar ```

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

stunnel

```bash $ sudo apt install stunnel4 ```

اگر فایل اصلی کانفیگ وجود داره پاکش کنید

```bash $sudo rm /etc/stunnel.conf ```

و دوباره بسازیدش

```bash $ sudo nano /etc/stunnel.conf ```

این تنظیمات رو بزارید توش

```bash pid = /stunnel4.pid client=yes [name] accept=1080 connect=serverAdress:serverPort ```

با کنترل + x و انتخاب y ذخیرش کنید.
به مسیر زیر برید و ENABLED برابر 1 کنید.

```bash $ sudo nano /etc/default/stunnel4 ```

ذخیره کنید و stunnel رو ری‌استارت کنید

```bash $ sudo service stunnel4 restart ```

تونل رو سیستم شما ایجاد شده و حالا باید ترافیکتون رو ازش رد کنید.

openvpn

از openvpn هم میشه در لینوکس استفاده کرد اول نصبش کنید (فایل کانفیگ رو یا خودتون باید تو سرورتون بسازید یا از کسی که دارید از سرویسش استفاده می‌کنید بگیرید)

```bash $ sudo apt install openvpn ```

فایل کانفیگ openvpn رو دانلود کنید و به این طریق وصل شید

```bash $ sudo openvpn filename ```

با اجرا این دستور کل ترافیک شما میره سمت سرور و لازم نیست پراکسی جایی ست کنید، در نتیجه تمام تنظیمات پراکسی‌هاتون رو مستقیم کنید.

رد کردن ترافیک از تونل

اگر دقیقا مثل تنظیماتی که نشون دادیم جلو رفته باشید با هر کدوم از روش‌ها یه تونل از نوع socks5 رو پورت 1080 و آی‌پی سیتمتون 127.0.0.1 دارید.
حالا باید هر چیزی رو که می‌خواید از توی این تونل رد کنید. خود سیستم عامل تو قسمت نتورک تنظیماتی برای پراکسی داره ولی من ازش خوشم نمیاد و فکر کنم بعضی از برنامه‌ها به اون تنظیمات کاری ندارند.
روش‌های بهتری هم هست

فایرفاکس

https://addons.mozilla.org/en-US/firefox/addon/foxyproxy-standard
foxyproxy یه پلاگین برای فایرفکس و فکر کنم کروم هست که می‌تونید خیلی راحت و دم دستی تنظیمات پراکسی رو توش تغییر بدید.
پلاگین رو نصب کنید، add new proxy رو بزنید، ip رو 127.0.0.1 و پورت 1080 بزارید، نوع پراکسی رو socks5 انتخاب کنید و ذخیره کنید.
از قسمت مود پراکسی‌ای که ساختید رو فعال کنید.

نکته:‌بدون این پلاگین هم میشه از تنظیمات فایرفکس پراکسی رو تغییر داد ولی این دم دسته

می‌تونید تنظیمات دیگه‌ای هم بهش اضافه کنید مثلا aparat.com رو از پراکسی رد نکنه تا سرعت بالاتری داشته باشه

کروم

https://github.com/FelisCatus/SwitchyOmega/releases
اکستنشنی هست به نام SwitchyOmega که می‌تونه تنظیمات پراکسی کروم رو باهاش دست کاری کرد. نصبش کنید.
کنار آدرس بار آیکنش اضافه می‌شه از option گزینه new profile رو انتخاب کنید، یه اسم براش وارد کنید و گزینه proxy profile رو بزنید. پروتکل رو socks5 انتخاب کنید. سرور 127.0.0.1 و پورت 1080 باشه در انتها هم apply change رو بزنید.
هر وقت خواستید می‌تونید با کلیک رو آیکنش به راحتی ارتباط رو مستقیم کنید یا از پراکسی رد کنید.
تنظیمات دیگه‌ای هم داره مثلا بزنید تمام سایت‌هایی که با ir تموم میشند بدون پراکسی باشند.

ترمینال

گاهی لازمه ترافیک ترمینال هم از پراکسی رد شه، مثلا زمانی که می‌خواید کروم رو آپدیت کنید یا برای نصب جاوا و … چون این شرکت‌ها مارو تحریم کردند.
برنامه‌ای هست به نام proxychains اول هر کامندی که بزنید ترافیکش از پراکسی رد میشه، اول نصبش کنید

```bash $ sudo apt install proxychains ```

بعد کامند زیر رو بزنید

```bash $ sudo nano /etc/proxychains.conf ```

به آخر فایل برید و اول خط آخر یک # اضافه کنید تا تنظیمات دیفالت کامنت شه و خط زیر به آخرش اضافه کنید

```bash socks5 127.0.0.1 1080 ```

خوب حالا می‌تونید با زدن proxychains اول هر دستوری ترافیکش رو از تونل رد کنید.
نکته اگر می‌خواید سیستم تون رو آپدیت کنید اول sudo -s و بعدش proxychains apt update

تبدیل socks5 به http

هنوز یه مشکلی هست بعضی از برنامه‌ها تو تنظیمات پراکسیشون socks5 ندارند. مثل اندروید استادیو و sdk! در نتیجه نمیشه sdk رو آپدیت کرد چون گوگل تحریممون کرده، بنابراین ما socks5 رو تبدیل به http می‌کنیم که این برنامه‌ها ازش پشتیبانی می‌کنند. به کمک برنامه polipo که مثل یه شلنگ می‌مونه، از یه ور socks5 می‌گیره از یه ور دیگه http تحویل میده

```bash sudo apt install polipo ```

و بعد برای کافیگش دو خط زیر رو

```bash socksParentProxy = localhost:1080 socksProxyType = socks5 ```

به انتهای فایل

```bash $ sudo nano /etc/polipo/config ```

اضافه کنید با کنترل + x و انتخاب y تغییرات رو ذخیره کنید و بعدش Polipo رو ری‌استارت کنید

```bash $ sudo service polipo restart ```

حالا یه پراکسی دیگه هم رو سیستم داریم همون آی‌پی 127.0.0.1 ولی رو پورت 8123 و از نوع http که به راحتی می‌تونید رو همه سیستم‌ها از جمله اندروید استادیو اضافش کنید

و در آخر

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

http://creativecommons.org/licenses/by-sa/3.0