بسبب العقوبات الأمريكية، تُحظر العديد من الخدمات والمواقع في سوريا، ولا يمكن الوصول إليها إلا عبر VPN. بينما تمنع معظم هذه المواقع أي اتصال من سوريا تمامًا، يختلف GitHub قليلًا: فهو يسمح ببعض الخدمات، لكنه قد يحظر حسابك إذا اكتشف موقعك. وهذا يجعل استخدامه أكثر تعقيدًا.
لكن هذا يزيد من تعقيد الأمور في سوريا، فقد تنسى تشغيل الـ VPN، مما قد يؤدي إلى اكتشاف GitHub لموقعك وحظر حسابك من الخدمات الأخرى.
وقد تتصل بعض البرامج تلقائيًا بـ GitHub دون أن تنتبه، مما يعرضك للحظر.
نظرًا لعملي في المجال التقني عن بعد مع العديد من الشركات، وبحكم أن GitHub هو أحد أكثر المواقع استخدامًا من قبل الشركات للمشاريع البرمجية وإدارة الأكواد، ليس لدي خيار سوى استخدامه، وإلا سأضطر لتغيير الشركة! :)
لماذا لا يكفي استخدام VPN فقط؟
المشكلة أن ليست كل خدمات الـ VPN تدعم Kill Switch، وحتى إن دعمتها، فقد يتوقف الـ VPN فجأة أو يبطئ الإنترنت. في بعض الأحيان، يقوم GitHub باكتشاف أنني أستخدمه من سوريا ويقوم بحظر حسابي.
هذه الحلول ليست مثالية بالنسبة لي، حيث أنني لا أحب فتح الـ VPN باستمرار، لأن ذلك يؤدي إلى تباطؤ الإنترنت. (في سوريا، الإنترنت ضعيف في الأساس، فزيادة البطء ليست خيارًا جيدًا). بالإضافة إلى ذلك، تزيد الإعلانات على المواقع عندما أكون متصلًا عبر VPN، أما في سوريا، الحمد لله، لا تظهر لي أي إعلانات.
الحل الذي استخدمته
لذلك، توصلت إلى الحل الأفضل بالنسبة لي، والذي جربته منذ فترة طويلة ولله الحمد لم أتعرض لأي حظر منذ ذلك الحين.
الحل بسيط: قررت ‘حظر GitHub قبل أن يحظرني!’
لا أمزح! الفكرة هي أنني قمت بتعديل إعدادات الشبكة على جهازي بحيث تمنع أي حزمة شبكة تخرج من جهازي إلى أي IP عام خاص بـ GitHub، إلا إذا كنت متصلًا عبر VPN.
(يمكنك أيضاً أتمتة هذه العملية بحيث يتم تحديث القائمة تلقائيًا باستخدام Cron Jobs، مما يضمن أن نطاقات GitHub الجديدة يتم تضمينها دون تدخل يدوي.)
الطريقة على macOS
كيفية إعداد macOS لحظر الاتصال بـ GitHub إلا عند الاتصال بـ VPN.
تحديد واجهة الشبكة الخاصة بالـ VPN
يجب عليك تحديد اسم واجهة الشبكة الخاصة بك:
# Look at the routing table to identify VPN interfaces
netstat -rn | grep utun
# Get details about all interfaces
ifconfig | grep utun
بالنسبة لـ ExpressVPN، عادةً ما سترى واجهة مثل utun8 أو شيء مشابه.
الحصول على نطاقات الـ IP الخاصة بـ GitHub
يقوم GitHub بنشر نطاقات الـ IP الخاصة به عبر API عامة. يمكنك استخدام هذا السكربت بلغة Python لجلب وتنظيم هذه النطاقات, توليد القواعد الخاصة التي تقوم بحظر GitHub لاضافتها للملف الخاص pf.conf
, ثم تقوم بانشاء نسخة مؤقتة عن الملف تتضمن القواعد الجديدة, حيث يمكنك استبدال الملف الاساسي بالملف الجديد.
قم بتنزيل هذا السكربت من هنا, وتنفيذ هذه الأوامر التالية لإنشاء الملف الجديد:
# Make it executable
chmod +x github_pf.py
# Run the Python script
python3 github_pf.py "YOUR_VPN_INTERFACE"
تطبيق القواعد
بمجرد أن تقوم بتحديث ملف pf.conf
الخاص بك، قم بتطبيق القواعد باستخدام الأوامر التالية:
# Validate the configuration
sudo pfctl -nf /etc/pf.conf
# Load the configuration
sudo pfctl -f /etc/pf.conf
# Enable pf if not already enabled
sudo pfctl -e
ملاحظات وحل المشاكل الشائعة
-
هذه الطريقة فعالة ولكنها تتطلب بعض المهارات التقنية. قد تحتاج إلى بعض الوقت لتطبيقها بشكل صحيح.
-
إذا كنت تستخدم أنظمة أخرى مثل Windows أو Linux، ستحتاج إلى استخدام أدوات مختلفة أو طرق مشابهة لتصفية الاتصال مع GitHub.
-
قد تكون هناك بعض القيود أو المشاكل في الشبكة في حال قمت بتطبيق هذه الإعدادات بشكل غير دقيق.
-
إذا استمر GitHub في العمل بدون VPN، تحقق مما إذا كان
pf
مفعلاً باستخدام:
sudo pfctl -s info
- تأكد من تحميل القواعد بشكل صحيح:
sudo pfctl -s rules | grep github
- تحقق من أن واجهة VPN التي استخدمتها صحيحة عبر:
ifconfig | grep utun
المراجع
- pf (Packet Filter) على macOS – وثائق
- ميزة Kill Switch في VPN – تحقق من وثائق مزود الـ VPN الخاص بك لمعرفة ما إذا كان يدعم هذه الميزة. معلومات عامة عن الميزة
- نطاقات IP العامة الخاصة بـ GitHub – وثائق GitHub
- API لجلب نطاقات GitHub العامة – GitHub REST API
أرجو أن يكون هذا الحل مفيدًا لكم! إذا كان لديكم أي أسئلة أو طرق أخرى تعمل في مناطق محجوبة، لا تترددوا في مشاركتها معنا.
لأي استفسارات أو ملاحظات، يمكنك التواصل معي عبر لينكدإن أو من خلال صفحة عندك سؤال.
ولا تنسوني من دعائكم.
سلام!