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 . 351The 352.Xr comsat 8 , 353.Pq Xr biff 1 354and 355.Xr talkd 8 356utilities are both examples of the latter type of 357datagram server. 358The 359.Xr tftpd 8 360utility is an example of a multi-threaded datagram server. 361.Pp 362Servers using stream sockets generally are multi-threaded and 363use the 364.Dq nowait 365entry. 366Connection requests for these services are accepted by 367.Nm , 368and the server is given only the newly-accepted socket connected 369to a client of the service. 370Most stream-based services operate in this manner. 371Stream-based servers that use 372.Dq wait 373are started with the listening service socket, and must accept 374at least one connection request before exiting. 375Such a server would normally accept and process incoming connection 376requests until a timeout. 377TCPMUX services must use 378.Dq nowait . 379.Pp 380The maximum number of outstanding child processes (or 381.Dq threads ) 382for a 383.Dq nowait 384service may be explicitly specified by appending a 385.Dq / 386followed by the number to the 387.Dq nowait 388keyword. 389Normally 390(or if a value of zero is specified) there is no maximum. 391Otherwise, 392once the maximum is reached, further connection attempts will be 393queued up until an existing child process exits. 394This also works 395in the case of 396.Dq wait 397mode, although a value other than one (the 398default) might not make sense in some cases. 399You can also specify the maximum number of connections per minute 400for a given IP address by appending 401a 402.Dq / 403followed by the number to the maximum number of 404outstanding child processes. 405Once the maximum is reached, further 406connections from this IP address will be dropped until the end of the 407minute. 408In addition, you can specify the maximum number of simultaneous 409invocations of each service from a single IP address by appending a 410.Dq / 411followed by the number to the maximum number of outstanding child 412processes. Once the maximum is reached, further connections from this 413IP address will be dropped. 414.Pp 415The 416.Em user 417entry should contain the user name of the user as whom the server 418should run. This allows for servers to be given less permission 419than root. 420Optional 421.Em group 422part separated by 423.Dq \&: 424allows to specify group name different 425than default group for this user. 426Optional 427.Em login-class 428part separated by 429.Dq / 430allows to specify login class different 431than default 432.Dq daemon 433login class. 434.Pp 435The 436.Em server-program 437entry should contain the pathname of the program which is to be 438executed by 439.Nm 440when a request is found on its socket. If 441.Nm 442provides this service internally, this entry should 443be 444.Dq internal . 445.Pp 446The 447.Em server program arguments 448should be just as arguments 449normally are, starting with argv[0], which is the name of 450the program. If the service is provided internally, the 451.Em service-name 452of the service (and any arguments to it) or the word 453.Dq internal 454should take the place of this entry. 455.Pp 456Currently, the only internal service to take arguments is 457.Dq auth . 458Without options, the service will always return 459.Dq ERROR\ : HIDDEN-USER . 460The available arguments to this service that alter its behavior are: 461.Bl -tag -width indent 462.It Fl d Ar fallback 463Provide a 464.Ar fallback 465username. 466If the real 467.Dq auth 468service is enabled 469(with the 470.Fl r 471option discussed below), 472return this username instead of an error 473when lookups fail 474for either socket credentials or the username. 475If the real 476.Dq auth 477service is disabled, 478return this username for every request. 479This is primarily useful when running this service on a NAT machine. 480.It Fl g 481Instead of returning 482the user's name to the ident requester, 483report a 484username made up of random alphanumeric characters, 485e.g.\& 486.Dq c0c993 . 487The 488.Fl g 489flag overrides not only the user names, 490but also any fallback name, 491.Pa .fakeid 492or 493.Pa .noident 494files. 495.It Fl t Xo 496.Ar sec Ns Op . Ns Ar usec 497.Xc 498Specify a timeout for the service. 499The default timeout is 10.0 seconds. 500.It Fl r 501Offer a real 502.Dq auth 503service, as per RFC 1413. 504All the remaining flags apply only in this case. 505.It Fl i 506Return numeric user IDs instead of usernames. 507.It Fl f 508If the file 509.Pa .fakeid 510exists in the home directory of the identified user, report the username 511found in that file instead of the real username. 512If the username found in 513.Pa .fakeid 514is that of an existing user, 515then the real username is reported. 516If the 517.Fl i 518flag is also given then the username in 519.Pa .fakeid 520is checked against existing user IDs instead. 521.It Fl F 522same as 523.Fl f 524but without the restriction that the username in 525.Pa .fakeid 526must not match an existing user. 527.It Fl n 528If the file 529.Pa .noident 530exists in the home directory of the identified user, return 531.Dq ERROR\ : HIDDEN-USER . 532This overrides any 533.Pa fakeid 534file which might exist. 535.It Fl o Ar osname 536Use 537.Ar osname 538instead of the name of the system as reported by 539.Xr uname 3 . 540.El 541.Pp 542The 543.Nm 544utility also provides several other 545.Dq trivial 546services internally by use of 547routines within itself. These services are 548.Dq echo , 549.Dq discard , 550.Dq chargen 551(character generator), 552.Dq daytime 553(human readable time), and 554.Dq time 555(machine readable time, in the form of the number of seconds since 556midnight, January 1, 1900). All of these services are available in 557both TCP and UDP versions; the UDP versions will refuse service if the 558request specifies a reply port corresponding to any internal service. 559(This is done as a defense against looping attacks; the remote IP address 560is logged.) 561For details of these services, consult the 562appropriate 563.Tn RFC 564document. 565.Pp 566The TCPMUX-demultiplexing service is also implemented as an internal service. 567For any TCPMUX-based service to function, the following line must be included 568in 569.Pa inetd.conf : 570.Bd -literal -offset indent 571tcpmux stream tcp nowait root internal 572.Ed 573.Pp 574When given the 575.Fl l 576option 577.Nm 578will log an entry to syslog each time a connection is accepted, noting the 579service selected and the IP-number of the remote requester if available. 580Unless otherwise specified in the configuration file, 581and in the absence of the 582.Fl W 583and 584.Fl w 585options, 586.Nm 587will log to the 588.Dq daemon 589facility. 590.Pp 591The 592.Nm 593utility rereads its configuration file when it receives a hangup signal, 594.Dv SIGHUP . 595Services may be added, deleted or modified when the configuration file 596is reread. 597Except when started in debugging mode, 598.Nm 599records its process ID in the file 600.Pa /var/run/inetd.pid 601to assist in reconfiguration. 602.Sh IMPLEMENTATION NOTES 603.Ss TCP Wrappers 604When given the 605.Fl w 606option, 607.Nm 608will wrap all services specified as 609.Dq stream nowait 610or 611.Dq dgram 612except for 613.Dq internal 614services. 615If the 616.Fl W 617option is given, such 618.Dq internal 619services will be wrapped. 620If both options are given, wrapping for both 621internal and external services will be enabled. 622Either wrapping option 623will cause failed connections to be logged to the 624.Dq auth 625syslog facility. 626Adding the 627.Fl l 628flag to the wrapping options will include successful connections in the 629logging to the 630.Dq auth 631facility. 632.Pp 633Note that 634.Nm 635only wraps requests for a 636.Dq wait 637service while no servers are available to service requests. 638Once a 639connection to such a service has been allowed, 640.Nm 641has no control 642over subsequent connections to the service until no more servers 643are left listening for connection requests. 644.Pp 645When wrapping is enabled, the 646.Pa tcpd 647daemon is not required, as that functionality is builtin. 648For more information on TCP Wrappers, see the relevant documentation 649.Pq Xr hosts_access 5 . 650When reading that document, keep in mind that 651.Dq internal 652services have no associated daemon name. 653Therefore, the service name 654as specified in 655.Pa inetd.conf 656should be used as the daemon name for 657.Dq internal 658services. 659.Ss TCPMUX 660.Tn RFC 1078 661describes the TCPMUX protocol: 662``A TCP client connects to a foreign host on TCP port 1. It sends the 663service name followed by a carriage-return line-feed <CRLF>. The 664service name is never case sensitive. The server replies with a 665single character indicating positive (+) or negative (\-) 666acknowledgment, immediately followed by an optional message of 667explanation, terminated with a <CRLF>. If the reply was positive, 668the selected protocol begins; otherwise the connection is closed.'' 669The program is passed the TCP connection as file descriptors 0 and 1. 670.Pp 671If the TCPMUX service name begins with a 672.Dq + , 673.Nm 674returns the positive reply for the program. 675This allows you to invoke programs that use stdin/stdout 676without putting any special server code in them. 677.Pp 678The special service name 679.Dq help 680causes 681.Nm 682to list TCPMUX services in 683.Pa inetd.conf . 684.Ss IPsec 685The implementation includes a tiny hack 686to support IPsec policy settings for each socket. 687A special form of comment line, starting with 688.Dq Li #@ , 689is interpreted as a policy specifier. 690Everything after the 691.Dq Li #@ 692will be used as an IPsec policy string, 693as described in 694.Xr ipsec_set_policy 3 . 695Each 696policy specifier is applied to all the following lines in 697.Pa inetd.conf 698until the next policy specifier. 699An empty policy specifier resets the IPsec policy. 700.Pp 701If an invalid IPsec policy specifier appears in 702.Pa inetd.conf , 703.Nm 704will provide an error message via the 705.Xr syslog 3 706interface and abort execution. 707.Ss Ux Domain Sockets 708In addition to running services on IP sockets, 709.Nm 710can also manage 711.Ux 712domain sockets. 713To do this you specify a 714.Em protocol 715of 716.Dq unix 717and specify the 718.Ux 719domain socket as the 720.Em service-name . 721The 722.Em service-type 723may be 724.Dq stream 725or 726.Dq dgram . 727The specification of the socket must be 728an absolute path name, 729optionally prefixed by an owner and mode 730of the form 731.Em :user:group:mode: . 732The specification: 733.Pp 734.Dl ":news:daemon:220:/var/run/sock" 735.Pp 736creates a socket owned 737by user 738.Dq news 739in group 740.Dq daemon 741with permissions allowing only that user and group to connect. 742The default owner is the user that 743.Nm 744is running as. 745The default mode only allows the socket's owner to connect. 746.Pp 747.Sy WARNING : 748while creating 749.Ux 750domain socket, 751.Nm 752must change the ownership and permissions on the socket. 753This can only be done securely if 754the directory in which the socket is created 755is writable only by root. 756Do 757.Em NOT 758use 759.Nm 760to create sockets in world writable directories, 761such as 762.Pa /tmp , 763instead use 764.Pa /var/run 765or a similar directory. 766.Pp 767Internal services may be run on 768.Ux 769domain sockets, in the usual way. 770In this case 771the name of the internal service 772is determined using 773the last component of the socket's pathname. 774.Sh "FILES" 775.Bl -tag -width /var/run/inetd.pid -compact 776.It Pa /etc/inetd.conf 777configuration file 778.It Pa /etc/rpc 779translation of service names to RPC program numbers 780.It Pa /etc/services 781translation of service names to port numbers 782.It Pa /var/run/inetd.pid 783the pid of the currently running 784.Nm 785.El 786.Sh "EXAMPLES" 787Here are several example service entries for the various types of services: 788.Bd -literal 789ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l 790ntalk dgram udp wait root /usr/libexec/ntalkd ntalkd 791telnet stream tcp6 nowait root /usr/libexec/telnetd telnetd 792shell stream tcp46 nowait root /usr/libexec/rshd rshd 793tcpmux/+date stream tcp nowait guest /bin/date date 794tcpmux/phonebook stream tcp nowait guest /usr/local/bin/phonebook phonebook 795rstatd/1-3 dgram rpc/udp wait root /usr/libexec/rpc.rstatd rpc.rstatd 796/var/run/echo stream unix nowait root internal 797#@ ipsec ah/require 798chargen stream tcp nowait root internal 799#@ 800.Ed 801.Sh "ERROR MESSAGES" 802The 803.Nm 804server 805logs error messages using 806.Xr syslog 3 . 807Important error messages and their explanations are: 808.Pp 809.Bl -ohang -compact 810.It Xo 811.Ar service Ns / Ns Ar protocol 812.No "server failing (looping), service terminated." 813.Xc 814The number of requests for the specified service in the past minute 815exceeded the limit. 816The limit exists to prevent a broken program 817or a malicious user from swamping the system. 818This message may occur for several reasons: 819.Bl -enum -offset indent 820.It 821There are many hosts requesting the service within a short time period. 822.It 823A broken client program is requesting the service too frequently. 824.It 825A malicious user is running a program to invoke the service in 826a denial-of-service attack. 827.It 828The invoked service program has an error that causes clients 829to retry quickly. 830.El 831.Pp 832Use the 833.Fl R Ar rate 834option, 835as described above, to change the rate limit. 836Once the limit is reached, the service will be 837reenabled automatically in 10 minutes. 838.Pp 839.It Xo 840.Ar service Ns / Ns Ar protocol : 841.No \&No such user 842.Ar user , 843.No service ignored 844.Xc 845.It Xo 846.Ar service Ns / Ns Ar protocol : 847.No getpwnam : 848.Ar user : 849.No \&No such user 850.Xc 851No entry for 852.Ar user 853exists in the 854.Xr passwd 5 855database. 856The first message 857occurs when 858.Nm 859(re)reads the configuration file. 860The second message occurs when the 861service is invoked. 862.Pp 863.It Xo 864.Ar service : 865.No can't set uid 866.Ar uid 867.Xc 868.It Xo 869.Ar service : 870.No can't set gid 871.Ar gid 872.Xc 873The user or group ID for the entry's 874.Ar user 875field is invalid. 876.Pp 877.It "setsockopt(SO_PRIVSTATE): Operation not supported" 878The 879.Nm 880utility attempted to renounce the privileged state associated with a 881socket but was unable to. 882.El 883.Sh SEE ALSO 884.Xr ipsec_set_policy 3 , 885.Xr hosts_access 5 , 886.Xr hosts_options 5 , 887.Xr login.conf 5 , 888.Xr passwd 5 , 889.Xr rpc 5 , 890.Xr services 5 , 891.Xr comsat 8 , 892.Xr fingerd 8 , 893.Xr ftpd 8 , 894.Xr rexecd 8 , 895.Xr rlogind 8 , 896.Xr rpcbind 8 , 897.Xr rshd 8 , 898.Xr telnetd 8 , 899.Xr tftpd 8 900.Rs 901.%A Michael C. St. Johns 902.%T Identification Protocol 903.%O RFC1413 904.Re 905.Sh HISTORY 906The 907.Nm 908utility appeared in 909.Bx 4.3 . 910TCPMUX is based on code and documentation by Mark Lottor. 911Support for 912.Tn "ONC RPC" 913based services is modeled after that 914provided by 915.Tn SunOS 9164.1. 917The IPsec hack was contributed by the KAME project in 1999. 918The 919.Fx 920TCP Wrappers support first appeared in 921.Fx 3.2 . 922