LX-SVS-INFO-telnetclient
Updated 9/13/10 12:16

Telnet-client - Debian

telnet wordt nauwelijks nog gebruikt als remote terminal. Je komt het nog wel tegen als je een switch of een router moet configureren of uitlezen. Maar ook dat toepassingsgebied verdwijnt, omdat bijna alle netwerktoestellen tegenwoordig voorzien zijn van een web-service.

De remote terminal emulatie via telnet is ook al een tiental jaren vervangen door ssh: secure shell. Zoals de naam het zegt is secure shell een veilig protocol. ssh voorziet in een SSL laag (secure sockets layer), tussen applicatie en TCP, zodat de datastroom tussen server en client niet meer leesbaar is door luistervinken en sniffers onderweg.


telnet verstuurt alle data ongecodeerd over het netwerk, ook paswoorden.

Waarom dan nog telnet?

Er is het belangrijk aspect van het netwerk-testen.
Met telnet kun je mail-servers, print-servers, ftp-servers, web-servers, zelfs samba servers en ssh servers testen. Je test vanop je eigen machine, of vanaf ergens anders. Met telnet kun je zien of er verbinding is op het socket (ip-address + port number) van de server.

  1. een echte telnet op een Dlink printserver

    $ telnet 192.168.0.200
    Trying 192.168.0.200...
    Connected to 192.168.0.200.
    Escape character is '^]'.


    ************************************
    * Welcome to D-Link Print Server *
    * Telnet Console *
    ************************************

    Server Name : DLINK300u_1_200
    Server Model : DP-300U
    F/W Version : 1.20
    MAC Address : 00 0F 3D 6E 04 EA
    Uptime : 14 days, 17:24:37

    Please Enter Password: ********

    [Main Menu]
    1 - Server Configuration
    2 - Port Configuration
    3 - TCP/IP Configuration
    4 - AppleTalk Configuration
    5 - Display Information
    6 - Tools
    7 - Save Configuration
    0 - Quit

    Enter Selection: 0
    Quit from Print Server Console, Good-bye.
    Connection closed by foreign host.

  2. we testen de lpd op een printserver

    $ telnet 172.16.1.253 515
    Trying 172.16.1.253...
    Connected to 172.16.1.253.
    Escape character is '^]'.
    ^]

    telnet> quit
    Connection closed.

    De syntax is: telnet <ip-address> <portnumber> waarbij je ip-address kunt vervangen door een fully qualified domain name, en port-number door de correcte service-name.

    Hier is het moeilijker om manueel de verbinding te verbreken: de ^] maak je op een belgisch toetsenbord door een combinatie van de toetsen <CTRL><ALT GR>< ] >
  3. we testen de hp-jetdirect service op een laserprinter

    $ telnet  10.0.1.214 9100
    Trying 10.0.1.214...
    Connected to 10.0.1.214.
    Escape character is '^]'.

    ^]

    telnet> quit
    Connection closed.

  4. we testen een service die niet werkt

    $ telnet 172.16.1.253 ssh
    Trying 172.16.1.253...
    telnet: Unable to connect to remote host: Connection refused

    $

    Ik had in het voorbeeld de protocolnaam "ssh" kunnen vervangen door poortnummer "22"

  5. een proxyservice op mijn eigen server

    $ telnet localhost 3128
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    LIST
    HTTP/1.0 400 Bad Request
    Server: squid/2.7.STABLE3
    Date: Mon, 13 Sep 2010 16:24:08 GMT
    Content-Type: text/html
    Content-Length: 1186
    Expires: Mon, 13 Sep 2010 16:24:08 GMT
    X-Squid-Error: ERR_INVALID_REQ 0
    X-Cache: MISS from intec.brussel.com
    X-Cache-Lookup: NONE from intec.brussel.com:3128
    Via: 1.0 intec.brussel.com:3128 (squid/2.7.STABLE3)
    Connection: close

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
    <TITLE>ERROR: The requested URL could not be retrieved</TITLE>
    <STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
    </HEAD><BODY>
    <H1>ERROR</H1>
    <H2>The requested URL could not be retrieved</H2>
    <HR noshade size="1px">
    <P>
    While trying to process the request:
    <PRE>
    LIST

    </PRE>
    <P>
    The following error was encountered:
    <UL>
    <LI>
    <STRONG>
    Invalid Request
    </STRONG>
    </UL>

    <P>
    Some aspect of the HTTP Request is invalid.  Possible problems:
    <UL>
    <LI>Missing or unknown request method
    <LI>Missing URL
    <LI>Missing HTTP Identifier (HTTP/1.0)
    <LI>Request is too large
    <LI>Content-Length missing for POST or PUT requests
    <LI>Illegal character in hostname; underscores are not allowed
    </UL>
    <P>Your cache administrator is <A HREF="mailto:webmaster">webmaster</A>.

    <BR clear="all">
    <HR noshade size="1px">
    <ADDRESS>
    Generated Mon, 13 Sep 2010 16:24:08 GMT by intec.brussel.com (squid/2.7.STABLE3)
    </ADDRESS>
    </BODY></HTML>
    Connection closed by foreign host.


    Door een verkeerd commando in te tikken (LIST) antwoordt de proxy-server met een error-page in HTML.
  6. mail-servers

    Bij sommige services kan je een stap verder gaan en direct het protocol intikken. Daartoe moet je wel de protocol primitives kennen. Als voorbeeld geven we SMTP en POP3. Simple Mail Tranfer Protocol wordt gebruikt om email te versturen, Post Office Protocol v3 wordt heel veel gebruikt om e-mail te ontvangen. Heel veel primitives moeten in hoofdletters worden ingegeven. Primitives bestaan meestal uit 4 characters.

    SMTP


    $ telnet 172.16.0.3 25

    Trying 172.16.0.3...
    Connected to 172.16.0.3.
    Escape character is '^]'.
    220 ares.intec-brussel.intra Microsoft ESMTP MAIL Service,
    Version: 6.0.3790.1830 ready at Mon, 3 Mar 2008 12:42:09 +0100

    HELO
    250 ares.intec-brussel.intra Hello [172.16.31.101]
    MAIL FROM: mannix@intecbrussel.intra
    250 2.1.0 mannix@intecbrussel.intra....Sender OK
    RCPT TO: milarepa@intecbrussel.intra
    250 2.1.5 milarepa@intecbrussel.intra
    DATA
    354 Start mail input; end with <CRLF>.<CRLF>
    Dit is de body van ons mailbericht.
    .
    250 2.6.0 <ARESHZlJ2HxYHLBQhEx00000034@ares.intec-brussel.intra> Queued mail for delivery
    QUIT
    221 2.0.0 ares.intec-brussel.intra Service closing transmission channel Connection closed by foreign host.

    POP3

    $ telnet 172.16.22.3 110
    Trying 172.16.22.3...
    Connected to 172.16.22.3.
    Escape character is '^]'.
    +OK Qpopper (version 4.0.5) at localhost starting. <7534.1204549069@localhost>
    USER ludo
    +OK Password required for ludo.
    PASS sdf12345
    +OK ludo has 0 visible messages (0 hidden) in 0 octets.
    STAT
    +OK 0 0
    LIST
    +OK 0 visible messages (0 octets)
    .
    DELE 1
    -ERR Message 1 does not exist.
    RETR 2
    -ERR Message 2 does not exist.
    QUIT
    +OK Pop server at localhost signing off.
    Connection closed by foreign host.

    In deze voorbeelden zie je ook de versie van de serversoftware die op de server draait.
  7. een webserver

    $ telnet localhost 80
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    quit
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>501 Method Not Implemented</title>
    </head><body>
    <h1>Method Not Implemented</h1>
    <p>quit to / not supported.<br />
    </p>
    <hr>
    <address>Apache/2.2.3 (Ubuntu) PHP/5.2.1 Server at w3w.linux800.be Port 80</address>
    </body></html>
    Connection closed by foreign host.

    Ook hier antwoordt de webserver met een error-pagina na het intikken van het verkeerde commando quit.
  8. samba server

    Een test van een samba server (dat kan ook op poort 445)

    $ telnet 172.16.0.15 139
    Trying 172.16.0.15...
    Connected to 172.16.0.15.
    Escape character is '^]'.
    ^]
    telnet> quit
    Connection closed.
    connection closed by foreign host.