it-swarm.asia

حركة مرور UDP عبر نفق SSH

عنوان يلخص حد كبير عنه. أرغب في إرسال حركة مرور UDP عبر نفق SSH. على وجه التحديد ، يجب أن أكون قادرًا على إرسال حزم UDP عبر النفق وجعل الخادم قادرًا على إرسالها إليّ على الجانب الآخر. أعرف كيفية القيام بذلك من أجل TCP الاتصالات. هل هذا ممكن مع UDP؟

63
heavyd

يخبرك هذا الدليل الصغير بكيفية إرسال حركة مرور UDP عبر SSH باستخدام الأدوات التي تأتي قياسية (ssh ، nc ، mkfifo) مع معظم أنظمة التشغيل المشابهة لـ UNIX.

أداء نفق UDP من خلال اتصال SSH

خطوة بخطوة افتح TCP منفذًا للأمام مع اتصال SSH

على جهازك المحلي (محلي) ، قم بالاتصال بالجهاز البعيد (الخادم) بواسطة SSH ، مع خيار -L الإضافي بحيث SSH مع TCP منفذ إعادة التوجيه:

local# ssh -L 6667:localhost:6667 server.foo.com

سيسمح ذلك TCP بإعادة توجيه الاتصالات على رقم المنفذ 6667 الخاص بجهازك المحلي إلى رقم المنفذ 6667 على server.foo.com من خلال القناة الآمنة. قم بإعداد TCP لإعادة توجيه UDP على الخادم

على الخادم ، نفتح مستمعًا على TCP المنفذ 6667 الذي سيعيد توجيه البيانات إلى منفذ UDP 53 الخاص بـ IP المحدد. إذا كنت تريد إجراء إعادة توجيه DNS مثلي ، يمكنك أن تأخذ عنوان IP الخاص بخادم الأسماء الذي ستجده في /etc/resolv.conf. ولكن أولا ، نحن بحاجة إلى إنشاء FIFO. FIFO ضروري أن يكون هناك اتصال ثنائي الاتجاه بين القناتين. من شأن أنابيب شل البسيطة أن تنقل فقط المدخلات القياسية للعملية اليسرى "الإخراج القياسي إلى العملية الصحيحة".

server# mkfifo /tmp/fifo
server# nc -l -p 6667 < /tmp/fifo | nc -u 192.168.1.1 53 > /tmp/fifo

سيتيح ذلك TCP حركة المرور على منفذ الخادم 6667 لإعادة توجيهها إلى حركة مرور UDP على منفذ 192.168.1.1 الخاص بالردود ، والردود على العودة. قم بإعداد UDP على TCP للأمام على جهازك

الآن ، نحن بحاجة إلى القيام بعكس ما تم في الجزء العلوي على الجهاز المحلي. تحتاج إلى وصول متميز لربط منفذ UDP 53.

local# mkfifo /tmp/fifo
local# Sudo nc -l -u -p 53 < /tmp/fifo | nc localhost 6667 > /tmp/fifo

سيتيح ذلك إعادة توجيه حركة مرور UDP على منفذ الجهاز المحلي 53 إلى TCP حركة المرور على منفذ الجهاز المحلي 6667. استمتع بخادم DNS المحلي :)

كما قد تفكر في الأمر الآن ، متى سيتم تنفيذ استعلام DNS على الجهاز المحلي ، على سبيل المثال على منفذ UDP المحلي 53 ، سيتم إعادة توجيهه إلى المنفذ المحلي TCP 6667 ، ثم إلى منفذ TCP الخادم 6667 ، ثم إلى خادم DNS للخادم ، منفذ UDP 53 من 192.168.1.1. للاستمتاع بخدمات DNS على جهازك المحلي ، ضع السطر التالي كخادم الأسماء الأول في /etc/resolv.conf:

nameserver 127.0.0.1
35
John T

هذا المثال (أعتقد أن إجابة جون تشير إلى نفس الشيء في مكان مختلف) ، توضح كيفية الوصول إلى خدمات UDP/DNS الخاصة بجهاز آخر عبر TCP/اتصال SSH.

