Telnetet keres az RHEL 8-on? Próbáld ki az nc-t

A Telnet egy hálózati protokoll, amelyet a számítógép távoli elérésére használnak, és kétirányú szövegalapú kommunikációt biztosít. Tehát szükség van egy telnet szerverre és kliensre, hogy beszéljenek egymással.

A Telnet az egyik népszerű Linux/Windows segédprogram, amely régóta megfelel a céljának.

A telnet egyik fő problémája a modern rendszereken, hogy nem biztonságos. A Telnetben minden kommunikáció egyszerű szöveggel történik, és a hálózati forgalom titkosítatlan. Lényegében bárki, aki megfelelő hozzáféréssel és eszközökkel rendelkezik, lesni tudja a hálózati forgalmat, hogy elolvassa ezt a forgalmat. Mint ilyen, a legtöbb modern Linux operációs rendszerben nincs előre telepített telnet, mások pedig nem javasolják ennek használatát.

Az SSH vagy a Secure Shell protokoll megjelenésével, amely több, mint a telnet titkosított helyettesítője, a telnet rendeltetésszerű használata már régóta elavult. De van egy alternatív telnet is, amelyet sok rendszeradminisztrátor és technológiai rajongó továbbra is használ, vagyis a távoli TCP-portok csatlakoztathatóságának ellenőrzésére.

A telnet paranccsal egyszerűen ellenőrizheti, hogy a távoli TCP-port figyel-e és megfelelően válaszol-e. Az alábbi részlet bemutatja, hogyan ellenőrizhetjük, hogy a google.com működik-e a HTTP/HTTPS kapcsolat ellenőrzésével.

$ 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 nem nyitott vagy nem elérhető TCP-port az alábbiak szerint fog viselkedni, ha telnettel ellenőrizzük:

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

Ez megkönnyíti az egyszerű hálózati csatlakozási problémák hibaelhárítását a ping, traceroute vagy tracepath, netstat stb. parancsokkal kombinálva.

Ha RHEL 8-at (vagy az RHEL/CentOS még régebbi verzióit) használja, akkor lehetősége van az nc (vagy Ncat vagy Network Connector) használatára, amely számos hálózati diagnosztikával kapcsolatos lehetőséget támogat. Megbeszéljük, hogyan telepítsük és használjuk ezt az eszközt RHEL8 és hasonló rendszereken.

Mi az nc?

Az nc (vagy Ncat) egy népszerű, általános célú parancssori eszköz az adatok hálózaton keresztüli olvasására, írására, átirányítására és titkosítására. Eredetileg az nmap projekthez írták, ma már több Netcat implementáció is elérhető. TCP-vel és UDP-vel egyaránt működik IPv4 és IPv6 között, és korlátlan számú felhasználási lehetőséget biztosít.

Az alábbiakban bemutatjuk az nc segédprogram néhány főbb funkcióját:

  • Képes összeláncolni a macskákat
  • A TCP, UDP és SCTP portok átirányítása más webhelyekre
  • Kommunikáció titkosítása SSL támogatással
  • Proxy támogatás SOCK4/5 vagy HTTP proxykon keresztül (beleértve a hitelesítést is)
  • Több platformot támogat, beleértve a Windowst, a Linuxot és a macOS-t
  Mi az a LiDAR, és hogyan fog működni az iPhone-on?

Az nc telepítése

Az nc az RHEL rendszerek alapértelmezett adattárainak részeként érhető el. Az RHEL 7 rendszerre való telepítéséhez egyszerűen adja ki az alábbi parancsot a terminálon:

$ sudo yum install -y nc

Az RHEL 8 rendszerhez a dnf a következőképpen használható:

$ sudo dnf install -y nc

Ellenőrizze a TCP-kapcsolatot

Bár az nc számos olyan szolgáltatást kínál, amelyek számos alkalmazási esetet támogatnak, az egyik gyakori a hálózati hibaelhárítás során a telnet helyett.

Az nc megmutathatja, hogy el tud-e érni egy TCP-portot. Íme a szintaxis:

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

