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>