سنقوم بإعادة توجيه حركة مرور UDP/53 المحلية إلى TCP ، ثم TCP حركة المرور باستخدام آلية إعادة توجيه المنافذ الخاصة بـ SSH إلى الجهاز الآخر ، ثم TCP إلى UDP/53 على الطرف الآخر.
عادةً ، يمكنك القيام بذلك باستخدام openvpn.
ولكن هنا ، سنفعل ذلك بأدوات أكثر بساطة ، فقط opensh و netcat.

في نهاية تلك الصفحة ، هناك تعليق آخر مع الإشارة إلى " socat " ،
يتم الوصول إلى UDP/DNS نفسه مع ،

جانب الخادم: socat tcp4-listen:5353,reuseaddr,fork UDP:nameserver:53
جانب العميل: socat udp4-listen:53,reuseaddr,fork tcp:localhost:5353

راجع أمثلة socat للمزيد.

24
nik

يدعم SSH (على الأقل OpenSSH) شبكات VPN بسيطة. باستخدام الخيار -w أو Tunnel في عميل ssh ، يمكنك إنشاء جهاز tun في كلا الطرفين ، والذي يمكن استخدامه لإعادة توجيه أي نوع من حركة مرور IP. (راجع أيضًا Tunnel في الصفحة اليدوية لـ ssh_config(5) .) لاحظ أن هذا يتطلب OpenSSH (وربما امتيازات الجذر) في كلا الطرفين.

20
grawity

أو يمكنك ببساطة استخدام ssf (الذي تم تصميمه للتعامل مع حالة الاستخدام هذه) ، باستخدام أمر بسيط:


جانب العميل:

#>./ssfc -U 53:192.168.1.1:53 server.foo.com

يعيد هذا الأمر توجيه المنفذ المحلي 53 (dns) إلى 192.168.1.1 المنفذ 53 ، من خلال نفق آمن بين المضيف المحلي و server.foo.com.


ستحتاج إلى خادم ssf (بدلاً من - أو بجوار - خادم ssh الخاص بك):

#>./ssfs

بالمناسبة ، يعمل كل من جانب العميل والخادم من ssf على Windows/Linux/Mac. هذا تطبيق userland ، لذلك لا تحتاج إلى tun/tap أو VPN.

لإعادة توجيه المنفذ 53 ، ستحتاج إلى امتيازات إدارية - بغض النظر عن الأداة التي تستخدمها.

لمزيد من المعلومات أو التفاصيل أو استخدام الحالة أو التنزيل: https://securesocketfunneling.github.io/ssf/

14
ssf-developers

لم أستطع الحصول على nc للعمل مع SNMP ، لأن عملاء SNMP يواصلون اختيار منفذ UDP مصدر جديد ، ويمكن أن يكون العديد منهم نشطًا مرة واحدة.

بدلاً من ذلك ، لقد كتبت منشورًا يصف كيفية القيام بذلك باستخدام socat في هذا المنشور ، باستخدام SNMP كمثال. بشكل أساسي ، باستخدام مطرافين ، بدءًا من نظرة عامة:

overview

المحطة الأولى:

client$ ssh -L 10000:localhost:10000 server
server$ socat -T10 TCP4-LISTEN:10000,fork UDP4:switch:161

يؤدي هذا إلى إنشاء إعادة توجيه SSH لـ TCP المنفذ 10000 وتشغيل socat على الخادم. لاحظ كيف يتم ذكر عنوان IP الخاص بالمحول في سطر أوامر socat باسم "رمز التبديل".

المحطة الثانية:

client$ Sudo socat UDP4-LISTEN:161,fork TCP4:localhost:10000

أن يضع socat على العميل. يجب أن تفعل ذلك.

9
Peter V. Mørch

يعد VPN حلًا أفضل إذا كان لديك وصول إلى منفذ UDP.

إذا كان لديك وصول فقط إلى منفذ TCP SSH ، فإن نفق SSH يكون جيدًا مثل VPN ، على الأقل من أجل ping و تراجع الحزمة.

4
Michael