Például, ha szeretném ellenőrizni, hogy el tudom-e érni a etoppc.com-t http vagy https-en keresztül. Ellenőrizhetem, hogy az nc használatával az alábbiak szerint (a 80-as port a http-hez, míg a 443-as a https-hez tartozik):

$ nc -vz etoppc.com.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 etoppc.com.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.
$

Hasonlóképpen, egy nem elérhető vagy blokkolt port a következőképpen jelenik meg:

$ nc -vz etoppc.com.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 etoppc.com.com +short
104.26.10.88
172.67.70.213
104.26.11.88
$

Ellenőrizze az UDP-kapcsolatot

A telnet csak egy távoli TCP-porttal tudja ellenőrizni a kommunikációt, míg az nc lehetővé teszi a TCP- és az UDP-kapcsolat ellenőrzését.

Az nc egyszerűen küldhet UDP-csomagokat az alapértelmezett TCP-csomagok helyett a következő használatával:

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

De az UDP egy munkamenet nélküli protokoll, ellentétben a TCP-vel, ezért nem erősítheti meg a végpontok közötti UDP-kapcsolatot az összes lehetséges forgatókönyvben, pusztán úgy, hogy UDP-csomagokat küld az egyik végén, kivéve, ha a távoli végén a figyelési folyamat elküldi valamilyen választ, az nc nem tudja megítélni, hogy az elküldött csomag elérte-e a célt vagy sem. Az nc azonban alternatívát kínál a végpontok közötti UDP-kapcsolat meghatározására egy UDP-figyelő elindításával, feltéve, hogy megfelelő hozzáféréssel rendelkezik a távoli kiszolgálón lévő CLI-hez.

  Hogyan küldjünk BNB-t egy Metamask pénztárcába

Feltételezve tehát, hogy ellenőriznie kell az UDP-kapcsolatot két Linux-gazda között a DNS-hez az nc használatával, ennek egyszerű módja az lenne, ha elindítja az nc-kiszolgálót, amely figyeli a szükséges portot:

$ sudo nc -ul <Port>

DNS esetén ellenőriznünk kell az 53-as portot, amely a fenti parancsot a következőképpen adja:

$ nc -ul 53

A kliens oldalon el kell indítania egy másik nc-folyamatot, amely UDP-csomagokat küld a szervernek:

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

Ami a parancsunkat:

$ nc -u <IP/DNS> 53

Tekintettel arra, hogy semmi sem blokkolja az 53-as port UDP-forgalmát e két gép között, bármit begépel és beír az egyik gépen, láthatónak kell lennie a többi gépen, mint kétirányú csevegés. Ha nem, akkor néhány tűzfal blokkolja a kapcsolatot a két rendszer között.

Az nc-t használó szerver- és kliensmodell hibátlanul működik a gazdagépek közötti egyszerű kapcsolat-ellenőrzéseknél. A fenti UDP-ellenőrzéshez hasonlóan az nc is képes figyelni a TCP-csomagokat egy adott porton:

$ sudo nc -l <Port>

A kliens oldalon általában TCP-csomagokat küldhet a kapcsolat ellenőrzésére:

$ nc <IP/DNS> <Port>

A fenti szerver/kliens nc metódus nem szükséges TCP kapcsolatok esetén (ellentétben az UDP-vel), mivel ez egy kapcsolatorientált protokoll és nyugtákkal működik. Bármely TCP-n működő figyelési folyamat közvetlenül válaszol az nc TCP-csomagokra.

Összegzés

Ez a cikk összefoglalja, hogy az nc segédprogram hogyan helyettesíti közvetlenül a telnetet a modern Linux rendszerekben, ami a portkapcsolat ellenőrzését illeti, és sokkal nagyobb teljesítményt biztosít a végfelhasználók számára a hálózati problémák diagnosztizálásában és megoldásában.

Az nc help az nc -h paranccsal érhető el:

$ 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 (e.g. 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
$

Az nc paranccsal kapcsolatos részletesebb információkért tekintse meg a kézikönyv oldalát.

$ man nc