RHEL 8'de telnet mi arıyorsunuz? nc'yi deneyin
Yayınlanan: 2022-05-02Telnet, bir bilgisayara uzaktan erişmek için kullanılan bir ağ protokolüdür ve iki yönlü metin tabanlı iletişim sağlar. Yani birbirinizle konuşmak için bir telnet sunucusuna ve istemcisine ihtiyacınız var.
Telnet, uzun süredir amacına hizmet eden popüler Linux/Windows yardımcı programlarından biridir.
Modern sistemlerde telnet ile ilgili büyük bir sorun, güvenli olmamasıdır. Telnet'teki tüm iletişim düz metin olarak gerçekleşir ve tüm ağ trafiği şifrelenmez. Esasen, uygun erişime ve araçlara sahip herkes bu trafiği okumak için ağ trafiğini gözetleyebilir. Bu nedenle, çoğu modern Linux işletim sistemi önceden yüklenmiş telnet ile gelmez ve diğerleri bunu kullanmamanızı önerir.
Telnet için şifreli bir yedekten daha fazlası olan SSH veya Secure Shell protokolünün ortaya çıkmasıyla, telnet'in amaçlanan amacı için kullanılmasının modası çoktan geçmiştir. Ancak, birçok sistem yöneticisinin ve teknoloji meraklısının hala kullandığı, uzak TCP bağlantı noktalarının bağlantısını kontrol etmek için alternatif bir telnet kullanımı var.
Telnet komutunu kullanarak uzak TCP bağlantı noktasının dinlediğini ve doğru şekilde yanıt verdiğini kontrol edebilirsiniz. Aşağıdaki pasaj, HTTP/HTTPS
bağlantısını kontrol ederek google.com
durumda olup olmadığını nasıl kontrol edebileceğimizi gösterir.
$ 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. $
Açık veya erişilebilir olmayan bir TCP bağlantı noktası telnet
ile kontrol edildiğinde aşağıdaki gibi davranır:
$ telnet google.com 22 Trying 142.250.193.174... ^C $
Bu, ping
, traceroute
veya tracepath
, netstat
vb. komutlarla birlikte basit ağ bağlantısı sorunlarının giderilmesini kolaylaştırır.
RHEL 8 (veya hatta RHEL/CentOS'un daha eski sürümlerini) kullanıyorsanız, ağ tanılamayla ilgili birçok seçeneği destekleyen nc (veya Ncat veya Ağ Bağlayıcı) kullanma seçeneğiniz vardır. Bu aracın RHEL8 ve benzeri sistemlerde nasıl kurulacağını ve kullanılacağını tartışacağız.
nc nedir?
nc (veya Ncat), bir ağ üzerinden verileri okumak, yazmak, yeniden yönlendirmek ve şifrelemek için kullanılan popüler bir genel amaçlı komut satırı aracıdır. Başlangıçta nmap
projesi için yazılmıştı, şimdi birden fazla Netcat uygulaması mevcut. IPv4 ve IPv6 genelinde hem TCP hem de UDP ile çalışır ve sınırsız potansiyel kullanım durumları sağlar.
Aşağıda nc
yardımcı programının başlıca özelliklerinden bazıları verilmiştir:
-
ncats
birbirine zincirleme yeteneği - TCP, UDP ve SCTP bağlantı noktalarının diğer sitelere yeniden yönlendirilmesi
- SSL desteği ile iletişimi şifreleyin
- SOCK4/5 veya HTTP proxy'leri aracılığıyla proxy desteği (kimlik doğrulama dahil)
- Windows, Linux ve macOS dahil olmak üzere birden çok platformu destekler
nc'yi yükleme
nc
, RHEL sistemlerinde varsayılan depoların bir parçası olarak mevcuttur. RHEL 7 sistemine kurmak için terminalde aşağıdaki komutu vermeniz yeterlidir:
$ sudo yum install -y nc
RHEL 8 sistemi için dnf
şu şekilde kullanabilirsiniz:
$ sudo dnf install -y nc
TCP Bağlantısını Kontrol Edin
nc
, uygulamalar arasında bir dizi kullanım durumunu destekleyen bir dizi özellik sunsa da, yaygın olanlardan biri telnet
yerine ağ sorunlarını giderme sırasındadır.
nc
, bir TCP bağlantı noktasına ulaşıp ulaşamayacağınızı gösterebilir. İşte sözdizimi:
$ nc -vz <IP/DNS> <Port>
Örnek olarak, Geekflare'e http
veya https
üzerinden ulaşıp ulaşamayacağımı kontrol etmek istersem. Aşağıda gösterildiği gibi nc
kullanarak bunu kontrol edebilirim (port 80
http
, 443
ise https
içindir):
$ 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. $
Benzer şekilde, erişilemeyen veya engellenen bir bağlantı noktası aşağıdaki gibi bir çıktı gösterecektir (birden çok adres, Geekflare DNS birden çok IP'ye işaret ettiğinden kontrol edilir):
$ 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 Bağlantısını Kontrol Edin
telnet
yalnızca uzak bir TCP bağlantı noktasıyla iletişimi kontrol edebilirken nc
, TCP'yi ve UDP bağlantısını kontrol etmenize izin verir.
nc
, aşağıdakileri kullanarak varsayılan TCP paketleri yerine UDP paketleri gönderebilir:

$ nc -vzu <IP/DNS> <Port>
Ancak UDP, TCP'den farklı olarak oturumsuz bir protokoldür, bu nedenle, uzak uçtaki dinleme işlemi göndermedikçe, yalnızca bir uçta UDP paketleri göndererek olası tüm senaryolarda uçtan uca UDP bağlantısını onaylayamazsınız. bazı yanıtlar, nc
gönderilen paketin hedefe ulaşıp ulaşmadığını yargılayamaz. Ancak nc
, uzak sunucuda CLI'ye uygun erişiminiz olduğunu varsayarak, bir UDP dinleyicisi başlatarak uçtan uca UDP bağlantısını belirlemek için bir alternatif sunar.
Bu nedenle, nc
kullanarak DNS için iki Linux ana bilgisayarı arasındaki UDP bağlantısını kontrol etmeniz gerektiğini varsayarsak, bunu yapmanın basit bir yolu, gerekli bağlantı noktasında nc
sunucusunu dinlemeyi başlatmak olacaktır:
$ sudo nc -ul <Port>
DNS için, yukarıdaki komutu şu şekilde yapacak olan 53
numaralı bağlantı noktasını kontrol etmemiz gerekir:
$ nc -ul 53
İstemci tarafında, sunucuya UDP paketleri gönderen başka bir nc
işlemi başlatmanız gerekir:
$ nc -u <IP/DNS> <Port>
Hangisi bizim komutumuzu yapar:
$ nc -u <IP/DNS> 53
Bu iki makine arasındaki 53
numaralı bağlantı noktası için UDP trafiğini engelleyen hiçbir şey olmadığı göz önüne alındığında, bir makinede ne yazarsanız ve girerseniz diğer ana bilgisayarlarda iki yönlü sohbet gibi görünmelidir. Değilse, bazı güvenlik duvarları bu iki sistem arasındaki bağlantıyı engelliyor.
nc
kullanan sunucu ve istemci modeli, ana bilgisayarlar arasında bu tür basit bağlantı kontrolleri için kusursuz çalışır. Yukarıdaki UDP kontrolü gibi, nc
de belirli bir bağlantı noktasındaki TCP paketlerini dinleyebilir:
$ sudo nc -l <Port>
İstemci tarafında, bağlantıyı kontrol etmek için normalde TCP paketleri gönderebilirsiniz:
$ nc <IP/DNS> <Port>
Yukarıdaki sunucu/istemci nc
yöntemi, TCP bağlantılarında (UDP'den farklı olarak) bağlantı yönelimli bir protokol olduğundan ve bildirimlerle çalıştığından gerekli değildir. TCP üzerinde çalışan herhangi bir dinleme işlemi, nc
TCP paketlerine doğrudan yanıt verecektir.
Özet
Bu makale, nc
yardımcı programının modern Linux sistemlerinde bağlantı noktası bağlantısını kontrol etme konusunda telnet
doğrudan yerine nasıl geçtiğini ve ağ sorunlarını teşhis etme ve çözmede son kullanıcıya çok daha fazla güç sağladığını özetlemektedir.
nc
yardımına nc -h
komutu kullanılarak erişilebilir:
$ 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
komutu hakkında daha ayrıntılı bilgi için kılavuz sayfasına bakın.
$ man nc