Mencari telnet di RHEL 8? Coba nc
Diterbitkan: 2022-05-02Telnet adalah protokol jaringan yang digunakan untuk mengakses komputer dari jarak jauh dan menyediakan komunikasi berbasis teks dua arah. Jadi Anda memerlukan server telnet dan klien untuk berbicara satu sama lain.
Telnet adalah salah satu utilitas Linux/Windows populer yang telah lama melayani tujuannya.
Masalah utama dengan telnet pada sistem modern adalah tidak aman. Semua komunikasi di telnet terjadi dalam teks biasa, dan semua lalu lintas jaringan tidak terenkripsi. Pada dasarnya siapa pun dengan akses dan alat yang tepat dapat mengintip lalu lintas jaringan untuk membaca lalu lintas ini. Dengan demikian, sebagian besar sistem operasi Linux modern tidak dilengkapi dengan telnet yang sudah diinstal sebelumnya, dan yang lain menyarankan untuk tidak menggunakannya.
Dengan munculnya protokol SSH atau Secure Shell, yang lebih dari sekadar pengganti terenkripsi untuk telnet, penggunaan telnet untuk tujuan yang dimaksudkan telah lama ketinggalan zaman. Tetapi ada penggunaan telnet alternatif yang masih digunakan oleh banyak administrator sistem dan penggemar teknologi, yaitu untuk memeriksa konektivitas port TCP jarak jauh.
Seseorang dapat dengan mudah memeriksa apakah port TCP jarak jauh mendengarkan dan merespons dengan benar menggunakan perintah telnet. Cuplikan di bawah ini menunjukkan bagaimana kami dapat memeriksa apakah google.com
aktif dan berfungsi dengan memeriksa konektivitas 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. $
Port TCP yang tidak terbuka atau tidak dapat diakses akan berperilaku seperti di bawah ini ketika diperiksa dengan telnet
:
$ telnet google.com 22 Trying 142.250.193.174... ^C $
Ini membuat pemecahan masalah konektivitas jaringan sederhana menjadi mudah dalam kombinasi dengan perintah ping
, traceroute
atau tracepath
, netstat
dll.
Jika Anda menggunakan RHEL 8 (atau bahkan versi RHEL/CentOS yang lebih lama), Anda memiliki opsi untuk menggunakan nc (atau Ncat atau Konektor Jaringan), yang mendukung banyak opsi terkait diagnostik jaringan. Kami akan membahas cara menginstal dan menggunakan alat ini di RHEL8 dan sistem serupa.
Apa itu nc?
nc (atau Ncat) adalah alat baris perintah tujuan umum yang populer untuk membaca, menulis, mengarahkan, dan mengenkripsi data di seluruh jaringan. Awalnya ditulis untuk proyek nmap
, sekarang ada beberapa implementasi Netcat yang tersedia. Ia bekerja dengan TCP dan UDP di IPv4 dan IPv6 dan menyediakan kasus penggunaan potensial tanpa batas.
Di bawah ini adalah beberapa fitur utama dari utilitas nc
:
- Kemampuan untuk mengikat
ncats
bersama-sama - Pengalihan port TCP, UDP, dan SCTP ke situs lain
- Enkripsi komunikasi dengan dukungan SSL
- Dukungan proxy melalui SOCK4/5 atau proxy HTTP (termasuk otentikasi)
- Mendukung banyak platform, termasuk Windows, Linux, dan macOS
Menginstal nc
nc
tersedia sebagai bagian dari repositori default di sistem RHEL. Untuk menginstalnya pada sistem RHEL 7, cukup jalankan perintah di bawah ini pada terminal:
$ sudo yum install -y nc
Untuk sistem RHEL 8, Anda dapat menggunakan dnf
sebagai:
$ sudo dnf install -y nc
Periksa Konektivitas TCP
Meskipun nc
menawarkan sejumlah fitur yang mendukung sejumlah kasus penggunaan di seluruh aplikasi, salah satu yang umum adalah selama pemecahan masalah jaringan menggantikan telnet
.
nc
dapat menunjukkan apakah Anda dapat mencapai port TCP. Berikut sintaksnya:
$ nc -vz <IP/DNS> <Port>
Sebagai contoh, jika saya ingin memeriksa apakah saya dapat menjangkau Geekflare melalui http
atau https
. Saya dapat memeriksanya menggunakan nc
seperti yang ditunjukkan di bawah ini (port 80
untuk http
sedangkan 443
untuk 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. $
Demikian pula, port yang tidak dapat dijangkau atau diblokir akan menampilkan output seperti (beberapa alamat diperiksa sebagai Geekflare DNS menunjuk ke beberapa IP):
$ 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 $
Periksa Konektivitas UDP
telnet
hanya dapat memeriksa komunikasi dengan port TCP jarak jauh sementara nc
memungkinkan Anda untuk memeriksa TCP serta konektivitas UDP.
nc
dapat dengan mudah mengirim paket UDP alih-alih paket TCP default menggunakan:

$ nc -vzu <IP/DNS> <Port>
Tetapi UDP adalah protokol tanpa sesi, tidak seperti TCP, sehingga Anda tidak dapat mengonfirmasi konektivitas UDP ujung ke ujung pada semua skenario yang mungkin hanya dengan mengirimkan paket UDP di satu ujung seperti kecuali proses mendengarkan di ujung jarak jauh mengirim beberapa tanggapan, nc
tidak akan dapat menilai apakah paket yang dikirim telah mencapai tujuan atau tidak. Tetapi nc
menawarkan alternatif untuk menentukan konektivitas UDP ujung ke ujung dengan meluncurkan pendengar UDP, dengan asumsi Anda memiliki akses yang tepat ke CLI di server jauh.
Jadi dengan asumsi Anda perlu memeriksa konektivitas UDP antara dua host Linux untuk DNS menggunakan nc
, cara sederhana untuk melakukannya adalah dengan meluncurkan server nc
mendengarkan pada port yang diperlukan:
$ sudo nc -ul <Port>
Untuk DNS, kita perlu memeriksa port 53
yang akan membuat perintah di atas sebagai:
$ nc -ul 53
Di sisi klien, Anda perlu meluncurkan proses nc
lain yang mengirimkan paket UDP ke server:
$ nc -u <IP/DNS> <Port>
Yang akan membuat perintah kami:
$ nc -u <IP/DNS> 53
Mengingat tidak ada yang menghalangi lalu lintas UDP untuk port 53
antara dua mesin ini, apa pun yang Anda ketik dan masukkan di satu mesin harus terlihat di host lain seperti obrolan dua arah. Jika tidak, beberapa firewall memblokir konektivitas antara kedua sistem ini.
Model server dan klien menggunakan nc
bekerja dengan sempurna untuk jenis pemeriksaan konektivitas sederhana ini antara host. Seperti pemeriksaan UDP di atas, nc
juga dapat mendengarkan paket TCP pada port yang diberikan:
$ sudo nc -l <Port>
Di ujung klien, Anda biasanya dapat mengirim paket TCP untuk memeriksa konektivitas:
$ nc <IP/DNS> <Port>
Metode nc
server/klien di atas tidak diperlukan dalam kasus koneksi TCP (tidak seperti UDP) karena merupakan protokol berorientasi koneksi dan bekerja dengan pengakuan. Setiap proses mendengarkan yang bekerja pada TCP akan langsung merespon paket nc
TCP.
Ringkasan
Artikel ini merangkum bagaimana utilitas nc
berdiri sebagai pengganti langsung untuk telnet
di sistem Linux modern sejauh memeriksa konektivitas port dan memberikan lebih banyak kekuatan kepada pengguna akhir dalam mendiagnosis dan menyelesaikan masalah jaringan.
nc
help dapat diakses menggunakan perintah 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 $
Untuk informasi lebih rinci tentang perintah nc
, lihat halaman manualnya.
$ man nc