
أداة Tailcat: تشغيل مسار بيانات WireGuard بدون خوادم تحكم أو حسابات من Tailscale
أداة Tailcat: تشغيل مسار بيانات WireGuard بدون خوادم تحكم أو حسابات من Tailscale
أعلن براد فيتزباتريك، الشريك المؤسس لشركة Tailscale ومبتكر نظامي Memcached وLiveJournal، عن إطلاق أداة ومكتبة Tailcat مفتوحة المصدر بلغة Go. تهدف الأداة إلى استخلاص مسار البيانات الأساسي لشبكات Tailscale، والمكون من بروتوكول التشفير WireGuard وتقنيات عبور ترجمة عناوين الشبكة (NAT Traversal) ومرحلات التوجيه الاحتياطية (DERP)، وتجريده بالكامل من خوادم التحكم المركزية، والحسابات، وصلاحيات الجذر (Root).
واجه المطورون لعقود معضلة تقنية عند الرغبة في ربط جهازين عن بعد عبر الجدران النارية. تتطلب أنفاق WireGuard التقليدية وجود عنوان IP عام موجه وإعدادات تحويل منافذ يدوية. بينما تتطلب شبكات Tailscale الكاملة حسابات دخول، وخادم تحكم مركزي، وتثبيت بطاقة شبكة افتراضية (TUN) تتطلب صلاحيات مدير النظام. تقدم Tailcat حلا عمليا يختصر هذه التعقيدات في أداة طرفية خفيفة تعمل مباشرة عبر أنابيب الإدخال والإخراج القياسية.
- توليد زوج مفاتيح WireGuard في الذاكرة العشوائية
- تحديد مرحل DERP لنقطة الالتقاء الأولية
- استخراج عنوان الاتصال الذاتي:
tc + Base64(CBOR(المفتاح + المرحل))
- تفكيك العنوان إلى المفتاح العام وعناوين مرحل DERP
- فتح اتصال TLS صادر عبر المنفذ 443 نحو خادم DERP
- إرسال حزمة المصافحة الأولى (رسالة MEOW) للمفتاح العام
- استجابة الخادم وتأكيد صلاحية المفتاح العام للعميل
- طبقة Magicsock تبدأ اختراق منافذ UDP المباشرة عبر STUN
- حزم WireGuard مشفرة مباشرة بين النظيرين
- اتصال سريع بدون أي وسيط خارجي إطلاقاً
- حزم WireGuard مشفرة بالكامل تمر عبر مرحل DERP الموثوق
- تشفير طرفي كامل: المرحل لا يستطيع فك التشفير
عناوين IPv6 اصطناعية داخلية محصورة في العملية مع نقل البايتات مباشرة من وإلى الإدخال/الإخراج القياسي (stdin / stdout).
المعمارية البرمجية وآلية العمل
تعتمد Tailcat على نفس الفلسفة البرمجية لأداة netcat التقليدية، حيث تعمل كقناة لنقل البايتات بين نقطتين، لكنها تدمج طبقات أمنية وشبكية متقدمة تجعلها قادرة على تجاوز الجدران النارية والعمل دون تعديل جداول التوجيه في نظام التشغيل.
1. تشفير العناوين عبر بنية CBOR
في الوضع الافتراضي لشبكة Tailscale، يتصل كل جهاز بخادم تحكم مركزي عبر بروتوكول HTTPS لتلقي خريطة العناوين وإحداثيات النظراء. استبدلت Tailcat هذا الخادم بعنوان ذاتي التكوين يبدأ بالبادئة tc.
يتكون باقي العنوان من شفرة Base64 لبنية ثنائية وفق معيار CBOR، وتحتوي البيانات على عنصرين فقط:
- المفتاح العام لخادم WireGuard بطول 32 بايت.
- قائمة بعناوين خوادم DERP المسؤولة عن تأمين نقطة الالتقاء الأولية.
بهذا التصميم، يحمل العنوان كل المعلومات اللازمة لربط الاتصال دون الحاجة إلى قاعدة بيانات مركزية أو سجلات أسماء نطاقات ديناميكية. كما يمكن حفظ هذا العنوان في سجل نصي (DNS TXT) في النطاقات المخصصة.
2. بروتوكول الالتقاء ومرحلات DERP
لربط جهازين يقع كل منهما خلف موجه منزلي أو جدار حماية تجاري، يحتاج الطرفان إلى نقطة التقاء مشتركة في البداية. تفتح كلتا العقدتين اتصالا صادرا عبر بروتوكول TLS والمنفذ 443 إلى خادم DERP محدد. نظرا لأن هذا الاتصال يبدو كحركة مرور ويب اعتيادية، فإن معظم الجدران النارية تسمح بمروره تلقائيا.
يرسل العميل رسالة مصافحة أولية تسمى في البروتوكول MEOW موجهة إلى المفتاح العام للخادم. بمجرد استلام الخادم للرسالة والتحقق من هوية المفتاح العام، يرد برسالة تأكيد مماثلة عبر نفس القناة المفتوحة.
3. طبقة Magicsock واختراق جدران الحماية
بعد اكتمال المصافحة عبر المرحل، تبدأ طبقة magicsock المطورة في مشروع Tailscale بمحاولة ترقية الاتصال إلى مسار مباشر:
- يرسل الطرفان استعلامات STUN لاكتشاف عناوين IP الخارجية والمنافذ المعينة لهما من قبل موجهات NAT.
- يتبادل الطرفان حزم استكشافية عبر بروتوكول UDP مباشرة نحو تلك المنافذ المكتشفة.
- إذا كان أحد الطرفين أو كلاهما خلف موجهات NAT متوافقة، ينجح الطرفان في إنشاء مسار WireGuard مباشر عبر بروتوكول UDP، مما يقلل زمن الوصول إلى أدنى حد ممكن ويوفر النطاق الترددي للمرحل.
4. مكدس الشبكات في مساحة المستخدم
تتطلب برامج الشبكات الافتراضية التقليدية إنشاء بطاقة شبكة وهمية من نوع TUN أو TAP، وهو ما يلزم صلاحيات الجذر في أنظمة لينكس وماك وويندوز.
تتجاوز Tailcat هذه القيود من خلال دمج مكتبة netstack المطورة من جوجل ضمن مشروع gVisor داخل البرنامج ذاته. عند استلام حزم WireGuard وفك تشفيرها، يتولى مكدس TCP الداخلي معالجة البيانات وتمريرها مباشرة إلى تدفق الإدخال والإخراج القياسي (stdin وstdout). لا يعلم نظام التشغيل المضيف بوجود عناوين IP اصطناعية، ولا يتم تعديل جداول التوجيه الخاصة به.
سيناريوهات الاستخدام العملي
نظرا لعدم حاجة الأداة إلى حسابات مستخدمين أو صلاحيات جذر، فإنها تلائم بيئات التشغيل الصارمة وحاويات البرمجيات غير المميزة.
نقل الملفات المباشر بين خوادم معزولة
يمكن نقل أرشيف ملفات ضخم بين خادمين دون الحاجة إلى رفعهما على وسائط تخزين سحابية مؤقتة ودون فتح منافذ SSH خارجية:
# على الخادم المستلم
tailcat --listen | tar -xzvf -
# يطبع الأمر عنوان الربط المباشر
# Server listening at: tc1q2w3e4r...
# على الخادم المرسل
tar -czvf - ./data-backup | tailcat tc1q2w3e4r...
مشاركة خدمة ويب محلية لأغراض التجربة والتصحيح
يمكن لمهندس يطور تطبيقا محليا على المنفذ 8080 إتاحته لزميل عمل دون الحاجة إلى أدوات تجارية مثل ngrok أو إعداد نطاقات وسيطة:
# على جهاز المطور الأول
tailcat --listen --forward-tcp 127.0.0.1:8080
# على جهاز الزميل البعيد
tailcat --local-port 8080 tc1q2w3e4r...
يستطيع المطور الثاني فتح المتصفح على العنوان http://localhost:8080 وتصفح الخدمة مباشرة عبر نفق WireGuard المشفر الذي ينتهي داخل مكدس Tailcat المحلي.
ربط العناوين الدائمة عبر سجلات DNS
بدلا من نسخ العنوان الثنائي يدويا، يمكن تثبيته في سجل DNS من نوع TXT:
_tailcat.backup.internal.example. 300 IN TXT "tc1q2w3e4r5t6y7u..."
ويمكن للعملاء الاتصال بالاسم مباشرة:
tailcat backup.internal.example < dump.sql
الاستضافة الذاتية والاستقلالية التشغيلية
تعتمد Tailcat افتراضيا على مرحلات DERP العامة التابعة لشركة Tailscale والتي تخضع لقيود في النطاق الترددي. لكن الأداة تتيح الاستقلالية الكاملة لمن يرغب في استضافة خادم الترحيل الخاص به عبر حزمة derper مفتوحة المصدر:
# تثبيت وتشغيل خادم مرحل خاص على خادم سحابي مستقل
go install tailscale.com/cmd/derper@latest
derper --hostname=relay.example.com --certmode=letsencrypt
وعند تزويد Tailcat بالمعامل --derp-server=relay.example.com، تمر كل حزم المصافحة والترحيل حصريا عبر البنية التحتية الخاصة بالمستخدم، مما يقطع أي اتصال أو نقل بيانات مع خوادم شركة Tailscale. وتتكامل هذه الاستقلالية مع أدوات إدارة الخوادم الذاتية المعاصرة، على غرار بوابة Pangolin المفتوحة للذكاء الاصطناعي وأنظمة رصد الأجهزة الشبكية مثل NetAlertX لتأمين بيئات العمل المحلية.
مقارنة مع الحلول التقنية المقابلة
| الخاصية | أداة Netcat التقليدية | شبكة Tailscale الكاملة | أداة Tailcat |
|---|---|---|---|
| تشفير مسار النقل | لا يوجد (نصوص صريحة) | بروتوكول WireGuard | بروتوكول WireGuard |
| تجاوز جدران الحماية (NAT) | غير متاح | تلقائي بالكامل (Magicsock) | تلقائي بالكامل (Magicsock) |
| مرحلات بديلة عند الحظر | غير متاح | خوادم DERP | خوادم DERP |
| صلاحيات نظام التشغيل | صلاحيات مستخدم عادي | صلاحيات الجذر (بطاقة TUN) | صلاحيات مستخدم عادي |
| الحاجة لحسابات دخول | لا توجد | تسجيل دخول SSO وإدارة هوية | لا توجد حسابات نهائيا |
| خادم التحكم والسياسات | لا يوجد | منصة سحابية أو Headscale | مدمج داخل عنوان الاتصال |
| طبيعة الاتصال | تدفق شبكي للعملية | شبكة افتراضية على النظام | تدفق شبكي للعملية |
القيود التشغيلية
لا تعد Tailcat بديلا لشبكات المؤسسات الكبرى، بل تعالج حالات الاتصال السريع بين نقطتين:
- غياب لوحات التحكم المركزية: لا تتوفر واجهة لإلغاء الصلاحيات جماعيا، ويتطلب قطع الوصول تغيير المفتاح العام وتوزيع العنوان من جديد.
- اتصال أحادي النظير: تؤمن الأداة نفقا بين عميل وخادم واحد لكل جلسة عمل، ولا تبني شبكة متداخلة (Mesh) تصل مئات الخوادم معا.
- مسؤولية تأمين العنوان: ترتكز الحماية على سرية العنوان المولد؛ لذا يفضل تفعيل خاصية التحقق من المفاتيح العامة المصرح لها بالاتصال في بيئات الإنتاج الحساسة.