رفع مشکل این روزهای tor

اگه مثل من از tor استفاده می‌کنین لابد این روزها متوجه شدین که tor کار نمی‌کنه. خوب خوشبختانه مشکل این روزهای tor راه حل ساده‌ای داره.

برای رفع مشکل اول یه ایمیل به آدرس bridges@torproject.org می‌زنیم. متن ایمیل باید عبارت get bridges باشه و حتما از یه ایمیل یاهو یا جیمیل فرستاده بشه. حدس می‌زنید چرا؟ (؛

در جواب این ایمیل، یه ایمیل می‌گیریم که توش سه تا آدرس به این شکل فرستاده شده:
[bash]
Here are your bridges:

۱۱.۱۱.۱۱.۱۱:۱۱۱ ۹bbdd3a5ced8545ef46a0fe0a9fdf4c19871c6f8
۲۲.۲۲.۲۲.۲۲:۲۲۲ ۱۹d5e42afe1df7a94e2005470cc1996813890d70
۳۳.۳۳.۳۳.۳۳:۳۳۳ ۲۶۰۷c0e5d19e777e9ed0a83a5bc0caaa50df6ff5
[/bash]
حالا اگه از vidalia استفاده می‌کنیم،‌ از صفحه Settings، برگه Network، گزینه My ISP blocks connections to the Tor network رو انتخاب می‌کنیم و بعد این سه تا آدرس رو تو لیست پایین اضافه می‌کنیم.

اگر هم از لینوکس استفاده می‌کنیم،‌ فایل ‪/etc/tor/torrc‬ رو ویرایش می‌کنیم و این چند تا خط رو بهش اضافه می‌کنیم:
[bash]
UseBridges 1
UpdateBridgesFromAuthority 1
‌Bridge 11.11.11.11:111 9bbdd3a5ced8545ef46a0fe0a9fdf4c19871c6f8
Bridge 22.22.22.22:222 19d5e42afe1df7a94e2005470cc1996813890d70
Bridge 33.33.33.33:333 2607c0e5d19e777e9ed0a83a5bc0caaa50df6ff5
[/bash]
و در نهایت tor رو مجدد راه‌اندازی می‌کنیم:
[bash]
sudo service tor restart
[/bash]
شاد و آزاد باشید و آزادانه اینترنت‌گردی کنید. 🙂

پی‌نوشت مهم:
هم توی ویندوز هم توی لینوکس این مشکل وجود داره که اگه دفعه اولی که bridge ها رو تنظیم می‌کنیم،‌ خط
[bash]
UpdateBridgesFromAuthority 1
[/bash]
فعال باشه، تور فعال نمی‌شه. برای حل مشکل کافیه دفعه اولی که تور رو با بریج‌های جدید اجرا می‌کنیم این خط رو کامنت کنیم (اولش یه # اضافه کنیم) و بعد، از دفعه‌های بعد، اون خط رو از کامنت در بیاریم. برای ویندوز من این آپشن رو پیدا نکردم که کجاست و بنابراین باید مستقیم فایل torrc رو ویرایش کنیم. خوشبختانه میشه با استفاده از دکمه Edit current torrc file از صفحه Settings، برگه Advanced این کار رو انجام داد.

سناریوهای فضایی کار کردن با 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 حتما باید باشه.

مرجع

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

فیسبوق و تور در اوبونتو

این عمو ویلترچی یه کاری کرده آدم جرات نمی‌کنه مث بچه آدم بنویسه.

الغرض: من تو اوبونتو از تور استفاده می‌کنم (راهنمای نصب). مشکل این بود که چه با استفاده از تور و چه با فی پی عن، فایرفاکس عزیز بار اول فیسبوق رو باز می‌کرد، اما دفعه‌های بعدی نه!

این سری از فایل log‌ تور قضیه رو پیگیری کردم و دیدم که ظاهرا قضیه مربوط به اینه که فایرفاکس آی پی یه سری از دی ان اس ها رو fetch می‌کنه. درباره این مشکل و راه حلش اینجا و اینجا توضیح داده شده. به طور خلاصه برای حل مشکل کافیه وارد صفحه about:config شد و مقدار network.proxy.socks_remote_dns رو به true تغییر داد.