Annotation of embedaddon/ipsec-tools/src/setkey/setkey.8, revision 1.1
1.1 ! misho 1: .\" $NetBSD: setkey.8,v 1.26 2010/12/03 14:32:52 tteras Exp $
! 2: .\"
! 3: .\" Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
! 4: .\" All rights reserved.
! 5: .\"
! 6: .\" Redistribution and use in source and binary forms, with or without
! 7: .\" modification, are permitted provided that the following conditions
! 8: .\" are met:
! 9: .\" 1. Redistributions of source code must retain the above copyright
! 10: .\" notice, this list of conditions and the following disclaimer.
! 11: .\" 2. Redistributions in binary form must reproduce the above copyright
! 12: .\" notice, this list of conditions and the following disclaimer in the
! 13: .\" documentation and/or other materials provided with the distribution.
! 14: .\" 3. Neither the name of the project nor the names of its contributors
! 15: .\" may be used to endorse or promote products derived from this software
! 16: .\" without specific prior written permission.
! 17: .\"
! 18: .\" THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
! 19: .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
! 20: .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
! 21: .\" ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
! 22: .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
! 23: .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
! 24: .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
! 25: .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
! 26: .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
! 27: .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
! 28: .\" SUCH DAMAGE.
! 29: .\"
! 30: .Dd June 4, 2010
! 31: .Dt SETKEY 8
! 32: .Os
! 33: .\"
! 34: .Sh NAME
! 35: .Nm setkey
! 36: .Nd manually manipulate the IPsec SA/SP database
! 37: .\"
! 38: .Sh SYNOPSIS
! 39: .Nm setkey
! 40: .Op Fl knrv
! 41: .Ar file ...
! 42: .Nm setkey
! 43: .Op Fl knrv
! 44: .Fl c
! 45: .Nm setkey
! 46: .Op Fl krv
! 47: .Fl f Ar filename
! 48: .Nm setkey
! 49: .Op Fl aklPrv
! 50: .Fl D
! 51: .Nm setkey
! 52: .Op Fl Pvp
! 53: .Fl F
! 54: .Nm setkey
! 55: .Op Fl H
! 56: .Fl x
! 57: .Nm setkey
! 58: .Op Fl ?V
! 59: .\"
! 60: .Sh DESCRIPTION
! 61: .Nm
! 62: adds, updates, dumps, or flushes
! 63: Security Association Database (SAD) entries
! 64: as well as Security Policy Database (SPD) entries in the kernel.
! 65: .Pp
! 66: .Nm
! 67: takes a series of operations from standard input
! 68: .Po
! 69: if invoked with
! 70: .Fl c
! 71: .Pc
! 72: or the file named
! 73: .Ar filename
! 74: .Po
! 75: if invoked with
! 76: .Fl f Ar filename
! 77: .Pc .
! 78: .Bl -tag -width Ds
! 79: .It (no flag)
! 80: Dump the SAD entries or SPD entries contained in the specified
! 81: .Ar file .
! 82: .It Fl ?
! 83: Print short help.
! 84: .It Fl a
! 85: .Nm
! 86: usually does not display dead SAD entries with
! 87: .Fl D .
! 88: If
! 89: .Fl a
! 90: is also specified, the dead SAD entries will be displayed as well.
! 91: A dead SAD entry is one that has expired but remains in the
! 92: system because it is referenced by some SPD entries.
! 93: .It Fl D
! 94: Dump the SAD entries.
! 95: If
! 96: .Fl P
! 97: is also specified, the SPD entries are dumped.
! 98: If
! 99: .Fl p
! 100: is specified, the ports are displayed.
! 101: .It Fl F
! 102: Flush the SAD entries.
! 103: If
! 104: .Fl P
! 105: is also specified, the SPD entries are flushed.
! 106: .It Fl H
! 107: Add hexadecimal dump in
! 108: .Fl x
! 109: mode.
! 110: .It Fl h
! 111: On
! 112: .Nx ,
! 113: synonym for
! 114: .Fl H .
! 115: On other systems, synonym for
! 116: .Fl ? .
! 117: .It Fl k
! 118: Use semantics used in kernel.
! 119: Available only in Linux.
! 120: See also
! 121: .Fl r .
! 122: .It Fl l
! 123: Loop forever with short output on
! 124: .Fl D .
! 125: .It Fl n
! 126: No action.
! 127: The program will check validity of the input, but no changes to
! 128: the SPD will be made.
! 129: .It Fl r
! 130: Use semantics described in IPsec RFCs.
! 131: This mode is default.
! 132: For details see section
! 133: .Sx RFC vs Linux kernel semantics .
! 134: Available only in Linux.
! 135: See also
! 136: .Fl k .
! 137: .It Fl x
! 138: Loop forever and dump all the messages transmitted to the
! 139: .Dv PF_KEY
! 140: socket.
! 141: .Fl xx
! 142: prints the unformatted timestamps.
! 143: .It Fl V
! 144: Print version string.
! 145: .It Fl v
! 146: Be verbose.
! 147: The program will dump messages exchanged on the
! 148: .Dv PF_KEY
! 149: socket, including messages sent from other processes to the kernel.
! 150: .El
! 151: .Ss Configuration syntax
! 152: With
! 153: .Fl c
! 154: or
! 155: .Fl f
! 156: on the command line,
! 157: .Nm
! 158: accepts the following configuration syntax.
! 159: Lines starting with hash signs
! 160: .Pq Sq #
! 161: are treated as comment lines.
! 162: .Bl -tag -width Ds
! 163: .It Li add Oo Fl 46n Oc Ar src Ar dst Ar protocol Ar spi \
! 164: Oo Ar extensions Oc Ar algorithm ... Li ;
! 165: Add an SAD entry.
! 166: .Li add
! 167: can fail for multiple reasons, including when the key length does
! 168: not match the specified algorithm.
! 169: .\"
! 170: .It Li get Oo Fl 46n Oc Ar src Ar dst Ar protocol Ar spi Li ;
! 171: Show an SAD entry.
! 172: .\"
! 173: .It Li delete Oo Fl 46n Oc Ar src Ar dst Ar protocol Ar spi Li ;
! 174: Remove an SAD entry.
! 175: .\"
! 176: .It Li deleteall Oo Fl 46n Oc Ar src Ar dst Ar protocol Li ;
! 177: Remove all SAD entries that match the specification.
! 178: .\"
! 179: .It Li flush Oo Ar protocol Oc Li ;
! 180: Clear all SAD entries matched by the options.
! 181: .Fl F
! 182: on the command line achieves the same functionality.
! 183: .\"
! 184: .It Li dump Oo Ar protocol Oc Li ;
! 185: Dumps all SAD entries matched by the options.
! 186: .Fl D
! 187: on the command line achieves the same functionality.
! 188: .\"
! 189: .It Li spdadd Oo Fl 46n Oc Ar src_range Ar dst_range Ar upperspec \
! 190: Ar label Ar policy Li ;
! 191: Add an SPD entry.
! 192: .\"
! 193: .It Li spdadd tagged Ar tag Ar policy Li ;
! 194: Add an SPD entry based on a PF tag.
! 195: .Ar tag
! 196: must be a string surrounded by double quotes.
! 197: .\"
! 198: .It Li spdupdate Oo Fl 46n Oc Ar src_range Ar dst_range Ar upperspec \
! 199: Ar label Ar policy Li ;
! 200: Updates an SPD entry.
! 201: .\"
! 202: .It Li spdupdate tagged Ar tag Ar policy Li ;
! 203: Update an SPD entry based on a PF tag.
! 204: .Ar tag
! 205: must be a string surrounded by double quotes.
! 206: .\"
! 207: .It Li spddelete Oo Fl 46n Oc Ar src_range Ar dst_range Ar upperspec \
! 208: Fl P Ar direction Li ;
! 209: Delete an SPD entry.
! 210: .\"
! 211: .It Li spdflush Li ;
! 212: Clear all SPD entries.
! 213: .Fl FP
! 214: on the command line achieves the same functionality.
! 215: .\"
! 216: .It Li spddump Li ;
! 217: Dumps all SPD entries.
! 218: .Fl DP
! 219: on the command line achieves the same functionality.
! 220: .El
! 221: .\"
! 222: .Pp
! 223: Meta-arguments are as follows:
! 224: .Pp
! 225: .Bl -tag -compact -width Ds
! 226: .It Ar src
! 227: .It Ar dst
! 228: Source/destination of the secure communication is specified as
! 229: an IPv4/v6 address, and an optional port number between square
! 230: brackets.
! 231: .Nm
! 232: can resolve a FQDN into numeric addresses.
! 233: If the FQDN resolves into multiple addresses,
! 234: .Nm
! 235: will install multiple SAD/SPD entries into the kernel
! 236: by trying all possible combinations.
! 237: .Fl 4 ,
! 238: .Fl 6 ,
! 239: and
! 240: .Fl n
! 241: restrict the address resolution of FQDN in certain ways.
! 242: .Fl 4
! 243: and
! 244: .Fl 6
! 245: restrict results into IPv4/v6 addresses only, respectively.
! 246: .Fl n
! 247: avoids FQDN resolution and requires addresses to be numeric addresses.
! 248: .\"
! 249: .Pp
! 250: .It Ar protocol
! 251: .Ar protocol
! 252: is one of following:
! 253: .Bl -tag -width Fl -compact
! 254: .It Li esp
! 255: ESP based on rfc2406
! 256: .It Li esp-old
! 257: ESP based on rfc1827
! 258: .It Li ah
! 259: AH based on rfc2402
! 260: .It Li ah-old
! 261: AH based on rfc1826
! 262: .It Li ipcomp
! 263: IPComp
! 264: .It Li tcp
! 265: TCP-MD5 based on rfc2385
! 266: .El
! 267: .\"
! 268: .Pp
! 269: .It Ar spi
! 270: Security Parameter Index
! 271: .Pq SPI
! 272: for the SAD and the SPD.
! 273: .Ar spi
! 274: must be a decimal number, or a hexadecimal number with a
! 275: .Dq Li 0x
! 276: prefix.
! 277: SPI values between 0 and 255 are reserved for future use by IANA
! 278: and cannot be used.
! 279: TCP-MD5 associations must use 0x1000 and therefore only have per-host
! 280: granularity at this time.
! 281: .\"
! 282: .Pp
! 283: .It Ar extensions
! 284: take some of the following:
! 285: .Bl -tag -width Fl -compact
! 286: .\"
! 287: .It Fl m Ar mode
! 288: Specify a security protocol mode for use.
! 289: .Ar mode
! 290: is one of following:
! 291: .Li transport , tunnel ,
! 292: or
! 293: .Li any .
! 294: The default value is
! 295: .Li any .
! 296: .\"
! 297: .It Fl r Ar size
! 298: Specify window size of bytes for replay prevention.
! 299: .Ar size
! 300: must be decimal number in 32-bit word.
! 301: If
! 302: .Ar size
! 303: is zero or not specified, replay checks don't take place.
! 304: .\"
! 305: .It Fl u Ar id
! 306: Specify the identifier of the policy entry in the SPD.
! 307: See
! 308: .Ar policy .
! 309: .\"
! 310: .It Fl f Ar pad_option
! 311: defines the content of the ESP padding.
! 312: .Ar pad_option
! 313: is one of following:
! 314: .Bl -tag -width random-pad -compact
! 315: .It Li zero-pad
! 316: All the paddings are zero.
! 317: .It Li random-pad
! 318: A series of randomized values are used.
! 319: .It Li seq-pad
! 320: A series of sequential increasing numbers started from 1 are used.
! 321: .El
! 322: .\"
! 323: .It Fl f Li nocyclic-seq
! 324: Don't allow cyclic sequence numbers.
! 325: .\"
! 326: .It Fl lh Ar time
! 327: .It Fl ls Ar time
! 328: Specify hard/soft life time duration of the SA measured in seconds.
! 329: .\"
! 330: .It Fl bh Ar bytes
! 331: .It Fl bs Ar bytes
! 332: Specify hard/soft life time duration of the SA measured in bytes transported.
! 333: .\"
! 334: .It Fl ctx Ar doi Ar algorithm Ar context-name
! 335: Specify an access control label.
! 336: The access control label is interpreted by the LSM (e.g., SELinux).
! 337: Ultimately, it enables MAC on network communications.
! 338: .Bl -tag -width Fl -compact
! 339: .It Ar doi
! 340: The domain of interpretation, which is used by the
! 341: IKE daemon to identify the domain in which negotiation takes place.
! 342: .It Ar algorithm
! 343: Indicates the LSM for which the label is generated (e.g., SELinux).
! 344: .It Ar context-name
! 345: The string representation of the label that is interpreted by the LSM.
! 346: .El
! 347: .El
! 348: .\"
! 349: .Pp
! 350: .It Ar algorithm
! 351: .Bl -tag -width Fl -compact
! 352: .It Fl E Ar ealgo Ar key
! 353: Specify an encryption algorithm
! 354: .Ar ealgo
! 355: for ESP.
! 356: .It Fl E Ar ealgo Ar key Fl A Ar aalgo Ar key
! 357: Specify an encryption algorithm
! 358: .Ar ealgo ,
! 359: as well as a payload authentication algorithm
! 360: .Ar aalgo ,
! 361: for ESP.
! 362: .It Fl A Ar aalgo Ar key
! 363: Specify an authentication algorithm for AH.
! 364: .It Fl C Ar calgo Op Fl R
! 365: Specify a compression algorithm for IPComp.
! 366: If
! 367: .Fl R
! 368: is specified, the
! 369: .Ar spi
! 370: field value will be used as the IPComp CPI
! 371: .Pq compression parameter index
! 372: on wire as-is.
! 373: If
! 374: .Fl R
! 375: is not specified,
! 376: the kernel will use well-known CPI on wire, and
! 377: .Ar spi
! 378: field will be used only as an index for kernel internal usage.
! 379: .El
! 380: .Pp
! 381: .Ar key
! 382: must be a double-quoted character string, or a series of hexadecimal
! 383: digits preceded by
! 384: .Dq Li 0x .
! 385: .Pp
! 386: Possible values for
! 387: .Ar ealgo ,
! 388: .Ar aalgo ,
! 389: and
! 390: .Ar calgo
! 391: are specified in the
! 392: .Sx Algorithms
! 393: sections.
! 394: .\"
! 395: .Pp
! 396: .It Ar src_range
! 397: .It Ar dst_range
! 398: These select the communications that should be secured by IPsec.
! 399: They can be an IPv4/v6 address or an IPv4/v6 address range, and
! 400: may be accompanied by a TCP/UDP port specification.
! 401: This takes the following form:
! 402: .Bd -literal -offset
! 403: .Ar address
! 404: .Ar address/prefixlen
! 405: .Ar address[port]
! 406: .Ar address/prefixlen[port]
! 407: .Ed
! 408: .Pp
! 409: .Ar prefixlen
! 410: and
! 411: .Ar port
! 412: must be decimal numbers.
! 413: The square brackets around
! 414: .Ar port
! 415: are really necessary,
! 416: they are not man page meta-characters.
! 417: For FQDN resolution, the rules applicable to
! 418: .Ar src
! 419: and
! 420: .Ar dst
! 421: apply here as well.
! 422: .\"
! 423: .Pp
! 424: .It Ar upperspec
! 425: Upper-layer protocol to be used.
! 426: You can use one of the words in
! 427: .Pa /etc/protocols
! 428: as
! 429: .Ar upperspec ,
! 430: or
! 431: .Li icmp6 ,
! 432: .Li ip4 ,
! 433: .Li gre ,
! 434: or
! 435: .Li any .
! 436: .Li any
! 437: stands for
! 438: .Dq any protocol .
! 439: You can also use the protocol number.
! 440: Additional specification can be placed after the protocol name for
! 441: some protocols.
! 442: You can specify a type and/or a code of ICMP or ICMPv6.
! 443: The type is separated from a code by single comma and the code must
! 444: always be specified.
! 445: GRE key can be specified in dotted-quad format or as plain number.
! 446: When a zero is specified, the kernel deals with it as a wildcard.
! 447: Note that the kernel can not distinguish a wildcard from an ICPMv6
! 448: type of zero.
! 449: .Pp
! 450: For example, the following means that the policy doesn't require IPsec
! 451: for any inbound Neighbor Solicitation.
! 452: .Dl spdadd ::/0 ::/0 icmp6 135,0 -P in none ;
! 453: .Pp
! 454: A second example of requiring transport mode encryption of specific
! 455: GRE tunnel:
! 456: .Dl spdadd 0.0.0.0 0.0.0.0 gre 1234 ipsec esp/transport//require ;
! 457: .Pp
! 458: .Em Note :
! 459: .Ar upperspec
! 460: does not work against forwarding case at this moment,
! 461: as it requires extra reassembly at the forwarding node
! 462: .Pq not implemented at this moment .
! 463: There are many protocols in
! 464: .Pa /etc/protocols ,
! 465: but all protocols except of TCP, UDP, GRE, and ICMP may not be suitable
! 466: to use with IPsec.
! 467: You have to consider carefully what to use.
! 468: .\"
! 469: .Pp
! 470: .It Ar label
! 471: .Ar label
! 472: is the access control label for the policy.
! 473: This label is interpreted by the LSM (e.g., SELinux).
! 474: Ultimately, it enables MAC on network communications.
! 475: When a policy contains an access control label, SAs
! 476: negotiated with this policy will contain the label.
! 477: Its format:
! 478: .Bl -tag -width Fl -compact
! 479: .\"
! 480: .It Fl ctx Ar doi Ar algorithm Ar context-name
! 481: .Bl -tag -width Fl -compact
! 482: .It Ar doi
! 483: The domain of interpretation, which is used by the
! 484: IKE daemon to identify the domain in which negotiation takes place.
! 485: .It Ar algorithm
! 486: Indicates the LSM for which the label is generated (e.g., SELinux).
! 487: .It Ar context-name
! 488: The string representation of the label that is interpreted by the LSM.
! 489: .El
! 490: .El
! 491: .\"
! 492: .Pp
! 493: .It Ar policy
! 494: .Ar policy
! 495: is in one of the following three formats:
! 496: .Bl -item -compact
! 497: .It
! 498: .Fl P Ar direction [priority specification] Li discard
! 499: .It
! 500: .Fl P Ar direction [priority specification] Li none
! 501: .It
! 502: .Fl P Ar direction [priority specification] Li ipsec
! 503: .Ar protocol/mode/src-dst/level Op ...
! 504: .El
! 505: .Pp
! 506: You must specify the direction of its policy as
! 507: .Ar direction .
! 508: Either
! 509: .Ar out ,
! 510: .Ar in ,
! 511: or
! 512: .Ar fwd
! 513: can be used.
! 514: .Pp
! 515: .Ar priority specification
! 516: is used to control the placement of the policy within the SPD.
! 517: Policy position is determined by
! 518: a signed integer where higher priorities indicate the policy is placed
! 519: closer to the beginning of the list and lower priorities indicate the
! 520: policy is placed closer to the end of the list.
! 521: Policies with equal priorities are added at the end of groups
! 522: of such policies.
! 523: .Pp
! 524: Priority can only
! 525: be specified when setkey has been compiled against kernel headers that
! 526: support policy priorities (Linux \*[Gt]= 2.6.6).
! 527: If the kernel does not support priorities, a warning message will
! 528: be printed the first time a priority specification is used.
! 529: Policy priority takes one of the following formats:
! 530: .Bl -tag -width "discard"
! 531: .It Ar {priority,prio} offset
! 532: .Ar offset
! 533: is an integer in the range from \-2147483647 to 214783648.
! 534: .It Ar {priority,prio} base {+,\-} offset
! 535: .Ar base
! 536: is either
! 537: .Li low (\-1073741824) ,
! 538: .Li def (0) ,
! 539: or
! 540: .Li high (1073741824)
! 541: .Pp
! 542: .Ar offset
! 543: is an unsigned integer.
! 544: It can be up to 1073741824 for
! 545: positive offsets, and up to 1073741823 for negative offsets.
! 546: .El
! 547: .Pp
! 548: .Li discard
! 549: means the packet matching indexes will be discarded.
! 550: .Li none
! 551: means that IPsec operation will not take place onto the packet.
! 552: .Li ipsec
! 553: means that IPsec operation will take place onto the packet.
! 554: .Pp
! 555: The
! 556: .Ar protocol/mode/src-dst/level
! 557: part specifies the rule how to process the packet.
! 558: Either
! 559: .Li ah ,
! 560: .Li esp ,
! 561: or
! 562: .Li ipcomp
! 563: must be used as
! 564: .Ar protocol .
! 565: .Ar mode
! 566: is either
! 567: .Li transport
! 568: or
! 569: .Li tunnel .
! 570: If
! 571: .Ar mode
! 572: is
! 573: .Li tunnel ,
! 574: you must specify the end-point addresses of the SA as
! 575: .Ar src
! 576: and
! 577: .Ar dst
! 578: with
! 579: .Sq -
! 580: between these addresses, which is used to specify the SA to use.
! 581: If
! 582: .Ar mode
! 583: is
! 584: .Li transport ,
! 585: both
! 586: .Ar src
! 587: and
! 588: .Ar dst
! 589: can be omitted.
! 590: .Ar level
! 591: is to be one of the following:
! 592: .Li default , use , require ,
! 593: or
! 594: .Li unique .
! 595: If the SA is not available in every level, the kernel will
! 596: ask the key exchange daemon to establish a suitable SA.
! 597: .Li default
! 598: means the kernel consults the system wide default for the protocol
! 599: you specified, e.g. the
! 600: .Li esp_trans_deflev
! 601: sysctl variable, when the kernel processes the packet.
! 602: .Li use
! 603: means that the kernel uses an SA if it's available,
! 604: otherwise the kernel keeps normal operation.
! 605: .Li require
! 606: means SA is required whenever the kernel sends a packet matched
! 607: with the policy.
! 608: .Li unique
! 609: is the same as
! 610: .Li require ;
! 611: in addition, it allows the policy to match the unique out-bound SA.
! 612: You just specify the policy level
! 613: .Li unique ,
! 614: .Xr racoon 8
! 615: will configure the SA for the policy.
! 616: If you configure the SA by manual keying for that policy,
! 617: you can put a decimal number as the policy identifier after
! 618: .Li unique
! 619: separated by a colon
! 620: .Sq \&:
! 621: like:
! 622: .Li unique:number
! 623: in order to bind this policy to the SA.
! 624: .Li number
! 625: must be between 1 and 32767.
! 626: It corresponds to
! 627: .Ar extensions Fl u
! 628: of the manual SA configuration.
! 629: When you want to use SA bundle, you can define multiple rules.
! 630: For example, if an IP header was followed by an AH header followed
! 631: by an ESP header followed by an upper layer protocol header, the
! 632: rule would be:
! 633: .Dl esp/transport//require ah/transport//require ;
! 634: The rule order is very important.
! 635: .Pp
! 636: When NAT-T is enabled in the kernel, policy matching for ESP over
! 637: UDP packets may be done on endpoint addresses and port
! 638: (this depends on the system.
! 639: System that do not perform the port check cannot support
! 640: multiple endpoints behind the same NAT).
! 641: When using ESP over UDP, you can specify port numbers in the endpoint
! 642: addresses to get the correct matching.
! 643: Here is an example:
! 644: .Bd -literal -offset
! 645: spdadd 10.0.11.0/24[any] 10.0.11.33/32[any] any \-P out ipsec
! 646: esp/tunnel/192.168.0.1[4500]-192.168.1.2[30000]/require ;
! 647:
! 648: .Ed
! 649: These ports must be left unspecified (which defaults to 0) for
! 650: anything other than ESP over UDP.
! 651: They can be displayed in SPD dump using
! 652: .Nm
! 653: .Fl DPp .
! 654: .Pp
! 655: Note that
! 656: .Dq Li discard
! 657: and
! 658: .Dq Li none
! 659: are not in the syntax described in
! 660: .Xr ipsec_set_policy 3 .
! 661: There are a few differences in the syntax.
! 662: See
! 663: .Xr ipsec_set_policy 3
! 664: for detail.
! 665: .El
! 666: .\"
! 667: .Ss Algorithms
! 668: The following list shows the supported algorithms.
! 669: .Sy protocol
! 670: and
! 671: .Sy algorithm
! 672: are almost orthogonal.
! 673: These authentication algorithms can be used as
! 674: .Ar aalgo
! 675: in
! 676: .Fl A Ar aalgo
! 677: of the
! 678: .Ar protocol
! 679: parameter:
! 680: .Pp
! 681: .Bd -literal -offset indent
! 682: algorithm keylen (bits)
! 683: hmac-md5 128 ah: rfc2403
! 684: 128 ah-old: rfc2085
! 685: hmac-sha1 160 ah: rfc2404
! 686: 160 ah-old: 128bit ICV (no document)
! 687: keyed-md5 128 ah: 96bit ICV (no document)
! 688: 128 ah-old: rfc1828
! 689: keyed-sha1 160 ah: 96bit ICV (no document)
! 690: 160 ah-old: 128bit ICV (no document)
! 691: null 0 to 2048 for debugging
! 692: hmac-sha256 256 ah: 96bit ICV
! 693: (draft-ietf-ipsec-ciph-sha-256-00)
! 694: 256 ah-old: 128bit ICV (no document)
! 695: hmac-sha384 384 ah: 96bit ICV (no document)
! 696: 384 ah-old: 128bit ICV (no document)
! 697: hmac-sha512 512 ah: 96bit ICV (no document)
! 698: 512 ah-old: 128bit ICV (no document)
! 699: hmac-ripemd160 160 ah: 96bit ICV (RFC2857)
! 700: ah-old: 128bit ICV (no document)
! 701: aes-xcbc-mac 128 ah: 96bit ICV (RFC3566)
! 702: 128 ah-old: 128bit ICV (no document)
! 703: tcp-md5 8 to 640 tcp: rfc2385
! 704: .Ed
! 705: .Pp
! 706: These encryption algorithms can be used as
! 707: .Ar ealgo
! 708: in
! 709: .Fl E Ar ealgo
! 710: of the
! 711: .Ar protocol
! 712: parameter:
! 713: .Pp
! 714: .Bd -literal -offset indent
! 715: algorithm keylen (bits)
! 716: des-cbc 64 esp-old: rfc1829, esp: rfc2405
! 717: 3des-cbc 192 rfc2451
! 718: null 0 to 2048 rfc2410
! 719: blowfish-cbc 40 to 448 rfc2451
! 720: cast128-cbc 40 to 128 rfc2451
! 721: des-deriv 64 ipsec-ciph-des-derived-01
! 722: 3des-deriv 192 no document
! 723: rijndael-cbc 128/192/256 rfc3602
! 724: twofish-cbc 0 to 256 draft-ietf-ipsec-ciph-aes-cbc-01
! 725: aes-ctr 160/224/288 draft-ietf-ipsec-ciph-aes-ctr-03
! 726: camellia-cbc 128/192/256 rfc4312
! 727: .Ed
! 728: .Pp
! 729: Note that the first 128 bits of a key for
! 730: .Li aes-ctr
! 731: will be used as AES key, and the remaining 32 bits will be used as nonce.
! 732: .Pp
! 733: These compression algorithms can be used as
! 734: .Ar calgo
! 735: in
! 736: .Fl C Ar calgo
! 737: of the
! 738: .Ar protocol
! 739: parameter:
! 740: .Pp
! 741: .Bd -literal -offset indent
! 742: algorithm
! 743: deflate rfc2394
! 744: .Ed
! 745: .\"
! 746: .Ss RFC vs Linux kernel semantics
! 747: The Linux kernel uses the
! 748: .Ar fwd
! 749: policy instead of the
! 750: .Ar in
! 751: policy for packets what are forwarded through that particular box.
! 752: .Pp
! 753: In
! 754: .Ar kernel
! 755: mode,
! 756: .Nm
! 757: manages and shows policies and SAs exactly as they are stored in the kernel.
! 758: .Pp
! 759: In
! 760: .Ar RFC
! 761: mode,
! 762: .Nm
! 763: .Bl -item
! 764: .It
! 765: creates
! 766: .Ar fwd
! 767: policies for every
! 768: .Ar in
! 769: policy inserted
! 770: .It
! 771: (not implemented yet) filters out all
! 772: .Ar fwd
! 773: policies
! 774: .El
! 775: .Sh RETURN VALUES
! 776: The command exits with 0 on success, and non-zero on errors.
! 777: .\"
! 778: .Sh EXAMPLES
! 779: .Bd -literal -offset
! 780: add 3ffe:501:4819::1 3ffe:501:481d::1 esp 123457
! 781: \-E des-cbc 0x3ffe05014819ffff ;
! 782:
! 783: add \-6 myhost.example.com yourhost.example.com ah 123456
! 784: \-A hmac-sha1 "AH SA configuration!" ;
! 785:
! 786: add 10.0.11.41 10.0.11.33 esp 0x10001
! 787: \-E des-cbc 0x3ffe05014819ffff
! 788: \-A hmac-md5 "authentication!!" ;
! 789:
! 790: get 3ffe:501:4819::1 3ffe:501:481d::1 ah 123456 ;
! 791:
! 792: flush ;
! 793:
! 794: dump esp ;
! 795:
! 796: spdadd 10.0.11.41/32[21] 10.0.11.33/32[any] any
! 797: \-P out ipsec esp/tunnel/192.168.0.1-192.168.1.2/require ;
! 798:
! 799: add 10.1.10.34 10.1.10.36 tcp 0x1000 \-A tcp-md5 "TCP-MD5 BGP secret" ;
! 800:
! 801: add 10.0.11.41 10.0.11.33 esp 0x10001
! 802: \-ctx 1 1 "system_u:system_r:unconfined_t:SystemLow-SystemHigh"
! 803: \-E des-cbc 0x3ffe05014819ffff;
! 804:
! 805: spdadd 10.0.11.41 10.0.11.33 any
! 806: \-ctx 1 1 "system_u:system_r:unconfined_t:SystemLow-SystemHigh"
! 807: \-P out ipsec esp/transport//require ;
! 808: .Ed
! 809: .\"
! 810: .Sh SEE ALSO
! 811: .Xr ipsec_set_policy 3 ,
! 812: .Xr racoon 8 ,
! 813: .Xr sysctl 8
! 814: .Rs
! 815: .%T "Changed manual key configuration for IPsec"
! 816: .%U "http://www.kame.net/newsletter/19991007/"
! 817: .%D "October 1999"
! 818: .Re
! 819: .\"
! 820: .Sh HISTORY
! 821: The
! 822: .Nm
! 823: command first appeared in the WIDE Hydrangea IPv6 protocol stack
! 824: kit.
! 825: The command was completely re-designed in June 1998.
! 826: .\"
! 827: .Sh BUGS
! 828: .Nm
! 829: should report and handle syntax errors better.
! 830: .Pp
! 831: For IPsec gateway configuration,
! 832: .Ar src_range
! 833: and
! 834: .Ar dst_range
! 835: with TCP/UDP port numbers does not work, as the gateway does not
! 836: reassemble packets
! 837: .Pq it cannot inspect upper-layer headers .
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>