امید آرام - توسعه دهنده نرم افزار
امید آرام - توسعه دهنده نرم افزار
خواندن ۱۰ دقیقه·۲ سال پیش

همه چیز از یه توییت جادی شروع شد

امروز حدود 50 روز از فوت مهسا امینی میگذره و از اون روز، خیلی اتفاقهای تلخ و بعضاً امیدوار کننده ای افتاده که همه در جریانیم. اما فکر کنم هیچکدوم مون روزی نبوده که دنبال VPN و فیلترشکن و اینا نبوده باشیم. میخوام راهی که خودم رفتم تو این مدت رو بنویسم. شاید به درد کسی بخوره.


ماجرا از اونجا شروع شد که قبل از این جریانها برای یه شرکت کانادایی رزومه فرستاده بودم و اونا هم جواب داده بودن و یه تاریخ و ساعت مشخص کرده بودیم برای مصاحبه. همون موقع ها بود که یه روز دیدیم اینترنت کلا قطع شد و به اصطلاح ملی شد. اینجوری بود که از ساعت 4-5 عصر قطع میشد تا 10-11 شب! جادی هنوز آزاد بود و توییت میکرد. یه روز نوشت سری قبل که اینترنت رو اینجوری قطع کردن (فکر کنم آبان 98 منظورش بود) ما یه سرور داخل ایران گرفته بودیم و یه سرور هم خارج داشتیم و از این به اون وصل میشدیم و خلاصه اینترنت داشتیم. این افتاد تو سر من که هر جوری هست منم همینکارو کنم و اینترنت داشته باشم، مخصوصاً که مصاحبه هم داشتم و برام خیلی مهم بود که از دستش ندم.

آهان اینم بگم که یه کانکشن OpenVPN هم داشتم که مطمئن بودم درسته ولی نمیتونستم با اینترنت خودم بهش وصل بشم و با خودم گفتم یه سرور داخلی میگیرم و خودم به اون وصل میشم و اونو به این Vpn خارجیه وصل میکنم که مثلا بشه همونی که جادی گفته. خلاصه سریع یه سرچ کردم و بعد از اینکه دیدم چند تا شرکت ظرفیتشون پر شده از شرکت ابرآراز تونستم یه سرور توی ایران بگیرم. تازه فهمیدم که جدیداً دیگه لازم نیست هزینه زیادی بکنی و حداقل برای تست میتونی یه سرور بگیری حتی ساعتی. قیمتش هم تقریباً ساعتی 200 تا تک تومن بود که یک روزش میشد حدود 5 تومن. به نظر به صرفه میومد. حدود 100 تومن شارژ کردم حسابم و یه سرور لینوکسی (Ubuntu) گرفتم با پایین ترین کانفیگ (یک هسته، یک گیگ رم، 20 گیگ حافظه). خوشحال و خندون فکر میکردم الان وارد محیط گرافیکی لینوکس میشم و هر کاری میخوام میکنم و تمام. ولی اشتباه میکردم دیدم سروری که گرفتم هیچی نداره! حتی بلد نبودم چجوری میتونم واردش بشم! زنگ زدم پشتیبانیشون که از شانسم یه مهندس خیلی باسواد و با حوصله ای بود و کلی راهنماییم کرد و تازه فهمیدم این سرورها معمولا نسخه گرافیکی روشون نیست و باید با ترمینال بهشون وصل بشیم و با نرم افزار PuTTY آشنام کرد و بهم گفت که اگه میخوام باید یه دسکتاپ روش نصب کنم و با Vnc بهش ریموت بزنم.

بماند که دسکتاپ رو نتونستم روش نصب کنم ولی با کمک این لینک تونستم یه سرور VPN روش بیارم بالا و یه فایل ovpn برام ساخت که باید دانلودش میکردم و روی کامپیوتر خودم مثلا تست میکردم.

curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh

حالا مشکلم این بود که بلد نبودم چجوری یه فایل رو از روی سرور دانلود کنم! زنگ زدم به رضا (از بچه های دانشگاه که میدونستم حرفه ای لینوکس بلده) ماجرا رو براش تعریف کردم. اولاً گفت که OpenVPN رو هم بستن و کانکت نمیشه ولی بهم یاد داد که چجوری اون فایل رو دانلود کنم. با دستور SCP:

scp username@server_ip:/path_to_remote_directory local_machine/path_to_the_file

بعدش هم با مفهوم SSH Tunneling آشنام کرد که گفت میتونم با یه خط دستور ساده، از کامپیوتر خودم برم به سرور ایران و از اونجا برم یه سرور دیگه:

ssh -J user@iran_server_ip user@foreign_server_ip -D 1080 -C

