xref: /openbsd/sbin/isakmpd/isakmpd.8 (revision f6aab3d8)
1.\" $OpenBSD: isakmpd.8,v 1.123 2019/08/30 17:51:47 jmc Exp $
2.\" $EOM: isakmpd.8,v 1.23 2000/05/02 00:30:23 niklas Exp $
3.\"
4.\" Copyright (c) 1998, 1999, 2000, 2001 Niklas Hallqvist.
5.\" All rights reserved.
6.\" Copyright (c) 1999 Angelos D. Keromytis.  All rights reserved.
7.\" Copyright (c) 2001, 2002 H�kan Olsson.  All rights reserved.
8.\"
9.\" Redistribution and use in source and binary forms, with or without
10.\" modification, are permitted provided that the following conditions
11.\" are met:
12.\" 1. Redistributions of source code must retain the above copyright
13.\"    notice, this list of conditions and the following disclaimer.
14.\" 2. Redistributions in binary form must reproduce the above copyright
15.\"    notice, this list of conditions and the following disclaimer in the
16.\"    documentation and/or other materials provided with the distribution.
17.\"
18.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
19.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
22.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
23.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28.\"
29.\" This code was written under funding by Ericsson Radio Systems.
30.\"
31.\" Manual page, using -mandoc macros
32.\"
33.Dd $Mdocdate: August 30 2019 $
34.Dt ISAKMPD 8
35.Os
36.Sh NAME
37.Nm isakmpd
38.Nd ISAKMP/Oakley a.k.a. IKEv1 key management daemon
39.Sh SYNOPSIS
40.Nm isakmpd
41.Op Fl 46adKLnSTv
42.Op Fl c Ar config-file
43.Op Fl D Ar class Ns = Ns Ar level
44.Op Fl f Ar fifo
45.Op Fl i Ar pid-file
46.Op Fl l Ar packetlog-file
47.Op Fl N Ar udpencap-port
48.Op Fl p Ar listen-port
49.Op Fl R Ar report-file
50.Sh DESCRIPTION
51The
52.Nm
53daemon establishes Security Associations (SAs) for encrypted
54and/or authenticated network traffic.
55At this moment, and probably forever, this means
56.Xr ipsec 4
57traffic.
58Traditionally,
59.Nm
60was configured using the
61.Xr isakmpd.conf 5
62file format.
63A newer, much simpler format is now available:
64.Xr ipsec.conf 5 .
65.Pp
66.Nm
67implements the IKEv1 protocol which is defined in the standards
68ISAKMP/Oakley (RFC 2408), IKE (RFC 2409), and the Internet DOI (RFC 2407).
69The newer IKEv2 protocol,
70as defined in RFC 5996,
71is not supported by
72.Nm
73but by
74.Xr iked 8 .
75It follows then that references to IKE in this document
76pertain to IKEv1 only,
77and not IKEv2.
78.Pp
79The way
80.Nm
81goes about its work is by maintaining an internal configuration
82as well as a policy database which describes what kinds of SAs to negotiate,
83and by listening for different events that trigger these negotiations.
84The events that control
85.Nm
86consist of negotiation initiations from a remote party, user input via
87a FIFO or by signals, upcalls from the kernel via a
88.Dv PF_KEY
89socket, and lastly by scheduled events triggered by timers running out.
90.Pp
91Most uses of
92.Nm
93will be to implement so called "virtual private networks" (VPNs).
94The ability to provide redundancy is made available through
95.Xr carp 4
96and
97.Xr sasyncd 8 .
98For other uses, some more knowledge of IKEv1 as a protocol is required.
99The RFCs mentioned below are a possible starting point.
100.Pp
101On startup
102.Nm
103forks into two processes for privilege separation.
104The unprivileged child jails itself with
105.Xr chroot 8
106to
107.Pa /var/empty .
108The privileged process communicates with the child, reads configuration files
109and PKI information, and binds to privileged ports on its behalf.
110See the
111.Sx CAVEATS
112section below.
113.Pp
114The options are as follows:
115.Bl -tag -width Ds
116.It Fl 4 | 6
117These options control what address family
118.Pf ( Dv AF_INET
119and/or
120.Dv AF_INET6 )
121.Nm
122will use.
123The default is to use both IPv4 and IPv6.
124.It Fl a
125If given,
126.Nm
127does not set up flows automatically.
128Instead manual flows may be configured using
129.Xr ipsec.conf 5
130or by programs such as
131.Xr bgpd 8 .
132Thus
133.Nm
134only takes care of SA establishment.
135.It Fl c Ar config-file
136If given, the
137.Fl c
138option specifies an alternate configuration file instead of
139.Pa /etc/isakmpd/isakmpd.conf .
140As this file may contain sensitive information, it must be readable
141only by the user running the daemon.
142.Nm
143will reread the configuration file when sent a
144.Dv SIGHUP
145signal.
146.Pp
147Note that this option applies only to configuration files in the
148.Xr isakmpd.conf 5
149format, not those in the
150.Xr ipsec.conf 5
151format.
152.It Fl D Ar class Ns = Ns Ar level
153Debugging class.
154It's possible to specify this argument many times.
155It takes a parameter of the form
156.Ar class Ns = Ns Ar level ,
157where both
158.Ar class
159and
160.Ar level
161are numbers.
162.Ar class
163denotes a debugging class, and
164.Ar level
165the level you want that debugging class to
166limit debug printouts at (i.e. all debug printouts above the level specified
167will not output anything).
168If
169.Ar class
170is set to
171.Sq A ,
172then all debugging classes are set to the specified level.
173.Pp
174Valid values for
175.Ar class
176are as follows:
177.Pp
178.Bl -tag -width 2n -offset indent -compact
179.It 0
180Misc
181.It 1
182Transport
183.It 2
184Message
185.It 3
186Crypto
187.It 4
188Timer
189.It 5
190Sysdep
191.It 6
192SA
193.It 7
194Exchange
195.It 8
196Negotiation
197.It 9
198Policy
199.It 10
200FIFO user interface
201.It A
202All
203.El
204.Pp
205Currently used values for
206.Ar level
207are 0 to 99.
208.It Fl d
209The
210.Fl d
211option is used to make the daemon run in the foreground, logging to stderr.
212.It Fl f Ar fifo
213The
214.Fl f
215option specifies the FIFO
216(a.k.a. named pipe) where the daemon listens for
217user requests.
218If the path given is a dash
219.Pq Sq \&- ,
220.Nm
221will listen to stdin instead.
222.It Fl i Ar pid-file
223By default the PID of the daemon process will be written to
224.Pa /var/run/isakmpd.pid .
225This path can be overridden by specifying another one as the argument to the
226.Fl i
227option.
228Note that only paths beginning with
229.Pa /var/run
230are allowed.
231.It Fl K
232When this option is given,
233.Nm
234does not read the policy configuration file and no
235.Xr keynote 4
236policy check is accomplished.
237This option can be used when policies for flows and SA establishment are
238arranged by other programs like
239.Xr ipsecctl 8
240or
241.Xr bgpd 8 .
242.It Fl L
243Enable IKE packet capture.
244When this option is given,
245.Nm
246will write an unencrypted copy of the negotiation packets it
247is sending and receiving to the file
248.Pa /var/run/isakmpd.pcap ,
249which can later be read by
250.Xr tcpdump 8
251and other utilities using
252.Xr pcap_open_offline 3 .
253.It Fl l Ar packetlog-file
254As option
255.Fl L
256above, but capture to a specified file.
257Note that only paths beginning with
258.Pa /var/run
259are allowed.
260.It Fl N Ar udpencap-port
261The
262.Fl N
263option specifies the listen port for encapsulated UDP
264that the daemon will bind to.
265.It Fl n
266When the
267.Fl n
268option is given, the kernel will not take part in the negotiations.
269This is a non-destructive mode, so to speak, in that it won't alter any
270SAs in the IPsec stack.
271.It Fl p Ar listen-port
272The
273.Fl p
274option specifies the listen port the daemon will bind to.
275.It Fl R Ar report-file
276When you signal
277.Nm
278a
279.Dv SIGUSR1 ,
280it will report its internal state to a report file, normally
281.Pa /var/run/isakmpd.report ,
282but this can be changed by feeding
283the file name as an argument to the
284.Fl R
285flag.
286Note that only paths beginning with
287.Pa /var/run
288are allowed.
289.It Fl S
290This option is used for setups using
291.Xr sasyncd 8
292and
293.Xr carp 4
294to provide redundancy.
295.Nm
296starts in passive mode and will not initiate any connections
297or process any incoming traffic until
298sasyncd has determined that the host is the carp master.
299Additionally,
300.Nm
301will not delete SAs on shutdown
302by sending delete messages to all peers.
303.It Fl T
304When this option is given, NAT-Traversal will be disabled and
305.Nm
306will not advertise support for NAT-Traversal to its peers.
307.It Fl v
308Enables verbose logging.
309Normally,
310.Nm
311is silent and outputs only messages when a warning or an error occurs.
312With verbose logging
313.Nm
314reports successful completion of phase 1 (Main and Aggressive) and phase 2
315(Quick) exchanges (Information and Transaction exchanges do not generate any
316additional status information).
317.El
318.Sh THE FIFO USER INTERFACE
319When
320.Nm
321starts, it creates a FIFO (named pipe) where it listens for user
322requests.
323All commands start with a single letter, followed by command-specific options.
324Available commands are:
325.Pp
326.Bl -tag -width Ds -compact
327.It Ic C add Oo Ar section Oc : Ns Ar tag Ns = Ns Ar value
328.It Ic C rmv Oo Ar section Oc : Ns Ar tag Ns = Ns Ar value
329.It Ic C rm Oo Ar section Oc : Ns Ar tag
330.It Ic C rms Op Ar section
331.It Ic C set Oo Ar section Oc : Ns Ar tag Ns = Ns Ar value Op Ic force
332Update the running
333.Nm
334configuration atomically.
335.Sq set
336sets a configuration value consisting of a section, tag, and value triplet.
337.Sq set
338will fail if the configuration already contains a section with the named tag;
339use the
340.Sq force
341option to change this behaviour.
342.Sq add
343appends a configuration value to the named configuration list tag,
344unless the value is already in the list.
345.Sq rm
346removes a tag in a section.
347.Sq rms
348removes an entire section.
349.Sq rmv
350removes an entry from a list, thus reversing an
351.Sq add
352operation.
353.Pp
354NOTE: Sending
355.Nm
356a
357.Dv SIGHUP
358or an "R" through the FIFO will void any updates done to the configuration.
359.Pp
360.It Ic C get Oo Ar section Oc : Ns Ar tag
361Get the configuration value of the specified section and tag.
362The result is stored in
363.Pa /var/run/isakmpd.result .
364.Pp
365.It Ic c Ar name
366Start the named connection, if stopped or inactive.
367.Pp
368.It Ic D Ar class level
369.It Ic D A Ar level
370.It Ic D T
371Set debug class
372.Ar class
373to level
374.Ar level .
375If
376.Ar class
377is specified as
378.Sq A ,
379the level applies to all debug classes.
380.Ic D T
381toggles all debug classes to level zero.
382Another
383.Ic D T
384command will toggle them back to the earlier levels.
385.Pp
386.It Ic d Ar cookies msgid
387Delete the specified SA from the system.
388Specify
389.Ar msgid
390as
391.Sq -
392to match a Phase 1 SA.
393.Pp
394.It Ic M active
395.It Ic M passive
396Set
397.Nm
398to active or passive mode.
399In passive mode no packets are sent to peers.
400.Pp
401.It Ic p on Ns Op = Ns Ar path
402.It Ic p off
403Enable or disable cleartext IKE packet capture.
404When enabling, optionally specify which file
405.Nm
406should capture the packets to
407(the default is
408.Pa /var/run/isakmpd.pcap ) .
409Note that only paths beginning with
410.Pa /var/run
411are allowed.
412.Pp
413.It Ic Q
414Cleanly shutdown the daemon, as when sent a
415.Dv SIGTERM
416signal.
417.Pp
418.It Ic R
419Reinitialize
420.Nm isakmpd ,
421as when sent a
422.Dv SIGHUP
423signal.
424.Pp
425.It Ic r
426Report
427.Nm
428internal state to
429.Xr syslog 3 .
430See the
431.Fl R
432option.
433Same as when sent a
434.Dv SIGUSR1
435signal.
436.Pp
437.It Ic S
438Report information on all known SAs to the
439.Pa /var/run/isakmpd.result
440file.
441.Pp
442.It Ic T
443Tear down all active quick mode connections.
444.Pp
445.It Ic t Oo Ar phase Oc Ar name
446Tear down the named connection, if active.
447For
448.Ar name ,
449the tag specified in
450.Xr isakmpd.conf 5
451or the IP address of the remote host can be used.
452The optional parameter
453.Ar phase
454specifies whether to delete a phase 1 or phase 2 SA.
455The value
456.Sq main
457indicates a phase 1 connection;
458the value
459.Sq quick
460a phase 2 connection.
461If no phase is specified,
462.Sq quick
463will be assumed.
464.El
465.Sh SETTING UP AN IKE PUBLIC KEY INFRASTRUCTURE (PKI)
466In order to use public key based authentication, there has to be an
467infrastructure managing the key signing.
468Either there is an already existing PKI
469.Nm
470should take part in, or there will be a need to set one up.
471The procedures for using a pre-existing PKI varies depending on the
472actual Certificate Authority (CA) used, and is therefore not covered here,
473other than mentioning that
474.Xr openssl 1
475needs to be used to create a Certificate Signing Request (CSR) that the
476CA understands.
477.Pp
478A number of methods exist to allow authentication:
479.Bl -ohang -offset indent
480.It Passphrase:
481This method does not use keys at all, but relies on a shared passphrase.
482.It Host Keys:
483Public keys are used to authenticate.
484See
485.Sx PUBLIC KEY AUTHENTICATION
486below.
487.It X.509 Certificates:
488X.509 Certificates are used to authenticate.
489See
490.Sx X.509 AUTHENTICATION
491below.
492.It Keynote Certificates:
493Keynote Certificates are used to authenticate.
494See
495.Sx KEYNOTE AUTHENTICATION
496below.
497.El
498.Pp
499When configuring
500.Nm
501for key- and certificate-based authentication,
502the
503.Dq Transforms
504tag in
505.Xr isakmpd.conf 5
506should include
507.Dq RSA_SIG .
508For example, the transform
509.Dq 3DES-SHA-RSA_SIG
510means:
5113DES encryption, SHA hash, authentication using RSA signatures.
512.Sh PUBLIC KEY AUTHENTICATION
513It is possible to store trusted public keys to make them directly
514usable by
515.Nm ,
516bypassing the need to use certificates.
517The keys should be saved in PEM format (see
518.Xr openssl 1 )
519and named and stored after this easy formula:
520.Pp
521.Bl -tag -width "for_ufqdn_identitiesXX" -offset 3n -compact
522.It For IPv4 identities:
523.Pa /etc/isakmpd/pubkeys/ipv4/A.B.C.D
524.It For IPv6 identities:
525.Pa /etc/isakmpd/pubkeys/ipv6/abcd:abcd::ab:bc
526.It For FQDN identities:
527.Pa /etc/isakmpd/pubkeys/fqdn/foo.bar.org
528.It For UFQDN identities:
529.Pa /etc/isakmpd/pubkeys/ufqdn/user@foo.bar.org
530.El
531.Pp
532Depending on the
533.Dv ID-type
534field of
535.Xr isakmpd.conf 5 ,
536keys may be named after their IPv4 address (IPV4_ADDR or IPV4_ADDR_SUBNET),
537IPv6 address (IPV6_ADDR or IPV6_ADDR_SUBNET),
538fully qualified domain name (FDQN),
539user fully qualified domain name (USER_FQDN),
540or key ID (KEY_ID).
541.Pp
542For example,
543.Nm
544can authenticate using the pre-generated keys if the local public key,
545by default
546.Pa /etc/isakmpd/local.pub ,
547is copied to the remote gateway as
548.Pa /etc/isakmpd/pubkeys/ipv4/local.gateway.ip.address
549and the remote gateway's public key
550is copied to the local gateway as
551.Pa /etc/isakmpd/pubkeys/ipv4/remote.gateway.ip.address .
552Of course, new keys may also be generated
553(the user is not required to use the pre-generated keys).
554In this example,
555.Dv ID-type
556would also have to be set to IPV4_ADDR or IPV4_ADDR_SUBNET
557in
558.Xr isakmpd.conf 5 .
559.Sh X.509 AUTHENTICATION
560X.509 is a framework for public key certificates.
561Certificates can be generated using
562.Xr openssl 1
563and provide a means for PKI authentication.
564In the following example, a CA is created along with host certificates
565to be signed by the CA.
566.Bl -enum
567.It
568Create your own Certificate Authority (CA).
569.Pp
570First, create a private key for the CA, and a Certificate Signing Request
571(CSR) to enable the CA to sign its own key:
572.Bd -literal -offset indent
573# openssl genrsa -out /etc/ssl/private/ca.key 2048
574# openssl req -new -key /etc/ssl/private/ca.key \e
575	-out /etc/ssl/private/ca.csr
576.Ed
577.Pp
578.Ic openssl req
579will prompt for information that will be incorporated
580into the certificate request.
581The information entered comprises a Distinguished Name (DN).
582There are quite a few fields, but some can be left blank.
583For some fields there will be a default value; if
584.Sq \&.
585is entered, the field will be left blank.
586.Pp
587After the CSR has been generated, it is used to create and sign
588a certificate for the CA:
589.Bd -literal -offset indent
590# openssl x509 -req -days 365 -in /etc/ssl/private/ca.csr \e
591	-signkey /etc/ssl/private/ca.key \e
592	-extfile /etc/ssl/x509v3.cnf -extensions x509v3_CA \e
593	-out /etc/ssl/ca.crt
594.Ed
595.It
596Create Certificate Signing Requests (CSRs) for IKE peers.
597The CSRs are signed with a pre-generated private key.
598.Pp
599This step, as well as the next one, needs to be done for every peer.
600Furthermore the last step will need to be done once for each ID you
601want the peer to have.
602The 10.0.0.1 below symbolizes that ID, in this case an IPv4 ID,
603and should be changed for each invocation.
604A fully qualified domain name (FQDN) may be used instead of an IPv4 ID.
605You will be asked for a DN for each run.
606Encoding the ID in the common name is recommended, as it should be unique.
607.Bd -literal -offset indent
608# openssl req -new -key /etc/isakmpd/private/local.key \e
609	-out /etc/isakmpd/private/10.0.0.1.csr
610.Ed
611.Pp
612Now take these certificate signing requests to your CA and process
613them as below.
614A configuration file is used to add a
615.Em subjectAltName
616extension field matching the ID used by
617.Nm
618to the certificate.
619.Pp
620If using an IPv4 ID, copy
621.Pa /etc/ssl/x509v3.cnf
622to a temporary file and edit it to replace
623.Dv $ENV::CERTIP
624with the IP address (10.0.0.1 in this example), then generate a signed
625certificate:
626.Bd -literal -offset indent
627# sed 's,\\$ENV::CERTIP,10.0.0.1,' \e
628	< /etc/ssl/x509v3.cnf > ~/tmp_x509v3.cnf
629# openssl x509 -req \e
630	-days 365 -in 10.0.0.1.csr \e
631	-CA /etc/ssl/ca.crt -CAkey /etc/ssl/private/ca.key \e
632	-CAcreateserial -extfile ~/tmp_x509v3.cnf \e
633	-extensions x509v3_IPAddr -out 10.0.0.1.crt
634.Ed
635.Pp
636For an FQDN certificate, replace
637.Dv $ENV::CERTFQDN
638with the hostname and generate a signed certificate:
639.Bd -literal -offset indent
640# sed 's,\\$ENV::CERTFQDN,somehost.somedomain,' \e
641	< /etc/ssl/x509v3.cnf > ~/tmp_x509v3.cnf
642# openssl x509 -req \e
643	-days 365 -in somehost.somedomain.csr \e
644	-CA /etc/ssl/ca.crt -CAkey /etc/ssl/private/ca.key \e
645	-CAcreateserial -extfile ~/tmp_x509v3.cnf \e
646	-extensions x509v3_FQDN -out somehost.somedomain.crt
647.Ed
648.Pp
649If CERTFQDN is being used,
650make sure that the
651.Va subjectAltName
652field of the certificate is specified using
653.Ic srcid
654in
655.Xr ipsec.conf 5 .
656A similar setup will be required if
657.Xr isakmpd.conf 5
658is being used instead.
659.Pp
660Put the certificate (the file ending in .crt) in
661.Pa /etc/isakmpd/certs/
662on your local system.
663Also carry over the CA cert
664.Pa /etc/ssl/ca.crt
665and put it in
666.Pa /etc/isakmpd/ca/ .
667.El
668.Pp
669To revoke certificates, create a Certificate Revocation List (CRL) file
670and install it in the
671.Pa /etc/isakmpd/crls/
672directory.
673See
674.Xr openssl 1
675and the
676.Sq crl
677subcommand for more info.
678.Sh KEYNOTE AUTHENTICATION
679Keynote is a trust-management framework.
680Keys can be generated using
681.Xr keynote 1
682and provide an alternative means for
683.Nm
684to authenticate.
685See
686.Xr keynote 4
687for further information.
688.Sh FILES
689.Bl -tag -width Ds
690.It Pa /etc/isakmpd/ca/
691The directory where CA certificates are kept.
692.It Pa /etc/isakmpd/certs/
693The directory where IKE certificates are kept, both the local
694certificate(s) and those of the peers, if a choice to have them kept
695permanently has been made.
696.It Pa /etc/isakmpd/crls/
697The directory where CRLs are kept.
698.It Pa /etc/isakmpd/isakmpd.conf
699The configuration file.
700As this file can contain sensitive information
701it must not be readable by anyone but the user running
702.Nm .
703.It Pa /etc/isakmpd/isakmpd.policy
704The keynote policy configuration file.
705The same mode requirements as
706.Pa isakmpd.conf .
707.It Pa /etc/isakmpd/keynote/
708The directory where KeyNote credentials are kept.
709.It Pa /etc/isakmpd/private/
710The directory where local private keys used for public key authentication
711are kept.
712By default, the system startup script
713.Xr rc 8
714generates a key-pair when starting, if one does not already exist.
715The entire keypair is in
716.Pa local.key ,
717and a copy of the public key suitable for transferring to other hosts
718is extracted into
719.Pa /etc/isakmpd/local.pub .
720There has to be a certificate for
721.Pa local.key
722in the certificate directory,
723.Pa /etc/isakmpd/certs/ .
724.Pa local.key
725has the same mode requirements as
726.Pa isakmpd.conf .
727.It Pa /etc/isakmpd/pubkeys/
728The directory in which trusted public keys are kept.
729The keys must be named in the fashion described above.
730.It Pa /var/run/isakmpd.fifo
731The FIFO used to manually control
732.Nm isakmpd .
733.It Pa /var/run/isakmpd.pcap
734The default IKE packet capture file.
735.It Pa /var/run/isakmpd.pid
736The PID of the current daemon.
737.It Pa /var/run/isakmpd.report
738The report file written when
739.Dv SIGUSR1
740is received.
741.It Pa /var/run/isakmpd.result
742The report file written when the
743.Sq S
744or
745.Sq "C get"
746command is issued in the command FIFO.
747.El
748.Sh SEE ALSO
749.Xr openssl 1 ,
750.Xr getnameinfo 3 ,
751.Xr pcap_open_offline 3 ,
752.Xr ipsec 4 ,
753.Xr ipsec.conf 5 ,
754.Xr isakmpd.conf 5 ,
755.Xr isakmpd.policy 5 ,
756.Xr iked 8 ,
757.Xr sasyncd 8 ,
758.Xr ssl 8 ,
759.Xr tcpdump 8
760.Sh STANDARDS
761.Rs
762.%A D. Piper
763.%D November 1998
764.%R RFC 2407
765.%T The Internet IP Security Domain of Interpretation for ISAKMP
766.Re
767.Pp
768.Rs
769.%A D. Maughan
770.%A M. Schertler
771.%A M. Schneider
772.%A J. Turner
773.%D November 1998
774.%R RFC 2408
775.%T Internet Security Association and Key Management Protocol (ISAKMP)
776.Re
777.Pp
778.Rs
779.%A D. Harkins
780.%A D. Carrel
781.%D November 1998
782.%R RFC 2409
783.%T The Internet Key Exchange (IKE)
784.Re
785.Pp
786.Rs
787.%A T. Kivinen
788.%A B. Swander
789.%A A. Huttunen
790.%A V. Volpe
791.%D January 2005
792.%R RFC 3947
793.%T Negotiation of NAT-Traversal in the IKE
794.Re
795.Sh HISTORY
796This implementation of the ISAKMP/Oakley key management protocol
797was done in 1998 by Niklas Hallqvist and Niels Provos,
798sponsored by Ericsson Radio Systems.
799.Sh CAVEATS
800When storing a trusted public key for an IPv6 identity, the
801.Em most efficient
802form of address representation, i.e. "::" instead of ":0:0:0:",
803must be used or the matching will fail.
804.Nm
805uses the output from
806.Xr getnameinfo 3
807for the address-to-name translation.
808The privileged process only allows binding to the default port 500 or
809unprivileged ports (>1024).
810It is not possible to change the interfaces
811.Nm
812listens on without a restart.
813.Pp
814For redundant setups with
815.Xr carp 4
816and
817.Xr sasyncd 8 ,
818.Xr sasyncd 8
819must be manually restarted every time
820.Nm
821is restarted, and
822.Xr isakmpd.conf 5
823must explicitly configure
824.Nm
825to listen on the virtual IP address of each
826.Xr carp 4
827interface.
828