IP-Multiserv isIP-Multiserv a small set of Internet servers packed into a single binary executable file intented to be used on embedded Linux systems. The set of servers in IP-Multiserv is configurable at compile time, in order to insert only the useful ones for the targetted application.

IP-Multiserv was designed with requirements for a small embedded system in mind. The servers are not full featured with bells and whistles, nor bullet proof against all denial-of-service attacks. Their goal is to provide correct and robust behavior on small systems in industrial environments.


At present the following servers are implemented into IP-Multiserv:

  • Chargen (port 19 TCP/IP and UDP/IP): a very simple character generator that sends a repetitive pattern to the client. Useful for network supervision and debugging. The Chargen protocol is described in RFC 864.
  • Daytime (port 13 TCP/IP and UDP/IP): the Daytime server sends to the client a character string giving a human readable description of time. Options allow to choose between local or UTC time, and to format the time string as desired. The Daytime protocol is described in RFC 867.
  • Discard (port 9 TCP/IP and UDP/IP): This is a kind of network version of the /dev/null black hole. Every bit sent to this server is silently discarded. The Discard protocol is described in RFC 863.
  • Echo (port 7 TCP/IP and UDP/IP): The Echo server is a kind of mirror on the network ; every UDP datagram, or TCP segment received by the server is returned back to the sender. Useful for network testing and debugging, but can be abused in a Denial-of-Service attack. The Echo procotol is described in RFC 862.
  • Ftp (port 21 on TCP/IP): The File Transfert Protocol is an important service, even for small embedded systems as it allows operations from remote host with a file manager. This server is designed to be ran by root, it does authentication directly with /etc/passwd and /etc/shadow files, because on small embedded systems the PAM mechanism is rarely present. After authentication, the service goes into the home directory of the user and takes its UID/GID. The server can accept anonymous login ; in this case it uses a chroot() into a specific directory. The FTP protocol is described in RFC 959.
  • Qotd (port 17 TCP/IP and UDP/IP): « Quote Of The Day » is a very simple protocol to send diary information to clients. The server send back to its client a sentence read into a file, or obtained from its command line. If coming from a file, the sentence is re-read each day. The Qotd procotol is described in RFC 865.
  • Telnet (port 23 TCP/IP): Telnet is a famous protocol allowing remote login into a system. This implementation is a minimal one, without any sophisticated option. A command line option allows to choose the login process. To give access with normal authentication, use /bin/login, to give access without any authentication (technical support on deeply embedded system) use /bin/sh. The Telnet protocol himself is defined in RFC 854, but options are described in various RFC. We used RFC 857 and RFC 858.
  • Tftp (port 69 UDP/IP): The Trivial File Transfert Protocol is a server that permits downloading and uploading of file into the system. TFTP does not support any authentication mechanism or information transfert (list of directory for example) as FTP does. Options allow to choose the User-ID and Group-ID used by the server process to access files, thus allowing various configuration from « not any access control » to « only access to world-readable files ». The TFTP protocol is described in RFC 1350.
  • Time (port 37 TCP/IP and UDP/IP): This server sends back to the client a binary representation of current GMT time : the number of seconds elapsed since 1900 january 1st at 00h00. This tool permits automatic configuration of differents systems on the same local network. The Time protocol is described in RFC 868.

The next to come are probably: NTP (Network Time), DHCP (Dynamic Host Configuration), and SNMP (Simple Network Management).

IP-Multiserv is released under the Gnu General Public License (GPL)


Download the source code of IP-multiserv:

