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