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