هل تبحث عن telnet على RHEL 8؟ جرب nc

نشرت: 2022-05-02

Telnet هو بروتوكول شبكة يستخدم للوصول عن بعد إلى جهاز كمبيوتر ويوفر اتصالًا ثنائي الاتجاه قائم على النص. لذلك أنت بحاجة إلى خادم وعميل telnet للتحدث مع بعضهما البعض.

Telnet هي إحدى أدوات Linux / Windows المساعدة الشهيرة التي خدمت غرضها منذ فترة طويلة.

تتمثل إحدى المشكلات الرئيسية في telnet في الأنظمة الحديثة في أنها غير آمنة. تحدث جميع الاتصالات في telnet بنص عادي ، وتكون كل حركة مرور الشبكة غير مشفرة. بشكل أساسي ، يمكن لأي شخص لديه إمكانية الوصول والأدوات المناسبة التطفل على حركة مرور الشبكة لقراءة حركة المرور هذه. على هذا النحو ، لا تأتي معظم أنظمة تشغيل Linux الحديثة مع telnet مثبتة مسبقًا ، ويوصي البعض الآخر بعدم استخدامها.

مع ظهور بروتوكول SSH أو بروتوكول Secure Shell ، والذي يعد أكثر من مجرد بديل مشفر لـ telnet ، أصبح استخدام telnet للغرض المقصود منه قديمًا. ولكن هناك استخدام بديل لـ telnet لا يزال يستخدمه العديد من مسؤولي النظام وعشاق التكنولوجيا ، وهو التحقق من اتصال منافذ TCP البعيدة.

يمكن للمرء ببساطة التحقق مما إذا كان منفذ TCP البعيد يستمع ويستجيب بشكل صحيح باستخدام الأمر telnet. يوضح المقتطف أدناه كيف يمكننا التحقق مما إذا كان google.com يعمل عن طريق التحقق من اتصال HTTP/HTTPS .

 $ telnet google.com 80 Trying 142.250.183.206... Connected to google.com. Escape character is '^]'. ^] telnet> quit Connection closed. $ $ telnet google.com 443 Trying 142.250.183.206... Connected to google.com. Escape character is '^]'. ^] telnet> quit Connection closed. $

سيتصرف منفذ TCP غير المفتوح أو الذي يمكن الوصول إليه كما هو موضح أدناه عند التحقق منه باستخدام telnet :

 $ telnet google.com 22 Trying 142.250.193.174... ^C $

هذا يجعل استكشاف مشكلات الاتصال بالشبكة أمرًا سهلاً بالإضافة إلى أوامر ping أو traceroute أو tracepath و netstat وما إلى ذلك.

إذا كنت تستخدم RHEL 8 (أو حتى الإصدارات الأقدم من RHEL / CentOS) ، فلديك خيار استخدام nc (أو Ncat أو Network Connector) ، والذي يدعم العديد من الخيارات المتعلقة بتشخيص الشبكة. سنناقش كيفية تثبيت هذه الأداة واستخدامها على RHEL8 والأنظمة المماثلة.

ما هو nc؟

nc (أو Ncat) هي أداة سطر أوامر شائعة الاستخدام للأغراض العامة لقراءة البيانات وكتابتها وإعادة توجيهها وتشفيرها عبر الشبكة. تمت كتابته في الأصل لمشروع nmap ، وهناك الآن العديد من تطبيقات Netcat المتاحة. إنه يعمل مع كل من TCP و UDP عبر IPv4 و IPv6 ويوفر حالات استخدام محتملة غير محدودة.

فيما يلي بعض الميزات الرئيسية لأداة nc :

  • القدرة على ncats معًا
  • إعادة توجيه منافذ TCP و UDP و SCTP إلى مواقع أخرى
  • تشفير الاتصال بدعم SSL
  • دعم الوكيل عبر SOCK4 / 5 أو وكلاء HTTP (بما في ذلك المصادقة)
  • يدعم أنظمة أساسية متعددة ، بما في ذلك Windows و Linux و macOS

تركيب nc

nc متاح كجزء من المستودعات الافتراضية في أنظمة RHEL. لتثبيته على نظام RHEL 7 ، ما عليك سوى إصدار الأمر التالي على الجهاز:

 $ sudo yum install -y nc