Previous releases:


  • v.0.4.0 – 2012/07/18 – CB – Correction of the configuration script for new dialog versions.
  • v.0.3.0 – 2004/07/08 – CB – Improved configuration script with dialog menus. Added connection logging in FTP server. Added a small udp_client program to test UDP/IP services.
  • v.0.2.6 – 2004/02/07 – CB – FTP server: Added user authentication with /etc/passwd and /etc/shadow.
  • v.0.2.5 – 2004/02/06 – CB – FTP server: Intensive check, eliminated some bugs. Added RNFR and RNTO commands.
  • v.0.2.4 – 2004/02/04 – CB – FTP server : Added glob() functionality for LIST/NLST Added TYPE (I/A) transfert Added MODE and STRUCT (noop) commands Added RETR, STOR, STOU, APPE commands Added SIZE and MDTM Started some debugging and stress tests.
  • v.0.2.3 – 2004/02/03 – CB – FTP server: Implemented HELP, PASV, PORT, and LIST/NLST (with -a and -l options)
  • v.0.2.2 – 2004/01/31 – CB – Started implementation of FTP server. Only some commands: USER, PASS, NOOP, ALLO, SYST, PWD, XPWD, CWD, XCWD, CDUP, XCDP, MKD, XMKD, RMD, XRMD, DELE.
  • v.0.2.1 – 2004/01/26 – CB – Better Makefile
  • v.0.2.0 – 2004/01/25 – CB – Created a web site for IP-multiserv. First public release.
  • v.0.1.7 – 2004/01/24 – CB – Added logging functionalities. Cleaned up debugging routines. Added a configuration script using dialog interface tool.
  • v.0.1.6 – 2004/01/21 – CB – Cleaned command line option parsing. Started size optimization. Created logo.xcf, added logo.gif.
  • v.0.1.5 – 2004/01/20 – CB – Implementation of the Qotd protocol (rfc.865)
  • v.0.1.4 – 2004/01/19 – CB – Implementation of the Telnet protocol (rfc.854) Started gathering usual files: INSTALL, README, LICENCE…
  • v.0.1.3 – 2004/01/18 – CB – Implementation of the Character Generator protocol (rfc.864)
  • v.0.1.2 – 2004/01/17 – CB – Implementation of Daytime protocol (rfc.867), Time protocol (rfc.868) and Discard protocol (rfc.863).
  • v.0.1.1 – 2004/01/12 – CB – Implementation of echo protocol (rfc.862). Cleaned the interface between multiserv and the services.
  • v.0.1.0 – 2004/01/02 – CB – First implementation of multiserv, with TFTP server only (rfc.1350)


Some useful links in the same area as IP-multiserv

  • BusyBox implements most of the Unix tools in a single binary executable file. Very useful for small or embedded Linux systems.
  • TinyLogin offers the authentication and connection tools for embedded systems.
  • uClibC is a very clean and small implementation of the C library. Can be very interesting for developpers working on small systems.
  • The RFC (Request For Comments) are standards documents and notes describing the various Internet protocols.
  • The GPL is the license under which IP-multiserv is released.

3 Réponses

  1. Michel Gricourt dit :

    Je travaille sur ubuntu 9.04 (jaunty) que j’utilise comme IDE pour la construction de nos systèmes embarqués.
    Je voudrais intégrer ip-multisrv à notre plate forme RT (linux xénomai 2.4.7) actuelle pour utiliser FTP.
    J’ai pour cela chargé et’ détaré’ la version ‘ip-multiserv-0.3.0’ dans mon home.
    En suivant les recommandations de INSTALL, la cde ‘make config ‘ se boque sur le srcipt ‘configuration’.
    Il semble que ce soit l’activation de l’utilitaire dialog qui bloque…
    La recompilation de ce programme n’a rien donné.
    J’ai rechargé et executé les versions 0.2.0 et 0.2.4 d’ip-multiserv et constaté le même pb.
    Peut être auriez-vous une solution ?
    En vous remerciant à l’avance

    • cpb dit :

      Bonjour, il y a effectivement eu une modification dans le programme dialog depuis les premières versions de IP-multiserv.

      Je viens de mettre en ligne une version qui doit en principe corriger le problème.

      Je n’ai pas maintenu récemment ce logiciel car une bonne partie des services sont maintenant disponibles directement dans Busybox (y compris ftpd, même si son emploi est un peu différent car il doit être lancé par inetd).


  2. Michel Gricourt dit :

    Bonjour, la version 0.4.0 fonctionne correctement.
    En vous remerciant pour votre promptitude.

URL de trackback pour cette page