دور‌زدن تحریم‌های گیت‌لب روی سرور

گیت‌لب چند وقت پیش اعلام کرد که از Microsoft Azure به Google Cloud Platform برای «بهبود تجربه‌ی کاربران» مهاجرت کرد. از اون‌جایی که ایرانی جزو جمعیت جهان محسوب نمی‌شه و تجربه‌ی کاربران ایرانی گیت‌لب هم برای کسی اهمیت نداره، چاره‌ای نداشتیم که در توییتر به فحش به گوگل بسنده کنیم.

در این نوشته خیلی کوتاه توضیح می‌دهم که چه‌جوری می‌تونید این تحریم رو دور بزنید. راه اولی که به ذهن شما هم الان رسیده روی سرورهای ایران جواب نمی‌ده، چون فیلترشکن‌ها یا نیاز به GUI دارند یا از یه نوع Transparent Proxy استفاده می‌کنند (مثل OpenConnect) که منجر به قطع همزمان ارتباط شما به سرور (معمولاً SSH) می‌شه.

راه بعدی و منطقی‌تر، استفاده از http proxy در خود گیت است؛ کم‌هزینه و بدون درد!

قبل از شروع این رو بگم که نوشته رو با فرض این که شما از یه توزیع Debian Based مثل دبیان یا اوبونتو روی سرورتون استفاده می‌کنید نوشتم.

یک. سرور پراکسی

متأسفانه همین اول کار باید دست توی جیب مبارکتون بکنید و یه VPS در یکی از کشورهای خارجی به جز کشورهای موردتحریم آمریکا مثل ایران، عراق، سوریه و ... تهیه کنید. می‌تونید از یکی از دوستانتون قرض کنید یا ... .

حالا باید بسته‌ی squid رو نصب کنید. squid یه برنامه برای راه‌اندازی http proxy و ftp proxy هست که با کاربردهای متفاوتی مثل پراکسی کش بین سرورهای مختلف به کار میره؛ توی ایران برای دور‌زدن تحریم (و کارهای دیگه).

sudo apt install squid

حالا فایل etc/squid/squid.conf/ رو با ادیتور دلخواهتون باز کنید، دنبال عبارت http_access deny all بگردید و با عبارت http_access allow all جایگزینش کنید. فایل رو ذخیره کنید و سرویس رو restart کنید.

sudo systemctl reload squid
sudo systemctl restart squid
🤔 پورت پیش‌فرض squid برای http proxy برابر با 3128 هست. اگه روی سرور فایروال فعال هست، حتماً این پورت رو باز کنید؛ مثلاً برای فایروال ufw می‌تونید از این راهنما کمک بگیرید.

دو. سرور ایران!

وقتشه که سروری که بدون هیچ گناهی در ایران واقع شده رو به سرور خارجی معرفی کنیم. ما نمی‌خواهیم که کل سرور از پراکسی استفاده کنه، فقط می‌خواهیم که برنامه‌ی git وقتی به gitlab.com وصل می‌شه ازش استفاده کنه.

فایل gitconfig./~ رو با ادیتور دلخواهتون باز کنید و متن زیر رو داخلش قرار بدهید.

[http "https://gitlab.com"]
proxy = [IP]:3128
sslVerify = false
proxyAuthMethod = basic

بدیهی است که به جای [IP] باید آی‌پی سرور خارجی‌تون رو وارد کنید ((:

فایل رو ذخیره کنید و حالا امتحان کنید!

git clone https://gitlab.com/...

چندتا نکته

حتماً حتماً سرویس squid رو در مواقعی که لازمش ندارید متوقف کنید یا برایش نام‌کاربری و رمز‌عبور تعریف کنید. اگه نام‌ کاربری یا رمزعبور داشتید، موقع تنظیم گیت در سرور ایران باید این‌طوری تعریف کنید:

proxy = [username]:[password]@[ip]:[port]

اگه در سرور پراکسی به مشکل می‌خورید، احتمالاً باید حالت Masquerading رو در بخش NAT فعال کنید. آموزش‌های مختلف درمورد فایروال‌های متفاوت وجود داره، مثلاً برای ufw می‌تونید از این راهنما کمک بگیرید.

در آخر، آرزو می‌کنم همه‌ی ما یه روزی بتونیم از این‌جا فرار کنیم 💐