بالنسبة لنظام RHEL 8 ، يمكنك استخدام dnf على النحو التالي:

 $ sudo dnf install -y nc

تحقق من اتصال TCP

على الرغم من أن nc تقدم مجموعة من الميزات التي تدعم عددًا من حالات الاستخدام عبر التطبيقات ، إلا أن أحد هذه الميزات الشائعة هو أثناء استكشاف أخطاء الشبكة وإصلاحها بدلاً من telnet .

يمكن أن تظهر nc ما إذا كان يمكنك الوصول إلى منفذ TCP. ها هي البنية:

 $ nc -vz <IP/DNS> <Port>

على سبيل المثال ، إذا كنت أرغب في التحقق مما إذا كان بإمكاني الوصول إلى Geekflare عبر http أو https . يمكنني التحقق من استخدام nc كما هو موضح أدناه (المنفذ 80 لـ http بينما 443 لـ https ):

 $ nc -vz geekflare.com 80 Ncat: Version 7.70 ( https://nmap.org/ncat ) Ncat: Connected to 104.26.11.88:80. Ncat: 0 bytes sent, 0 bytes received in 0.02 seconds. $ $ nc -vz geekflare.com 443 Ncat: Version 7.70 ( https://nmap.org/ncat ) Ncat: Connected to 104.26.10.88:443. Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds. $

وبالمثل ، سيعرض المنفذ غير القابل للوصول أو المحظور إخراجًا مثل (يتم التحقق من عناوين متعددة كنقاط Geekflare DNS إلى عدة IPs):

 $ nc -vz geekflare.com 22 Ncat: Version 7.70 ( https://nmap.org/ncat ) Ncat: Connection to 172.67.70.213 failed: Connection timed out. Ncat: Trying next address... Ncat: Connection to 104.26.11.88 failed: Connection timed out. Ncat: Trying next address... Ncat: Connection to 104.26.10.88 failed: Connection timed out. Ncat: Trying next address... Ncat: Connection to 2606:4700:20::681a:a58 failed: Network is unreachable. Ncat: Trying next address... Ncat: Connection to 2606:4700:20::681a:b58 failed: Network is unreachable. Ncat: Trying next address... Ncat: Network is unreachable. $ $ dig geekflare.com +short 104.26.10.88 172.67.70.213 104.26.11.88 $

تحقق من اتصال UDP

يمكن لـ telnet التحقق من الاتصال بمنفذ TCP بعيد فقط بينما يسمح لك nc بالتحقق من اتصال TCP وكذلك اتصال UDP.

يمكن لـ nc ببساطة إرسال حزم UDP بدلاً من حزم TCP الافتراضية باستخدام:

 $ nc -vzu <IP/DNS> <Port>

لكن UDP هو بروتوكول بدون جلسة ، على عكس TCP ، لذلك لا يمكنك تأكيد اتصال UDP من طرف إلى طرف في جميع السيناريوهات الممكنة فقط عن طريق إرسال حزم UDP من طرف واحد كما لم ترسل عملية الاستماع على الطرف البعيد بعض الردود ، لن يكون nc قادرًا على الحكم على ما إذا كانت الحزمة المرسلة قد وصلت إلى الوجهة أم لا. لكن nc يقدم بديلاً لتحديد اتصال UDP من طرف إلى طرف عن طريق تشغيل مستمع UDP ، بافتراض أن لديك وصولاً مناسبًا إلى CLI على الخادم البعيد.

لذا ، بافتراض أنك بحاجة إلى التحقق من اتصال UDP بين اثنين من مضيفي Linux لـ DNS باستخدام nc ، فإن الطريقة البسيطة للقيام بذلك هي تشغيل خادم nc للاستماع على المنفذ المطلوب:

 $ sudo nc -ul <Port>

بالنسبة إلى DNS ، نحتاج إلى التحقق من المنفذ 53 الذي سيجعل الأمر أعلاه على النحو التالي:

 $ nc -ul 53

في نهاية العميل ، ستحتاج إلى بدء عملية nc أخرى ترسل حزم UDP إلى الخادم:

 $ nc -u <IP/DNS> <Port>

الذي من شأنه أن يجعل أمرنا:

 $ nc -u <IP/DNS> 53

بالنظر إلى عدم وجود شيء يحظر حركة مرور UDP للمنفذ 53 بين هذين الجهازين ، يجب أن يكون كل ما تكتبه وتدخله على جهاز واحد مرئيًا على المضيفين الآخرين مثل الدردشة ثنائية الاتجاه. إذا لم يكن الأمر كذلك ، فإن بعض جدران الحماية تمنع الاتصال بين هذين النظامين.

يعمل نموذج الخادم والعميل الذي يستخدم nc بشكل لا تشوبه شائبة مع هذه الأنواع من فحوصات الاتصال البسيطة بين المضيفين. مثل فحص UDP أعلاه ، يمكن لـ nc أيضًا الاستماع إلى حزم TCP على منفذ معين:

 $ sudo nc -l <Port>

في نهاية العميل ، يمكنك عادةً إرسال حزم TCP للتحقق من الاتصال:

 $ nc <IP/DNS> <Port>

طريقة الخادم / العميل nc أعلاه غير مطلوبة في حالة اتصالات TCP (على عكس UDP) لأنها بروتوكول مهيأ للاتصال ويعمل مع إقرارات. أي عملية استماع تعمل على TCP سوف تستجيب مباشرة لحزم nc TCP.

ملخص

تلخص هذه المقالة كيف تقف الأداة المساعدة nc كبديل مباشر لـ telnet في أنظمة Linux الحديثة بقدر ما يذهب التحقق من اتصال المنفذ ويوفر المزيد من القوة للمستخدم النهائي في تشخيص مشكلات الشبكة وحلها.

يمكن الوصول إلى تعليمات nc باستخدام الأمر nc -h :

 $ nc -h Ncat 7.70 ( https://nmap.org/ncat ) Usage: ncat [options] [hostname] [port] Options taking a time assume seconds. Append 'ms' for milliseconds, 's' for seconds, 'm' for minutes, or 'h' for hours (eg 500ms). -4 Use IPv4 only -6 Use IPv6 only -U, --unixsock Use Unix domain sockets only -C, --crlf Use CRLF for EOL sequence -c, --sh-exec <command> Executes the given command via /bin/sh -e, --exec <command> Executes the given command --lua-exec <filename> Executes the given Lua script -g hop1[,hop2,...] Loose source routing hop points (8 max) -G <n> Loose source routing hop pointer (4, 8, 12, ...) -m, --max-conns <n> Maximum <n> simultaneous connections -h, --help Display this help screen -d, --delay <time> Wait between read/writes -o, --output <filename> Dump session data to a file -x, --hex-dump <filename> Dump session data as hex to a file -i, --idle-timeout <time> Idle read/write timeout -p, --source-port port Specify source port to use -s, --source addr Specify source address to use (doesn't affect -l) -l, --listen Bind and listen for incoming connections -k, --keep-open Accept multiple connections in listen mode -n, --nodns Do not resolve hostnames via DNS -t, --telnet Answer Telnet negotiations -u, --udp Use UDP instead of default TCP --sctp Use SCTP instead of default TCP -v, --verbose Set verbosity level (can be used several times) -w, --wait <time> Connect timeout -z Zero-I/O mode, report connection status only --append-output Append rather than clobber specified output files --send-only Only send data, ignoring received; quit on EOF --recv-only Only receive data, never send anything --allow Allow only given hosts to connect to Ncat --allowfile A file of hosts allowed to connect to Ncat --deny Deny given hosts from connecting to Ncat --denyfile A file of hosts denied from connecting to Ncat --broker Enable Ncat's connection brokering mode --chat Start a simple Ncat chat server --proxy <addr[:port]> Specify address of host to proxy through --proxy-type <type> Specify proxy type ("http" or "socks4" or "socks5") --proxy-auth <auth> Authenticate with HTTP or SOCKS proxy server --ssl Connect or listen with SSL --ssl-cert Specify SSL certificate file (PEM) for listening --ssl-key Specify SSL private key (PEM) for listening --ssl-verify Verify trust and domain name of certificates --ssl-trustfile PEM file containing trusted SSL certificates --ssl-ciphers Cipherlist containing SSL ciphers to use --ssl-alpn ALPN protocol list to use. --version Display Ncat's version information and exit See the ncat(1) manpage for full options, descriptions and usage examples $

لمزيد من المعلومات التفصيلية حول الأمر nc ، ارجع إلى صفحة الدليل الخاصة به.

 $ man nc