xref: /openbsd-src/sbin/isakmpd/isakmpd.8 (revision f2da64fbbbf1b03f09f390ab01267c93dfd77c4c)
1.\" $OpenBSD: isakmpd.8,v 1.118 2016/03/05 08:38:36 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: March 5 2016 $
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 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
216.Tn FIFO
217(a.k.a. named pipe) where the daemon listens for
218user requests.
219If the path given is a dash
220.Pq Sq \&- ,
221.Nm
222will listen to stdin instead.
223.It Fl i Ar pid-file
224By default the PID of the daemon process will be written to
225.Pa /var/run/isakmpd.pid .
226This path can be overridden by specifying another one as the argument to the
227.Fl i
228option.
229Note that only paths beginning with
230.Pa /var/run
231are allowed.
232.It Fl K
233When this option is given,
234.Nm
235does not read the policy configuration file and no
236.Xr keynote 4
237policy check is accomplished.
238This option can be used when policies for flows and SA establishment are
239arranged by other programs like
240.Xr ipsecctl 8
241or
242.Xr bgpd 8 .
243.It Fl L
244Enable IKE packet capture.
245When this option is given,
246.Nm
247will write an unencrypted copy of the negotiation packets it
248is sending and receiving to the file
249.Pa /var/run/isakmpd.pcap ,
250which can later be read by
251.Xr tcpdump 8
252and other utilities using
253.Xr pcap 3 .
254.It Fl l Ar packetlog-file
255As option
256.Fl L
257above, but capture to a specified file.
258Note that only paths beginning with
259.Pa /var/run
260are allowed.
261.It Fl N Ar udpencap-port
262The
263.Fl N
264option specifies the listen port for encapsulated UDP
265that the daemon will bind to.
266.It Fl n
267When the
268.Fl n
269option is given, the kernel will not take part in the negotiations.
270This is a non-destructive mode, so to speak, in that it won't alter any
271SAs in the IPsec stack.
272.It Fl p Ar listen-port
273The
274.Fl p
275option specifies the listen port the daemon will bind to.
276.It Fl R Ar report-file
277When you signal
278.Nm
279a
280.Dv SIGUSR1 ,
281it will report its internal state to a report file, normally
282.Pa /var/run/isakmpd.report ,
283but this can be changed by feeding
284the file name as an argument to the
285.Fl R
286flag.
287Note that only paths beginning with
288.Pa /var/run
289are allowed.
290.It Fl S
291This option is used for setups using
292.Xr sasyncd 8
293and
294.Xr carp 4
295to provide redundancy.
296.Nm
297starts in passive mode and will not initiate any connections
298or process any incoming traffic until
299sasyncd has determined that the host is the carp master.
300Additionally,
301.Nm
302will not delete SAs on shutdown
303by sending delete messages to all peers.
304.It Fl T
305When this option is given, NAT-Traversal will be disabled and
306.Nm
307will not advertise support for NAT-Traversal to its peers.
308.It Fl v
309Enables verbose logging.
310Normally,
311.Nm
312is silent and outputs only messages when a warning or an error occurs.
313With verbose logging
314.Nm
315reports successful completion of phase 1 (Main and Aggressive) and phase 2
316(Quick) exchanges (Information and Transaction exchanges do not generate any
317additional status information).
318.El
319.Sh THE FIFO USER INTERFACE
320When
321.Nm
322starts, it creates a FIFO (named pipe) where it listens for user
323requests.
324All commands start with a single letter, followed by command-specific options.
325Available commands are:
326.Pp
327.Bl -tag -width Ds -compact
328.It Ic C add Oo Ar section Oc : Ns Ar tag Ns = Ns Ar value
329.It Ic C rmv Oo Ar section Oc : Ns Ar tag Ns = Ns Ar value
330.It Ic C rm Oo Ar section Oc : Ns Ar tag
331.It Ic C rms Op Ar section
332.It Ic C set Oo Ar section Oc : Ns Ar tag Ns = Ns Ar value Op Ic force
333Update the running
334.Nm
335configuration atomically.
336.Sq set
337sets a configuration value consisting of a section, tag, and value triplet.
338.Sq set
339will fail if the configuration already contains a section with the named tag;
340use the
341.Sq force
342option to change this behaviour.
343.Sq add
344appends a configuration value to the named configuration list tag,
345unless the value is already in the list.
346.Sq rm
347removes a tag in a section.
348.Sq rms
349removes an entire section.
350.Sq rmv
351removes an entry from a list, thus reversing an
352.Sq add
353operation.
354.Pp
355NOTE: Sending
356.Nm
357a
358.Dv SIGHUP
359or an "R" through the FIFO will void any updates done to the configuration.
360.Pp
361.It Ic C get Oo Ar section Oc : Ns Ar tag
362Get the configuration value of the specified section and tag.
363The result is stored in
364.Pa /var/run/isakmpd.result .
365.Pp
366.It Ic c Ar name
367Start the named connection, if stopped or inactive.
368.Pp
369.It Ic D Ar class level
370.It Ic D A Ar level
371.It Ic D T
372Set debug class
373.Ar class
374to level
375.Ar level .
376If
377.Ar class
378is specified as
379.Sq A ,
380the level applies to all debug classes.
381.Ic D T
382toggles all debug classes to level zero.
383Another
384.Ic D T
385command will toggle them back to the earlier levels.
386.Pp
387.It Ic d Ar cookies msgid
388Delete the specified SA from the system.
389Specify
390.Ar msgid
391as
392.Sq -
393to match a Phase 1 SA.
394.Pp
395.It Ic M active
396.It Ic M passive
397Set
398.Nm
399to active or passive mode.
400In passive mode no packets are sent to peers.
401.Pp
402.It Ic p on Ns Op = Ns Ar path
403.It Ic p off
404Enable or disable cleartext IKE packet capture.
405When enabling, optionally specify which file
406.Nm
407should capture the packets to
408(the default is
409.Pa /var/run/isakmpd.pcap ) .
410Note that only paths beginning with
411.Pa /var/run
412are allowed.
413.Pp
414.It Ic Q
415Cleanly shutdown the daemon, as when sent a
416.Dv SIGTERM
417signal.
418.Pp
419.It Ic R
420Reinitialize
421.Nm isakmpd ,
422as when sent a
423.Dv SIGHUP
424signal.
425.Pp
426.It Ic r
427Report
428.Nm
429internal state to
430.Xr syslog 3 .
431See the
432.Fl R
433option.
434Same as when sent a
435.Dv SIGUSR1
436signal.
437.Pp
438.It Ic S
439Report information on all known SAs to the
440.Pa /var/run/isakmpd.result
441file.
442.Pp
443.It Ic T
444Tear down all active quick mode connections.
445.Pp
446.It Ic t Oo Ar phase Oc Ar name
447Tear down the named connection, if active.
448For
449.Ar name ,
450the tag specified in
451.Xr isakmpd.conf 5
452or the IP address of the remote host can be used.
453The optional parameter
454.Ar phase
455specifies whether to delete a phase 1 or phase 2 SA.
456The value
457.Sq main
458indicates a phase 1 connection;
459the value
460.Sq quick
461a phase 2 connection.
462If no phase is specified,
463.Sq quick
464will be assumed.
465.El
466.Sh SETTING UP AN IKE PUBLIC KEY INFRASTRUCTURE (PKI)
467In order to use public key based authentication, there has to be an
468infrastructure managing the key signing.
469Either there is an already existing PKI
470.Nm
471should take part in, or there will be a need to set one up.
472The procedures for using a pre-existing PKI varies depending on the
473actual Certificate Authority (CA) used, and is therefore not covered here,
474other than mentioning that
475.Xr openssl 1
476needs to be used to create a Certificate Signing Request (CSR) that the
477CA understands.
478.Pp
479A number of methods exist to allow authentication:
480.Bl -ohang -offset indent
481.It Passphrase:
482This method does not use keys at all, but relies on a shared passphrase.
483.It Host Keys:
484Public keys are used to authenticate.
485See
486.Sx PUBLIC KEY AUTHENTICATION
487below.
488.It X.509 Certificates:
489X.509 Certificates are used to authenticate.
490See
491.Sx X.509 AUTHENTICATION
492below.
493.It Keynote Certificates:
494Keynote Certificates are used to authenticate.
495See
496.Sx KEYNOTE AUTHENTICATION
497below.
498.El
499.Pp
500When configuring
501.Nm
502for key- and certificate-based authentication,
503the
504.Dq Transforms
505tag in
506.Xr isakmpd.conf 5
507should include
508.Dq RSA_SIG .
509For example, the transform
510.Dq 3DES-SHA-RSA_SIG
511means:
5123DES encryption, SHA hash, authentication using RSA signatures.
513.Sh PUBLIC KEY AUTHENTICATION
514It is possible to store trusted public keys to make them directly
515usable by
516.Nm ,
517bypassing the need to use certificates.
518The keys should be saved in PEM format (see
519.Xr openssl 1 )
520and named and stored after this easy formula:
521.Pp
522.Bl -tag -width "for_ufqdn_identitiesXX" -offset 3n -compact
523.It For IPv4 identities:
524.Pa /etc/isakmpd/pubkeys/ipv4/A.B.C.D
525.It For IPv6 identities:
526.Pa /etc/isakmpd/pubkeys/ipv6/abcd:abcd::ab:bc
527.It For FQDN identities:
528.Pa /etc/isakmpd/pubkeys/fqdn/foo.bar.org
529.It For UFQDN identities:
530.Pa /etc/isakmpd/pubkeys/ufqdn/user@foo.bar.org
531.El
532.Pp
533Depending on the
534.Dv ID-type
535field of
536.Xr isakmpd.conf 5 ,
537keys may be named after their IPv4 address (IPV4_ADDR or IPV4_ADDR_SUBNET),
538IPv6 address (IPV6_ADDR or IPV6_ADDR_SUBNET),
539fully qualified domain name (FDQN),
540user fully qualified domain name (USER_FQDN),
541or key ID (KEY_ID).
542.Pp
543For example,
544.Nm
545can authenticate using the pre-generated keys if the local public key,
546by default
547.Pa /etc/isakmpd/local.pub ,
548is copied to the remote gateway as
549.Pa /etc/isakmpd/pubkeys/ipv4/local.gateway.ip.address
550and the remote gateway's public key
551is copied to the local gateway as
552.Pa /etc/isakmpd/pubkeys/ipv4/remote.gateway.ip.address .
553Of course, new keys may also be generated
554(the user is not required to use the pre-generated keys).
555In this example,
556.Dv ID-type
557would also have to be set to IPV4_ADDR or IPV4_ADDR_SUBNET
558in
559.Xr isakmpd.conf 5 .
560.Sh X.509 AUTHENTICATION
561X.509 is a framework for public key certificates.
562Certificates can be generated using
563.Xr openssl 1
564and provide a means for PKI authentication.
565In the following example, a CA is created along with host certificates
566to be signed by the CA.
567.Bl -enum
568.It
569Create your own Certificate Authority (CA).
570.Pp
571First, create a private key for the CA, and a Certificate Signing Request
572(CSR) to enable the CA to sign its own key:
573.Bd -literal -offset indent
574# openssl genrsa -out /etc/ssl/private/ca.key 2048
575# openssl req -new -key /etc/ssl/private/ca.key \e
576	-out /etc/ssl/private/ca.csr
577.Ed
578.Pp
579.Ic openssl req
580will prompt for information that will be incorporated
581into the certificate request.
582The information entered comprises a Distinguished Name (DN).
583There are quite a few fields, but some can be left blank.
584For some fields there will be a default value; if
585.Sq \&.
586is entered, the field will be left blank.
587.Pp
588After the CSR has been generated, it is used to create and sign
589a certificate for the CA:
590.Bd -literal -offset indent
591# openssl x509 -req -days 365 -in /etc/ssl/private/ca.csr \e
592	-signkey /etc/ssl/private/ca.key \e
593	-extfile /etc/ssl/x509v3.cnf -extensions x509v3_CA \e
594	-out /etc/ssl/ca.crt
595.Ed
596.It
597Create Certificate Signing Requests (CSRs) for IKE peers.
598The CSRs are signed with a pre-generated private key.
599.Pp
600This step, as well as the next one, needs to be done for every peer.
601Furthermore the last step will need to be done once for each ID you
602want the peer to have.
603The 10.0.0.1 below symbolizes that ID, in this case an IPv4 ID,
604and should be changed for each invocation.
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
615.Em subjectAltName
616extension field should be added to the certificate.
617Replace 10.0.0.1 with the IP address which
618.Nm
619will use as the certificate identity.
620.Pp
621Copy
622.Pa /etc/ssl/x509v3.cnf
623to a temporary file and edit it to replace
624.Dv $ENV::CERTIP
625with 10.0.0.1, then run:
626.Bd -literal -offset indent
627# openssl x509 -req \e
628	-days 365 -in 10.0.0.1.csr \e
629	-CA /etc/ssl/ca.crt -CAkey /etc/ssl/private/ca.key \e
630	-CAcreateserial -extfile /etc/ssl/x509v3.cnf \e
631	-extensions x509v3_IPAddr -out 10.0.0.1.crt
632.Ed
633.Pp
634For a FQDN certificate, replace
635.Dv $ENV::CERTIP
636with the hostname and run:
637.Bd -literal -offset indent
638# openssl x509 -req \e
639	-days 365 -in somehost.somedomain.csr \e
640	-CA /etc/ssl/ca.crt -CAkey /etc/ssl/private/ca.key \e
641	-CAcreateserial -extfile /etc/ssl/x509v3.cnf \e
642	-extensions x509v3_FQDN -out somehost.somedomain.crt
643.Ed
644.Pp
645If CERTFQDN is being used,
646make sure that the
647.Va subjectAltName
648field of the certificate is specified using
649.Ic srcid
650in
651.Xr ipsec.conf 5 .
652A similar setup will be required if
653.Xr isakmpd.conf 5
654is being used instead.
655.Pp
656Put the certificate (the file ending in .crt) in
657.Pa /etc/isakmpd/certs/
658on your local system.
659Also carry over the CA cert
660.Pa /etc/ssl/ca.crt
661and put it in
662.Pa /etc/isakmpd/ca/ .
663.El
664.Pp
665To revoke certificates, create a Certificate Revocation List (CRL) file
666and install it in the
667.Pa /etc/isakmpd/crls/
668directory.
669See
670.Xr openssl 1
671and the
672.Sq crl
673subcommand for more info.
674.Sh KEYNOTE AUTHENTICATION
675Keynote is a trust-management framework.
676Keys can be generated using
677.Xr keynote 1
678and provide an alternative means for
679.Nm
680to authenticate.
681See
682.Xr keynote 4
683for further information.
684.Sh FILES
685.Bl -tag -width Ds
686.It Pa /etc/isakmpd/ca/
687The directory where CA certificates are kept.
688.It Pa /etc/isakmpd/certs/
689The directory where IKE certificates are kept, both the local
690certificate(s) and those of the peers, if a choice to have them kept
691permanently has been made.
692.It Pa /etc/isakmpd/crls/
693The directory where CRLs are kept.
694.It Pa /etc/isakmpd/isakmpd.conf
695The configuration file.
696As this file can contain sensitive information
697it must not be readable by anyone but the user running
698.Nm .
699.It Pa /etc/isakmpd/isakmpd.policy
700The keynote policy configuration file.
701The same mode requirements as
702.Pa isakmpd.conf .
703.It Pa /etc/isakmpd/keynote/
704The directory where KeyNote credentials are kept.
705.It Pa /etc/isakmpd/private/
706The directory where local private keys used for public key authentication
707are kept.
708By default, the system startup script
709.Xr rc 8
710generates a key-pair when starting, if one does not already exist.
711The entire keypair is in
712.Pa local.key ,
713and a copy of the public key suitable for transferring to other hosts
714is extracted into
715.Pa /etc/isakmpd/local.pub .
716There has to be a certificate for
717.Pa local.key
718in the certificate directory,
719.Pa /etc/isakmpd/certs/ .
720.Pa local.key
721has the same mode requirements as
722.Pa isakmpd.conf .
723.It Pa /etc/isakmpd/pubkeys/
724The directory in which trusted public keys are kept.
725The keys must be named in the fashion described above.
726.It Pa /var/run/isakmpd.fifo
727The FIFO used to manually control
728.Nm isakmpd .
729.It Pa /var/run/isakmpd.pcap
730The default IKE packet capture file.
731.It Pa /var/run/isakmpd.pid
732The PID of the current daemon.
733.It Pa /var/run/isakmpd.report
734The report file written when
735.Dv SIGUSR1
736is received.
737.It Pa /var/run/isakmpd.result
738The report file written when the
739.Sq S
740or
741.Sq "C get"
742command is issued in the command FIFO.
743.El
744.Sh SEE ALSO
745.Xr openssl 1 ,
746.Xr getnameinfo 3 ,
747.Xr pcap 3 ,
748.Xr ipsec 4 ,
749.Xr ipsec.conf 5 ,
750.Xr isakmpd.conf 5 ,
751.Xr isakmpd.policy 5 ,
752.Xr iked 8 ,
753.Xr sasyncd 8 ,
754.Xr ssl 8 ,
755.Xr tcpdump 8
756.Sh STANDARDS
757.Rs
758.%A D. Piper
759.%D November 1998
760.%R RFC 2407
761.%T The Internet IP Security Domain of Interpretation for ISAKMP
762.Re
763.Pp
764.Rs
765.%A D. Maughan
766.%A M. Schertler
767.%A M. Schneider
768.%A J. Turner
769.%D November 1998
770.%R RFC 2408
771.%T Internet Security Association and Key Management Protocol (ISAKMP)
772.Re
773.Pp
774.Rs
775.%A D. Harkins
776.%A D. Carrel
777.%D November 1998
778.%R RFC 2409
779.%T The Internet Key Exchange (IKE)
780.Re
781.Pp
782.Rs
783.%A T. Kivinen
784.%A B. Swander
785.%A A. Huttunen
786.%A V. Volpe
787.%D January 2005
788.%R RFC 3947
789.%T Negotiation of NAT-Traversal in the IKE
790.Re
791.Sh HISTORY
792This implementation of the ISAKMP/Oakley key management protocol
793was done in 1998 by Niklas Hallqvist and Niels Provos,
794sponsored by Ericsson Radio Systems.
795.Sh CAVEATS
796When storing a trusted public key for an IPv6 identity, the
797.Em most efficient
798form of address representation, i.e. "::" instead of ":0:0:0:",
799must be used or the matching will fail.
800.Nm
801uses the output from
802.Xr getnameinfo 3
803for the address-to-name translation.
804The privileged process only allows binding to the default port 500 or
805unprivileged ports (>1024).
806It is not possible to change the interfaces
807.Nm
808listens on without a restart.
809.Pp
810For redundant setups,
811.Xr sasyncd 8
812must be manually restarted every time
813.Nm
814is restarted.
815