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