البته من اون موقع هنوز سرور خارجی نداشتم و با حذف J- و سرور خارجی از دستور بالا تونستم ترافیکم رو از طریق اون سرور ایرانی رد کنم و اینجوری دیگه نگران ساعت هایی که اینترنت(!) ملی میشد نبودم. روش کار هم این بود که روی لپتاپ ویندوزی خودم یه cmd باز میکردم و این دستور ssh رو میزدم. با این کار عملا یه سرور پروکسی SOCKS درست میشد روی لپتاپ و بعد میرفتم توی InternetOptions ویندوز، توی پروکسی قسمت Socks آدرس رو میذاشتم 127.0.0.1 و پورت 1080. اما هنوز مشکلم این بود که روی گوشیم نمیتونستم اینو تنظیم کنم. روی موبایل ها پروکسی http و https رو میتونی تنظیم کنی اما برای socks چیزی ندارن هنوز. یه سری برنامه نصب کردم همه شون میگفتن باید root کنی گوشی رو. گفتم باشه میکنم ولی هر کاری کردم نشد. انگار این مدل گوشی من روت نمیشه!

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


خیلی حالم گرفته شده بود ولی مصمم تر شده بودم که این راه رو ادامه بدم و بیشتر یاد بگیرم. از طریق یه دوستی با سایت DigitalOcean آشنا شدم که اونم امکانات زیادی داره و یکیش ایجاد سرور مجازیه. یه اکانت ساختم توش و خودش یه اعتبار 100 دلاری (به مدت 2 ماه) برای شروع بهم داد. البته کارت اعتباری معتبر میخواست که یک دلار هم ازش کم کرد که ببینه واقعیه ولی گفت برمیگردونیم. دیگه بیخیال اون سرور ابرآروان شده بودم و اونم بعد چند روز اعتبارم تموم شد و قطعش کردن. به جاش اومدم توی همین DigitalOcean سرور ساختم (ماهی 6 دلار). یه نکته فقط داشت اون ابرآروان که خودش روی سرورش دسکتاپ هم نصب کرده بود و میتونستی خیلی راحت بهش وصل بشی. ولی حتی این DigitalOcean هم پیش فرض نداره دسکتاپ رو. البته کاری هم نداره ها خیلی راحته نصب کردنش. چهار خط کده که توی ترمینال مینویسی و تمام. تا دلت بخواد راهنما هم هست توی اینترنت. همین دیجیتال اوشن خودش داکیومنت های خیلی خوبی داره که قدم به قدم گفته چیکار بکن. قشنگ برای کسی که هیچ سواد لینوکسی نداره.

هنوز دنبال همون هدف اول بودم که یه vpn روی سرور خارجی راه بندازم و از سرور ایرانی به اون وصل بشم و از گوشی یا لپتاپ خودم به سرور ایرانی. این وسط ها چند تا چیز دیگه رو هم تست کردم. اول رفتم سراغ Outline گوگل. دیدم اصلا خودش با یه دکمه یه سرور Outline روی دیجیتال اوشن میسازه. منم ساختم و آدرسش رو به اپ موبایلش دادم و خوشحال و خندون که الان دیگه وصل میشم و اینا ولی نه! وصل نشد. اونجا بود که فهمیدم اینترنت ایرانسل خیلی جلوتره و نمیدونم چجوری فیلترش کرده. اینکه میگم «نمیدونم چجوری» برمیگرده به اینکه قبلاً ها اینجوری بود که vpnها رو بعد یه مدت شناسایی میکردن و آدرس سرورهاش رو به لیست فیلترینگشون اضافه میکردن. ولی من که همون موقع سرورش رو ساخته بودم و IP کاملاً جدیدی بود. ولی وصل نمیشد. اینه که میگم packetها رو چک میکنن و خیلی پیشرفته شدن. خلاصه پروژه Outline جواب نداد. هرچند که با اینترنت همراه اول بهتر بود و یه وقتا وصل میشد ولی خوشم نیومده بود ازش. چون با ایرانسل کار نمیکرد و اینترنت خونه هم ایرانسل بود.

بعد از اون OpenVPN رو هم تست کردم که شاید از سرور ایرانی بتونم به سرور خارجی وصل بشم اما اونم نشد. جالب بود که حتی همون تونل SSH هم دیگه جواب نمیداد. اینجوری که فقط چند ثانیه وصل میشد و خطای "client_loop: send disconnect: Connection reset" میداد و قطع میشد.

بعد از اون برای ارتباط تصویری رفتم سراغ Jitsi. دیدم ظاهراً خیلی ساده ست و چند خط کد داره که اجرا میکنی و سرورش رو ایجاد میکنه. اول میخواستم روی سرور ایرانم بسازمش چون میدونستم که از بیرون هم میشه بهش وصل شد ولی دیدم که اینم بچه ها از قبل پیش بینی کرده بودن و اون جایی که میخواست packageش رو دانلود کنه، اون رو بستن! خلاصه نشد. رفتم همونو رو سرور خارجی نصب کنم دیدم حتما یه domain میخواد. گفتم حله یه دامین ir میگیرم که ارزون در بیاد. گرفتم. میخواستم وصل کنم به اون سرور خارجی (DigitalOcean) که گفت نمیشه! به خاطر تحریم ها ir قبول نیست. یه چیز دیگه بده. رفتم اینور و اونور یه سایت پیدا کردم پسوند space رو میداد 65 تومن. همونو گرفتم :D دادم به سرور. Jitsi رو نصب کردم. بازم خوشحال و خندون اومدم تو گوشیم بازش کنم، نکرد! دیدم باز ایرانسل جلوتره! همراه اول اوکی بود ولی در کل بیخیالش شدم. چون من سرور ضعیفی گرفته بودم و برای انتقال تصویر به شدت کم میاورد.

