Annotation of embedaddon/ipsec-tools/src/setkey/setkey.8, revision 1.1.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>