1.\" Copyright (c) 1985, 1991, 1993, 1994 2.\" The Regents of the University of California. All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 12.\" 3. All advertising materials mentioning features or use of this software 13.\" must display the following acknowledgement: 14.\" This product includes software developed by the University of 15.\" California, Berkeley and its contributors. 16.\" 4. Neither the name of the University nor the names of its contributors 17.\" may be used to endorse or promote products derived from this software 18.\" without specific prior written permission. 19.\" 20.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 21.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 24.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30.\" SUCH DAMAGE. 31.\" 32.\" from: @(#)inetd.8 8.3 (Berkeley) 4/13/94 33.\" $FreeBSD$ 34.\" 35.Dd February 7, 1996 36.Dt INETD 8 37.Os 38.Sh NAME 39.Nm inetd 40.Nd internet 41.Dq super-server 42.Sh SYNOPSIS 43.Nm 44.Op Fl d 45.Op Fl l 46.Op Fl w 47.Op Fl W 48.Op Fl c Ar maximum 49.Op Fl C Ar rate 50.Op Fl a Ar address | hostname 51.Op Fl p Ar filename 52.Op Fl R Ar rate 53.Op Fl s Ar maximum 54.Op Ar configuration file 55.Sh DESCRIPTION 56The 57.Nm 58utility should be run at boot time by 59.Pa /etc/rc 60(see 61.Xr rc 8 ) . 62It then listens for connections on certain 63internet sockets. When a connection is found on one 64of its sockets, it decides what service the socket 65corresponds to, and invokes a program to service the request. 66The server program is invoked with the service socket 67as its standard input, output and error descriptors. 68After the program is 69finished, 70.Nm 71continues to listen on the socket (except in some cases which 72will be described below). Essentially, 73.Nm 74allows running one daemon to invoke several others, 75reducing load on the system. 76.Pp 77The following options are available: 78.Bl -tag -width indent 79.It Fl d 80Turn on debugging. 81.It Fl l 82Turn on logging of successful connections. 83.It Fl w 84Turn on TCP Wrapping for external services. 85See the 86.Sx "IMPLEMENTATION NOTES" 87section for more information on TCP Wrappers support. 88.It Fl W 89Turn on TCP Wrapping for internal services which are built in to 90.Nm . 91.It Fl c Ar maximum 92Specify the default maximum number of 93simultaneous invocations of each service; 94the default is unlimited. 95May be overridden on a per-service basis with the "max-child" 96parameter. 97.It Fl C Ar rate 98Specify the default maximum number of times a service can be invoked 99from a single IP address in one minute; the default is unlimited. 100May be overridden on a per-service basis with the 101"max-connections-per-ip-per-minute" parameter. 102.It Fl R Ar rate 103Specify the maximum number of times a service can be invoked 104in one minute; the default is 256. 105A rate of 0 allows an unlimited number of invocations. 106.It Fl s Ar maximum 107Specify the default maximum number of 108simultaneous invocations of each service from a single IP address; 109the default is unlimited. 110May be overridden on a per-service basis with the "max-child-per-ip" 111parameter. 112.It Fl a 113Specify one specific IP address to bind to. 114Alternatively, a hostname can be specified, 115in which case the IPv4 or IPv6 address 116which corresponds to that hostname is used. 117Usually a hostname is specified when 118.Nm 119is run inside a 120.Xr jail 8 , 121in which case the hostname corresponds to the 122.Xr jail 8 123environment. 124.Pp 125When hostname specification is used 126and both IPv4 and IPv6 bindings are desired, 127one entry with the appropriate 128.Em protocol 129type for each binding 130is required for each service in 131.Pa /etc/inetd.conf . 132For example, 133a TCP-based service would need two entries, 134one using 135.Dq tcp4 136for the 137.Em protocol 138and the other using 139.Dq tcp6 . 140See the explanation of the 141.Pa /etc/inetd.conf 142.Em protocol 143field below. 144.It Fl p 145Specify an alternate file in which to store the process ID. 146.El 147.Pp 148Upon execution, 149.Nm 150reads its configuration information from a configuration 151file which, by default, is 152.Pa /etc/inetd.conf . 153There must be an entry for each field of the configuration 154file, with entries for each field separated by a tab or 155a space. Comments are denoted by a 156.Dq # 157at the beginning 158of a line. There must be an entry for each field. The 159fields of the configuration file are as follows: 160.Pp 161.Bd -unfilled -offset indent -compact 162service name 163socket type 164protocol 165{wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]] 166user[:group][/login-class] 167server program 168server program arguments 169.Ed 170.Pp 171To specify an 172.Tn "ONC RPC" Ns -based 173service, the entry would contain these fields: 174.Pp 175.Bd -unfilled -offset indent -compact 176service name/version 177socket type 178rpc/protocol 179user[:group][/login-class] 180server program 181server program arguments 182.Ed 183.Pp 184There are two types of services that 185.Nm 186can start: standard and TCPMUX. 187A standard service has a well-known port assigned to it; 188it may be a service that implements an official Internet standard or is a 189.Bx Ns -specific 190service. 191As described in 192.Tn RFC 1078 , 193TCPMUX services are nonstandard services that do not have a 194well-known port assigned to them. 195They are invoked from 196.Nm 197when a program connects to the 198.Dq tcpmux 199well-known port and specifies 200the service name. 201This feature is useful for adding locally-developed servers. 202TCPMUX requests are only accepted when the multiplexor service itself 203is enabled, above and beyond and specific TCPMUX-based servers; see the 204discussion of internal services below. 205.Pp 206The 207.Em service-name 208entry is the name of a valid service in 209the file 210.Pa /etc/services , 211or the specification of a 212.Ux 213domain socket (see below). 214For 215.Dq internal 216services (discussed below), the service 217name 218should 219be the official name of the service (that is, the first entry in 220.Pa /etc/services ) . 221When used to specify an 222.Tn "ONC RPC" Ns -based 223service, this field is a valid RPC service name in 224the file 225.Pa /etc/rpc . 226The part on the right of the 227.Dq / 228is the RPC version number. 229This 230can simply be a single numeric argument or a range of versions. 231A range is bounded by the low version to the high version - 232.Dq rusers/1-3 . 233For TCPMUX services, the value of the 234.Em service-name 235field consists of the string 236.Dq tcpmux 237followed by a slash and the 238locally-chosen service name. 239The service names listed in 240.Pa /etc/services 241and the name 242.Dq help 243are reserved. 244Try to choose unique names for your TCPMUX services by prefixing them with 245your organization's name and suffixing them with a version number. 246.Pp 247The 248.Em socket-type 249should be one of 250.Dq stream , 251.Dq dgram , 252.Dq raw , 253.Dq rdm , 254or 255.Dq seqpacket , 256depending on whether the socket is a stream, datagram, raw, 257reliably delivered message, or sequenced packet socket. 258TCPMUX services must use 259.Dq stream . 260.Pp 261The 262.Em protocol 263must be a valid protocol or 264.Dq unix . 265Examples are 266.Dq tcp 267or 268.Dq udp , 269both of which imply IPv4 for backward compatibility. 270The names 271.Dq tcp4 272and 273.Dq udp4 274specify IPv4 only. 275The names 276.Dq tcp6 277and 278.Dq udp6 279specify IPv6 only. 280The names 281.Dq tcp46 282and 283.Dq udp46 284specify that the entry accepts both IPv4 and IPv6 connections 285via a wildcard 286.Dv AF_INET6 287socket. 288If it is desired that the service is reachable via T/TCP, one should 289specify 290.Dq tcp/ttcp , 291which implies IPv4 for backward compatibility. 292The name 293.Dq tcp4/ttcp 294specifies IPv4 only, while 295.Dq tcp6/ttcp 296specifies IPv6 only. 297The name 298.Dq tcp46/ttcp 299specify that the entry accepts both IPv6 and IPv6 connections 300via a wildcard 301.Dv AF_INET6 302socket. 303Rpc based services 304are specified with the 305.Dq rpc/tcp 306or 307.Dq rpc/udp 308service type. 309One can use specify IPv4 and/or IPv6 with the 4, 6 or 46 suffix, for example 310.Dq rpc/tcp6 311or 312.Dq rpc/udp46 . 313TCPMUX services must use 314.Dq tcp , 315.Dq tcp4 , 316.Dq tcp6 317or 318.Dq tcp46 . 319.Pp 320The 321.Em wait/nowait 322entry specifies whether the server that is invoked by 323.Nm 324will take over 325the socket associated with the service access point, and thus whether 326.Nm 327should wait for the server to exit before listening for new service 328requests. 329Datagram servers must use 330.Dq wait , 331as they are always invoked with the original datagram socket bound 332to the specified service address. 333These servers must read at least one datagram from the socket 334before exiting. 335If a datagram server connects 336to its peer, freeing the socket so 337.Nm 338can receive further messages on the socket, it is said to be 339a 340.Dq multi-threaded 341server; 342it should read one datagram from the socket and create a new socket 343connected to the peer. 344It should fork, and the parent should then exit 345to allow 346.Nm 347to check for new service requests to spawn new servers. 348Datagram servers which process all incoming datagrams 349on a socket and eventually time out are said to be 350.Dq single-threaded . 351.Xr Comsat 8 , 352.Pq Xr biff 1 353and 354.Xr talkd 8 355are both examples of the latter type of 356datagram server. 357.Xr Tftpd 8 358is an example of a multi-threaded datagram server. 359.Pp 360Servers using stream sockets generally are multi-threaded and 361use the 362.Dq nowait 363entry. 364Connection requests for these services are accepted by 365.Nm , 366and the server is given only the newly-accepted socket connected 367to a client of the service. 368Most stream-based services operate in this manner. 369Stream-based servers that use 370.Dq wait 371are started with the listening service socket, and must accept 372at least one connection request before exiting. 373Such a server would normally accept and process incoming connection 374requests until a timeout. 375TCPMUX services must use 376.Dq nowait . 377.Pp 378The maximum number of outstanding child processes (or 379.Dq threads ) 380for a 381.Dq nowait 382service may be explicitly specified by appending a 383.Dq / 384followed by the number to the 385.Dq nowait 386keyword. 387Normally 388(or if a value of zero is specified) there is no maximum. 389Otherwise, 390once the maximum is reached, further connection attempts will be 391queued up until an existing child process exits. 392This also works 393in the case of 394.Dq wait 395mode, although a value other than one (the 396default) might not make sense in some cases. 397You can also specify the maximum number of connections per minute 398for a given IP address by appending 399a 400.Dq / 401followed by the number to the maximum number of 402outstanding child processes. 403Once the maximum is reached, further 404connections from this IP address will be dropped until the end of the 405minute. 406In addition, you can specify the maximum number of simultaneous 407invocations of each service from a single IP address by appending a 408.Dq / 409followed by the number to the maximum number of outstanding child 410processes. Once the maximum is reached, further connections from this 411IP address will be dropped. 412.Pp 413The 414.Em user 415entry should contain the user name of the user as whom the server 416should run. This allows for servers to be given less permission 417than root. 418Optional 419.Em group 420part separated by 421.Dq \&: 422allows to specify group name different 423than default group for this user. 424Optional 425.Em login-class 426part separated by 427.Dq / 428allows to specify login class different 429than default 430.Dq daemon 431login class. 432.Pp 433The 434.Em server-program 435entry should contain the pathname of the program which is to be 436executed by 437.Nm 438when a request is found on its socket. If 439.Nm 440provides this service internally, this entry should 441be 442.Dq internal . 443.Pp 444The 445.Em server program arguments 446should be just as arguments 447normally are, starting with argv[0], which is the name of 448the program. If the service is provided internally, the 449.Em service-name 450of the service (and any arguments to it) or the word 451.Dq internal 452should take the place of this entry. 453.Pp 454Currently, the only internal service to take arguments is 455.Dq auth . 456Without options, the service will always return 457.Dq ERROR\ : HIDDEN-USER . 458The available arguments to this service that alter its behavior are: 459.Bl -tag -width indent 460.It Fl d Ar fallback 461Provide a 462.Ar fallback 463username. 464If the real 465.Dq auth 466service is enabled 467(with the 468.Fl r 469option discussed below), 470return this username instead of an error 471when lookups fail 472for either socket credentials or the username. 473If the real 474.Dq auth 475service is disabled, 476return this username for every request. 477This is primarily useful when running this service on a NAT machine. 478.It Fl g 479Instead of returning 480the user's name to the ident requester, 481report a 482username made up of random alphanumeric characters, 483e.g.\& 484.Dq c0c993 . 485The 486.Fl g 487flag overrides not only the user names, 488but also any fallback name, 489.Pa .fakeid 490or 491.Pa .noident 492files. 493.It Fl t Xo 494.Ar sec Ns Op . Ns Ar usec 495.Xc 496Specify a timeout for the service. 497The default timeout is 10.0 seconds. 498.It Fl r 499Offer a real 500.Dq auth 501service, as per RFC 1413. 502All the remaining flags apply only in this case. 503.It Fl i 504Return numeric user IDs instead of usernames. 505.It Fl f 506If the file 507.Pa .fakeid 508exists in the home directory of the identified user, report the username 509found in that file instead of the real username. 510If the username found in 511.Pa .fakeid 512is that of an existing user, 513then the real username is reported. 514If the 515.Fl i 516flag is also given then the username in 517.Pa .fakeid 518is checked against existing user IDs instead. 519.It Fl F 520same as 521.Fl f 522but without the restriction that the username in 523.Pa .fakeid 524must not match an existing user. 525.It Fl n 526If the file 527.Pa .noident 528exists in the home directory of the identified user, return 529.Dq ERROR\ : HIDDEN-USER . 530This overrides any 531.Pa fakeid 532file which might exist. 533.It Fl o Ar osname 534Use 535.Ar osname 536instead of the name of the system as reported by 537.Xr uname 3 . 538.El 539.Pp 540The 541.Nm 542utility also provides several other 543.Dq trivial 544services internally by use of 545routines within itself. These services are 546.Dq echo , 547.Dq discard , 548.Dq chargen 549(character generator), 550.Dq daytime 551(human readable time), and 552.Dq time 553(machine readable time, in the form of the number of seconds since 554midnight, January 1, 1900). All of these services are available in 555both TCP and UDP versions; the UDP versions will refuse service if the 556request specifies a reply port corresponding to any internal service. 557(This is done as a defense against looping attacks; the remote IP address 558is logged.) 559For details of these services, consult the 560appropriate 561.Tn RFC 562document. 563.Pp 564The TCPMUX-demultiplexing service is also implemented as an internal service. 565For any TCPMUX-based service to function, the following line must be included 566in 567.Pa inetd.conf : 568.Bd -literal -offset indent 569tcpmux stream tcp nowait root internal 570.Ed 571.Pp 572When given the 573.Fl l 574option 575.Nm 576will log an entry to syslog each time a connection is accepted, noting the 577service selected and the IP-number of the remote requester if available. 578Unless otherwise specified in the configuration file, 579and in the absence of the 580.Fl W 581and 582.Fl w 583options, 584.Nm 585will log to the 586.Dq daemon 587facility. 588.Pp 589The 590.Nm 591utility rereads its configuration file when it receives a hangup signal, 592.Dv SIGHUP . 593Services may be added, deleted or modified when the configuration file 594is reread. 595Except when started in debugging mode, 596.Nm 597records its process ID in the file 598.Pa /var/run/inetd.pid 599to assist in reconfiguration. 600.Sh IMPLEMENTATION NOTES 601.Ss TCP Wrappers 602When given the 603.Fl w 604option, 605.Nm 606will wrap all services specified as 607.Dq stream nowait 608or 609.Dq dgram 610except for 611.Dq internal 612services. 613If the 614.Fl W 615option is given, such 616.Dq internal 617services will be wrapped. 618If both options are given, wrapping for both 619internal and external services will be enabled. 620Either wrapping option 621will cause failed connections to be logged to the 622.Dq auth 623syslog facility. 624Adding the 625.Fl l 626flag to the wrapping options will include successful connections in the 627logging to the 628.Dq auth 629facility. 630.Pp 631Note that 632.Nm 633only wraps requests for a 634.Dq wait 635service while no servers are available to service requests. 636Once a 637connection to such a service has been allowed, 638.Nm 639has no control 640over subsequent connections to the service until no more servers 641are left listening for connection requests. 642.Pp 643When wrapping is enabled, the 644.Pa tcpd 645daemon is not required, as that functionality is builtin. 646For more information on TCP Wrappers, see the relevant documentation 647.Pq Xr hosts_access 5 . 648When reading that document, keep in mind that 649.Dq internal 650services have no associated daemon name. 651Therefore, the service name 652as specified in 653.Pa inetd.conf 654should be used as the daemon name for 655.Dq internal 656services. 657.Ss TCPMUX 658.Tn RFC 1078 659describes the TCPMUX protocol: 660``A TCP client connects to a foreign host on TCP port 1. It sends the 661service name followed by a carriage-return line-feed <CRLF>. The 662service name is never case sensitive. The server replies with a 663single character indicating positive (+) or negative (\-) 664acknowledgment, immediately followed by an optional message of 665explanation, terminated with a <CRLF>. If the reply was positive, 666the selected protocol begins; otherwise the connection is closed.'' 667The program is passed the TCP connection as file descriptors 0 and 1. 668.Pp 669If the TCPMUX service name begins with a 670.Dq + , 671.Nm 672returns the positive reply for the program. 673This allows you to invoke programs that use stdin/stdout 674without putting any special server code in them. 675.Pp 676The special service name 677.Dq help 678causes 679.Nm 680to list TCPMUX services in 681.Pa inetd.conf . 682.Ss IPsec 683The implementation includes a tiny hack 684to support IPsec policy settings for each socket. 685A special form of comment line, starting with 686.Dq Li #@ , 687is interpreted as a policy specifier. 688Everything after the 689.Dq Li #@ 690will be used as an IPsec policy string, 691as described in 692.Xr ipsec_set_policy 3 . 693Each 694policy specifier is applied to all the following lines in 695.Pa inetd.conf 696until the next policy specifier. 697An empty policy specifier resets the IPsec policy. 698.Pp 699If an invalid IPsec policy specifier appears in 700.Pa inetd.conf , 701.Nm 702will provide an error message via the 703.Xr syslog 3 704interface and abort execution. 705.Ss Ux Domain Sockets 706In addition to running services on IP sockets, 707.Nm 708can also manage 709.Ux 710domain sockets. 711To do this you specify a 712.Em protocol 713of 714.Dq unix 715and specify the 716.Ux 717domain socket as the 718.Em service-name . 719The 720.Em service-type 721may be 722.Dq stream 723or 724.Dq dgram . 725The specification of the socket must be 726an absolute path name, 727optionally prefixed by an owner and mode 728of the form 729.Em :user:group:mode: . 730The specification: 731.Pp 732.Dl ":news:daemon:220:/var/run/sock" 733.Pp 734creates a socket owned 735by user 736.Dq news 737in group 738.Dq daemon 739with permissions allowing only that user and group to connect. 740The default owner is the user that 741.Nm 742is running as. 743The default mode only allows the socket's owner to connect. 744.Pp 745.Sy WARNING : 746while creating 747.Ux 748domain socket, 749.Nm 750must change the ownership and permissions on the socket. 751This can only be done securely if 752the directory in which the socket is created 753is writable only by root. 754Do 755.Em NOT 756use 757.Nm 758to create sockets in world writable directories, 759such as 760.Pa /tmp , 761instead use 762.Pa /var/run 763or a similar directory. 764.Pp 765Internal services may be run on 766.Ux 767domain sockets, in the usual way. 768In this case 769the name of the internal service 770is determined using 771the last component of the socket's pathname. 772.Sh "FILES" 773.Bl -tag -width /var/run/inetd.pid -compact 774.It Pa /etc/inetd.conf 775configuration file 776.It Pa /etc/rpc 777translation of service names to RPC program numbers 778.It Pa /etc/services 779translation of service names to port numbers 780.It Pa /var/run/inetd.pid 781the pid of the currently running 782.Nm 783.El 784.Sh "EXAMPLES" 785Here are several example service entries for the various types of services: 786.Bd -literal 787ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l 788ntalk dgram udp wait root /usr/libexec/ntalkd ntalkd 789telnet stream tcp6 nowait root /usr/libexec/telnetd telnetd 790shell stream tcp46 nowait root /usr/libexec/rshd rshd 791tcpmux/+date stream tcp nowait guest /bin/date date 792tcpmux/phonebook stream tcp nowait guest /usr/local/bin/phonebook phonebook 793rstatd/1-3 dgram rpc/udp wait root /usr/libexec/rpc.rstatd rpc.rstatd 794/var/run/echo stream unix nowait root internal 795#@ ipsec ah/require 796chargen stream tcp nowait root internal 797#@ 798.Ed 799.Sh "ERROR MESSAGES" 800The 801.Nm 802server 803logs error messages using 804.Xr syslog 3 . 805Important error messages and their explanations are: 806.Pp 807.Bl -ohang -compact 808.It Xo 809.Ar service Ns / Ns Ar protocol 810.No "server failing (looping), service terminated." 811.Xc 812The number of requests for the specified service in the past minute 813exceeded the limit. 814The limit exists to prevent a broken program 815or a malicious user from swamping the system. 816This message may occur for several reasons: 817.Bl -enum -offset indent 818.It 819There are many hosts requesting the service within a short time period. 820.It 821A broken client program is requesting the service too frequently. 822.It 823A malicious user is running a program to invoke the service in 824a denial-of-service attack. 825.It 826The invoked service program has an error that causes clients 827to retry quickly. 828.El 829.Pp 830Use the 831.Fl R Ar rate 832option, 833as described above, to change the rate limit. 834Once the limit is reached, the service will be 835reenabled automatically in 10 minutes. 836.Pp 837.It Xo 838.Ar service Ns / Ns Ar protocol : 839.No \&No such user 840.Ar user , 841.No service ignored 842.Xc 843.It Xo 844.Ar service Ns / Ns Ar protocol : 845.No getpwnam : 846.Ar user : 847.No \&No such user 848.Xc 849No entry for 850.Ar user 851exists in the 852.Xr passwd 5 853database. 854The first message 855occurs when 856.Nm 857(re)reads the configuration file. 858The second message occurs when the 859service is invoked. 860.Pp 861.It Xo 862.Ar service : 863.No can't set uid 864.Ar uid 865.Xc 866.It Xo 867.Ar service : 868.No can't set gid 869.Ar gid 870.Xc 871The user or group ID for the entry's 872.Ar user 873field is invalid. 874.Pp 875.It "setsockopt(SO_PRIVSTATE): Operation not supported" 876The 877.Nm 878utility attempted to renounce the privileged state associated with a 879socket but was unable to. 880.El 881.Sh SEE ALSO 882.Xr ipsec_set_policy 3 , 883.Xr hosts_access 5 , 884.Xr hosts_options 5 , 885.Xr login.conf 5 , 886.Xr passwd 5 , 887.Xr rpc 5 , 888.Xr services 5 , 889.Xr comsat 8 , 890.Xr fingerd 8 , 891.Xr ftpd 8 , 892.Xr rexecd 8 , 893.Xr rlogind 8 , 894.Xr rpcbind 8 , 895.Xr rshd 8 , 896.Xr telnetd 8 , 897.Xr tftpd 8 898.Rs 899.%A Michael C. St. Johns 900.%T Identification Protocol 901.%O RFC1413 902.Re 903.Sh HISTORY 904The 905.Nm 906utility appeared in 907.Bx 4.3 . 908TCPMUX is based on code and documentation by Mark Lottor. 909Support for 910.Tn "ONC RPC" 911based services is modeled after that 912provided by 913.Tn SunOS 9144.1. 915The IPsec hack was contributed by the KAME project in 1999. 916The 917.Fx 918TCP Wrappers support first appeared in 919.Fx 3.2 . 920