بعدش رفتم سراغ Element و زیرساخت Matrix. اونم یه تست کردم ولی خیلی روش وقت نذاشتم چون باز همون مشکل ضعیفی منابع سرور رو داشتم و از طرفی بیشتر دنبال این بودم که بتونم همون vpn رو راه بندازم. با پروکسی سرور Squid آشنا شدم و روی سرورم ایجادش کردم. IP رو عوض کرد ولی همون مشکل فیلتر بودن سایتها همچنان برقرار بود. اینکه IP رو عوض میکرد هم یه جورایی بد نبود چون سایت هایی که اونا ما رو بستن اوکی میشدن. با سایت شکن هم آشنا شدم که اونم تقریباً با استفاده از dns همین کارو میکنه ولی خوب بازم راضی کننده نبود. تو همین گیر و دار با V2ray آشنا شدم. چند روز از خودش استفاده کردم و دیدم که خیلی خوب داره جواب میده. اینم بگم که توی این مدت بیشتر از 10تا برنامه vpn نصب کردم که هر کدوم بعد از یه مدت کوتاه از کار افتادن. ولی این v2ray به نظر اوکی میومد. یه سرچ کردم دیدم با اینکه چینیه ولی به نظر بد نیست و خودم هم میتونم سرورش رو ایجاد کنم. مثل همون Outline.

با راهنمایی این لینک تونستم روی سرور خارجیم یه سرور v2ray بسازم که این بار دیگه اوکی بود. با موبایل (اندروید و iOS) و لپتاپ و همه جا تونستم بهش وصل بشم. این دفعه دیگه یکم راحت شدم. داشت نتیجه میداد این یک ماه و خورده ای که تقریبا هر روزش درگیر این کارا بودم. گیر داده بودم که حتما همون حرف جادی رو پیاده کنم. یعنی از خونه به سرور ایران، از اونجا به سرور خارجی، از اونجا به اینترنت. داشتم میگشتم که دیدم یکی توی توییتر دقیقا همین کارو کرده. رفتم سراغش. محمود اسکندری. یه gist خیلی خوب نوشته که قشنگ توضیح داده چیکار کنیم. یه خط دستور برای سرور خارجی و بعدش یه خط دیگه برای سرور ایرانی و تمام. ممکنه یه مشکلاتی هم باشه که خودش راهنمایی کرده. خلاصه که رسیدم به همونجایی که میخواستم. فقط برای اینکه خودم هم یکم باهاش ور برم یه فورک ازش ساختم و سعی کردم پورت پیش فرضی که برای سرور ایران استفاده کرده بود رو عوض کنم و اینجوری بود که دیگه آروم گرفتم.


تو این مدت انقدر با این سرورها ور رفتم و چیزهای مختلف رو تست کردم که تا یه حدی دستم اومده الان چی به چیه. از اون آدمی که حتی بلد نبود یه فایل رو کپی کنه توی لینوکس رسیدم به جایی که منتظرم این v2ray هم فیلتر بشه و بگردم دنبال یه راه دیگه که دورش بزنیم. یه چیز دیگه یادم رفت بنویسم این بود وقتی رفتم دنبال Squid که در واقع یه Proxy server میساخت همش به این فکر میکردم که خوب این پروکسی چه فرقی با vpn داره؟ فرقشون اینه که vpnها علاوه بر اینکه IP رو تغییر میدن، همه فعالیت شما رو هم encrypt میکنن که در واقع میتونن خیلی امن باشن در حالیکه proxy ها بدون هیچ انکریپشنی فقط IP رو تغییر میدن. تازه اونم سه حالت داره: یکیش تغییر میده ولی به سایت مقصد میگه از کجا اومده! یه حالت دیگه IP رو تغییر میده و نمیگه از کجا اومده ولی میگه که خودش پروکسیه و اصلی نیست! حالت آخر که بهتره اینه که حتی نمیگه که خودش هم پروکسیه.

خلاصه که همه چیز از اون توییت جادی شروع شد و به اینجا رسید. حیف که خودش الان معلوم نیست کجاست ولی امیدوارم که حالش خوب باشه. به قول جادی: برای روزی که به vpn نگیم فیلترشکن.


فیلترشکنجادیلینوکس
شاید از این پست‌ها خوشتان بیاید