HeadlinesBriefing favicon HeadlinesBriefing.com

Tailcat: netcat عبر Tailscale

Hacker News •
×

Tailcat هو إعادة مزج لمكونات Tailscale مفتوحة المصدر للعمل مثل netcat، ولكن عبر مستوى بيانات Tailscale، دون مستوى التحكم. يوفر مستوى بيانات Tailscale (magicsock، داخليًا) أنفاقًا مشفرة من نقطة إلى نقطة Wire Guard® بين جهازين، مع DERP كقناة جانبية لاتصالات ثقب NAT وكمرحل أخير إذا فشل اجتياز NAT. بدلاً من استخدام مستوى التحكم في Tailscale، يتم تبادل جميع بيانات تعريف اتصال tailcat خارج النطاق، كما تريد. تم بناء واجهة سطر الأوامر tailcat (في cmd/tailcat) على مكتبة Go الخاصة بـ tailcat (قابلة للاستيراد كـ github.com/tailscale/tailcat).

سواء كنت تستخدم tailcat كأداة CLI أو مكتبة، فإن أحد الجانبين يشغل خادم tailcat (مستمع) ويحصل على رمز اتصال قصير. يمرر الجانب الآخر هذا الرمز إلى جانب عميل tailcat للاتصال. كل حركة المرور بينهما مشفرة من النهاية إلى النهاية باستخدام Wire Guard. يتم تشغيل الاتصال الأولي عبر شبكة ترحيل DERP الخاصة بـ Tailscale، ثم يقوم magicsock بتنفيذ اجتياز NAT للترقية إلى اتصال UDP مباشر من نقطة إلى نقطة عندما يكون ذلك ممكنًا (عادةً!).

لا تحتاج إلى حساب Tailscale، أو وصول جذر/مسؤول على الجهاز (لا يغير جداول التوجيه أو DNS أو ما إلى ذلك). إنها مجرد مكتبة مساحة مستخدم وأداة CLI. وكلها مفتوحة المصدر. يمكنك استخدام مرحلات DERP المجانية المحدودة المعدل (خريطة DERP الافتراضية هي https://tailcat.dev/derpmap.json) أو يمكنك تشغيل خوادمك الخاصة.

الاستخدام: قم بتوجيه stdin/stdout بين جهازين. يبدأ الخادم، ويطبع عنوانه المؤقت: $ tailcat # منطقة ترحيل التمهيد المحددة 302، سان فرانسيسكو # الخادم يستمع بعنوان جديد: tcom Fw WCCcj S5n KNq Aod034n Wo JZW0LZq Dhh C8U_d Kdn DRYQ8u NGFp GQEu (معلق، في انتظار...) ثم يمكن للعميل: $ echo hello | tailcat tcom Fw WCCcj S5n KNq Aod034n Wo JZW0LZq Dhh C8U_d Kdn DRYQ8u NGFp GQEu $ ثم يتم فتح الخادم: $ tailcat # منطقة ترحيل التمهيد المحددة 302، سان فرانسيسكو # الخادم يستمع بعنوان جديد: tcom Fw WCCcj S5n KNq Aod034n Wo JZW0LZq Dhh C8U_d Kdn DRYQ8u NGFp GQEu hello $ كشف المنافذ المحلية عبر النفق أو يمكنك تقديم منفذ TCP محلي، معاد توجيهه إلى localhost: $ tailcat --serve=8080,8443 # أو --serve=all # الخادم يستمع بعنوان جديد: tc XXXXXXXXX ثم العميل: $ tailcat tc XXXXXXXXX 8080 GET / HTTP/1.1 Host: foo HTTP/1.1 200 OK.... خادم SSH بدون مصادقة على Linux و macOS، يمكنك أيضًا تشغيل خادم SSH بدون مصادقة. (إذا كنت تريد المصادقة، يمكنك ببساطة tailcat --serve=22 والوكيل إلى خادم SSH الخاص بنظامك) $ tailcat --serve=no-auth-ssh # الخادم يستمع بعنوان جديد: tc XXXXXXXXX وعلى جانب العميل: $ tailcat ssh tc XXXXXXXXX $ tailcat ssh tc XXXXXXXXX ls -la أوامر متنوعة Ping لاختبار الاتصال؛ كل pong يبلغ ما إذا كان قد وصل عبر ترحيل DERP أو مسار مباشر. --until-direct يستمر في إرسال ping (حتى --timeout، الافتراضي 10 ثوانٍ) حتى يعمل مسار مباشر، ويخرج برمز غير صفري إذا لم يحدث: $ tailcat ping --until-direct <token> pong in 42.1ms via DERP(sfo) pong in 1.2ms via 203.0.113.7:41641 تشغيل أمر عبر وكيل SOCKS5 موجه عبر النفق: $ tailcat socks <token> curl http://server.tailcat:8081/ تعمل الرموز أيضًا مباشرة كأسماء مضيفات URL: يتعرف وكيل SOCKS عليها ويطلبها، لذا فإن وسيطة الرمز اختيارية. (الرموز حساسة لحالة الأحرف؛ هذا يعمل مع curl ومعظم أدوات CLI، ولكن ليس مع المتصفحات، التي تحول أسماء المضيفات إلى أحرف صغيرة.) $ tailcat socks curl http://<token>:8081/ العمل كعقدة خروج حتى يتمكن العميل من الوصول إلى شبكة الخادم: $ tailcat --serve=exit-node تحليل رمز اتصال وطباعة محتوياته (المفتاح العام Wire Guard للخادم ومعلومات DERP) كـ JSON، دون الاتصال بأي شيء: $ tailcat parse tcom Fw WCCcj S5n KNq Aod034n Wo JZW0LZq Dhh C8U_d Kdn DRYQ8u NGFp GQEu {"Server Public": "nodekey:9c8d2e6728da80a1dd37e275a82595b42d9a838610bc53f74a7670d1610f2e34","Region ID": 302} حل رمز قصير (يشير إلى منطقة DERP بالمعرف، مما يتطلب من العملاء جلب خريطة DERP) إلى رمز أطول ذاتي الاحتواء مع معلومات خادم DERP مدمجة...