File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / ipsec-tools / src / setkey / setkey.8
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 22:39:10 2012 UTC (13 years, 4 months ago) by misho
Branches: ipsec-tools, MAIN
CVS tags: v0_8_2p2, v0_8_1p0, v0_8_1, v0_8_0p0, v0_8_0, HEAD
ipsec-tools

    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>