سناریوهای فضایی کار کردن با Tor در خط فرمان

اینترنت اسلامی چیزهای زیادی داره که بهمون یاد بده. وقتی داریم با ابزارای خط فرمان با اینترنت کار می‌کنیم و -کارای پیچیده که نه- حتی کارای ساده‌ای مث اضافه کردن یه ppa یا کارکردن با پروتکل https رو هم نمی‌تونیم انجام بدیم، باید هم چیزهای جدید یاد بگیریم. به هر حال این سه تا سناریوییه که تا الان مشکلات من رو حل کرده.

سناریوی اول: کار کردن با سایت‌ها از طریق پروتکل‌های معمول
تو این حالت بهترین راه استفاده از برنامه torify اه. به این ترتیب که برنامه‌ای که می‌خواید از یه سایت بسته شده استفاده کنه رو با استفاده از torify فراخونی می‌کنید. اگر هم که می‌خواید یه محیط کلا آزاد داشته باشید که می‌شه یه ترمینال غیر فیلتر راه انداخت:
[bash]
torify bash
[/bash]
تو این ترمینال هر کاری که بکنید انگار اینترنتتون غیر اسلامیه.

سناریوی دوم: کار کردن با پروتکل https
فرض کنید می‌خواید از طریق پروتکل https با github کار کنید. یا اینکه ناچارید از یه سایتی با پروتکل https چیزی دانلود کنید. در این شرایط احتمالا روش بالا بهتون کمکی نمی‌کنه. علت؟ گاهی برای بعضی پروتکل‌ها تو سیستم یه پروکسی جدا تنظیم می‌شه. برای کنترلش با دستور env کل متغیرهای محیطی سیستم رو می‌بینیم و البته با grep چیزی که دردسر ایجاد کرده رو می‌کشیم بیرون:
[bash]
mohammad@mohammad:~$ env | grep -i proxy
socks_proxy=socks://localhost:9050/
UBUNTU_MENUPROXY=libappmenu.so
https_proxy=https://localhost:9050/
[/bash]
اینجا تو خط سوم نتایج می‌شه دید که سیستم یه پروکسی جدا برای https داره. کافیه برای غیرفعال کردن این پروکسی، این متغیر رو unset کنیم:
[bash]
unset https_proxy
[/bash]
و حالا اون برنامه‌ای رو که می‌خوایم با یه چیزی مثل torsocks صدا بزنیم:
[bash]
torsocks git push
[/bash]
من از این روش برای کار با github و دانلود پکیج‌های sublimetext استفاده کردم.

سناریوی سوم: دستور sudo و tor
اگه برای کارایی مثل اضافه کردن یه پکیج ppa احتیاج داشته باشید از دستور sudo استفاده کنید، هیچ کدوم از روش‌های بالا کار نمی‌کنه. علت قضیه هم اینه که sudo داره به نوعی id کاربر جاری رو عوض می‌کنه و ما رو به root تبدیل می‌کنه. مشکل هم دقیقا از همین جاست: دو تا دستور بالا نمی‌تونن با یه برنامه‌ای که داره آی‌دی کاربر رو عوض می‌کنه کار کنن.

برای حل این مشکل من از سوییچ s دستور sudo استفاده کردم. با این سوییچ کلا به خط فرمان root منتقل می‌شیم. بعدش اونجا می‌تونیم از دستور torsocks به درستی استفاده کنیم:
[bash]
mohammad@mohammad:~$ sudo -s
[sudo] password for mohammad:
root@mohammad:~# torsocks add-apt-repository ppa:whaever
root@mohammad:~# exit
[/bash]

در آخر بگم که اگه برای مهاجرت دلیلی به جز وضعیت اسفبار اینترنت نبود، باز هم همین یک دلیل کافی بود.

به علاوه باید به شدت از نویسنده‌ها و طراحای tor با این ابزار عالیشون تشکر کرد.

tor روی شبکه محلی

توی شبکه محلیم دستگاه‌های مختلفی هستن که الزاما نمی‌شه روی همشون تور رو نصب کرد. اما چون خود تور یه سرویس‌دهنده است چرا نشه کانکشنی که ایجاد می‌کنه رو به اشتراک گذاشت؟ من این کارا رو روی یه توزیع دبین انجام دادم. ولی با اندکی تغییر همه اینا رو می‌شه هر جای دیگه‌ای هم انجام داد.

اشتراک تور بین همه دستگاه‌ها
تو آدرس ‪/etc/tor‬ فایلی به اسم torrc قرار داره که تنظیمای tor رو نیگه می‌داره. کافیه به ایشون بگیم که کانکشن‌های دستگاه‌های روی شبکه محلی رو قبول کنه. بازش می‌کنیم:
[shell]
sudo vi /etc/tor/torrc
[/shell]
و با این فرض که آی‌پی دستگاه شما ۱۹۲.۱۶۸.۱.۲۰۰باشه، این دو خط رو بهش اضافه می‌کنیم:
[shell]
SocksPort 192.168.1.200:9050
SocksPolicy accept *
[/shell]
خط اول می‌گه که سرویس Socks رو روی اون آدرس هم ارائه بده و خط دوم هم می‌گه که کانکشن‌های وارده از همه کامپیوترهای شبکه رو قبول کن. حالا کافیه تور رو ریستارت کنیم:
[shell]
sudo service tor restart
[/shell]
حالا با تنظیم کردن کامپیوترهای شبکه برای استفاده از پروکسی Socks 5 روی پورت ۹۰۵۰ از ۱۹۲.۱۶۸.۱.۲۰۰ می‌شه از تور این دستگاه استفاده کرد.

مرجع

فایل تنظیم اتوماتیک
اگه دیوایس‌هایی داشته باشیم که نشه برای استفاده از Socks کانفیگشون کرد چی؟ مثلا دیوایس‌های اپل به طرز احمقانه‌ای این قابلیت رو ندارن. راه حل: استفاده از فایل تنظیمات اتوماتیک.

مرحله اول: نصب یه سرور HTTP
اگرچه با SimpleHTTPServer پایتون هم می‌شه این کار رو انجام داد، ولی من webfs رو پیشنهاد می‌کنم که سبک و سادست.
نصبش می‌کنیم:
[bash]
sudo apt-get install webfs
[/bash]
و بعد فایل تنظیماتش رو ویرایش می‌کنیم:
[bash]
sudo vi /etc/webfsd.conf
[/bash]
توی فایل تنظیمات این دو خط رو تغییر می‌دیم:
[bash]
web_root=”/var/www”
web_port=”80″
[/bash]
و البته یادمون نمی‌ره که مطمئن بشیم اون دایرکتوری اونجاست:
[bash]
sudo mkdir -p /var/www
[/bash]
و سرویس محترم رو ری استارت می‌کنیم:
[bash]
sudo service webfs restart
[/bash]

مرجع

مرحله دوم: فایل کانفیگ
توی دایرکتوری ‪/var/www‬ یه فایل به اسم tor.pac با این محتویات می‌سازیم:
[javascript]
function FindProxyForURL(url, host)
{
return “SOCKS 192.168.1.200:9050”;
}
[/javascript]
حالا تو دیوایس‌ها مون میتونیم بگیم که پروکسی اتوماتیکه و فایل کانفیگش هم تو آدرس http://192.168.1.200/tor.pac قرار داره. دقت کنید که اون تیکه http حتما باید باشه.

مرجع

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