stdlibs/libcrypt/doc/setkey.3
author hgs
Tue, 02 Nov 2010 19:23:22 +0530
changeset 79 564bc7b7ad27
permissions -rw-r--r--
201043
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
79
hgs
parents:
diff changeset
     1
.\"	$KAME: setkey.8,v 1.89 2003/09/07 22:17:41 itojun Exp $
hgs
parents:
diff changeset
     2
.\"
hgs
parents:
diff changeset
     3
.\" Copyright (C) 1995, 1996, 1997, 1998, and 1999 WIDE Project.
hgs
parents:
diff changeset
     4
.\" All rights reserved.
hgs
parents:
diff changeset
     5
.\"
hgs
parents:
diff changeset
     6
.\" Redistribution and use in source and binary forms, with or without
hgs
parents:
diff changeset
     7
.\" modification, are permitted provided that the following conditions
hgs
parents:
diff changeset
     8
.\" are met:
hgs
parents:
diff changeset
     9
.\" 1. Redistributions of source code must retain the above copyright
hgs
parents:
diff changeset
    10
.\"    notice, this list of conditions and the following disclaimer.
hgs
parents:
diff changeset
    11
.\" 2. Redistributions in binary form must reproduce the above copyright
hgs
parents:
diff changeset
    12
.\"    notice, this list of conditions and the following disclaimer in the
hgs
parents:
diff changeset
    13
.\"    documentation and/or other materials provided with the distribution.
hgs
parents:
diff changeset
    14
.\" 3. Neither the name of the project nor the names of its contributors
hgs
parents:
diff changeset
    15
.\"    may be used to endorse or promote products derived from this software
hgs
parents:
diff changeset
    16
.\"    without specific prior written permission.
hgs
parents:
diff changeset
    17
.\"
hgs
parents:
diff changeset
    18
.\" THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
hgs
parents:
diff changeset
    19
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
hgs
parents:
diff changeset
    20
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
hgs
parents:
diff changeset
    21
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
hgs
parents:
diff changeset
    22
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
hgs
parents:
diff changeset
    23
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
hgs
parents:
diff changeset
    24
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
hgs
parents:
diff changeset
    25
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
hgs
parents:
diff changeset
    26
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
hgs
parents:
diff changeset
    27
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
hgs
parents:
diff changeset
    28
.\" SUCH DAMAGE.
hgs
parents:
diff changeset
    29
.\"
hgs
parents:
diff changeset
    30
.\" $FreeBSD: src/usr.sbin/setkey/setkey.8,v 1.34 2005/02/09 18:04:42 ru Exp $
hgs
parents:
diff changeset
    31
.\"
hgs
parents:
diff changeset
    32
.Dd November 20, 2000
hgs
parents:
diff changeset
    33
.Dt SETKEY 8
hgs
parents:
diff changeset
    34
.Os
hgs
parents:
diff changeset
    35
.\"
hgs
parents:
diff changeset
    36
.Sh NAME
hgs
parents:
diff changeset
    37
.Nm setkey
hgs
parents:
diff changeset
    38
.Nd "manually manipulate the IPsec SA/SP database"
hgs
parents:
diff changeset
    39
.\"
hgs
parents:
diff changeset
    40
.Sh SYNOPSIS
hgs
parents:
diff changeset
    41
.Nm
hgs
parents:
diff changeset
    42
.Op Fl v
hgs
parents:
diff changeset
    43
.Fl c
hgs
parents:
diff changeset
    44
.Nm
hgs
parents:
diff changeset
    45
.Op Fl v
hgs
parents:
diff changeset
    46
.Fl f Ar filename
hgs
parents:
diff changeset
    47
.Nm
hgs
parents:
diff changeset
    48
.Op Fl aPlv
hgs
parents:
diff changeset
    49
.Fl D
hgs
parents:
diff changeset
    50
.Nm
hgs
parents:
diff changeset
    51
.Op Fl Pv
hgs
parents:
diff changeset
    52
.Fl F
hgs
parents:
diff changeset
    53
.Nm
hgs
parents:
diff changeset
    54
.Op Fl h
hgs
parents:
diff changeset
    55
.Fl x
hgs
parents:
diff changeset
    56
.\"
hgs
parents:
diff changeset
    57
.Sh DESCRIPTION
hgs
parents:
diff changeset
    58
The
hgs
parents:
diff changeset
    59
.Nm
hgs
parents:
diff changeset
    60
utility adds, updates, dumps, or flushes
hgs
parents:
diff changeset
    61
Security Association Database (SAD) entries
hgs
parents:
diff changeset
    62
as well as Security Policy Database (SPD) entries in the kernel.
hgs
parents:
diff changeset
    63
.Pp
hgs
parents:
diff changeset
    64
The
hgs
parents:
diff changeset
    65
.Nm
hgs
parents:
diff changeset
    66
utility takes a series of operations from the standard input
hgs
parents:
diff changeset
    67
(if invoked with
hgs
parents:
diff changeset
    68
.Fl c )
hgs
parents:
diff changeset
    69
or the file named
hgs
parents:
diff changeset
    70
.Ar filename
hgs
parents:
diff changeset
    71
(if invoked with
hgs
parents:
diff changeset
    72
.Fl f Ar filename ) .
hgs
parents:
diff changeset
    73
.Bl -tag -width indent
hgs
parents:
diff changeset
    74
.It Fl D
hgs
parents:
diff changeset
    75
Dump the SAD entries.
hgs
parents:
diff changeset
    76
If with
hgs
parents:
diff changeset
    77
.Fl P ,
hgs
parents:
diff changeset
    78
the SPD entries are dumped.
hgs
parents:
diff changeset
    79
.It Fl F
hgs
parents:
diff changeset
    80
Flush the SAD entries.
hgs
parents:
diff changeset
    81
If with
hgs
parents:
diff changeset
    82
.Fl P ,
hgs
parents:
diff changeset
    83
the SPD entries are flushed.
hgs
parents:
diff changeset
    84
.It Fl a
hgs
parents:
diff changeset
    85
The
hgs
parents:
diff changeset
    86
.Nm
hgs
parents:
diff changeset
    87
utility
hgs
parents:
diff changeset
    88
usually does not display dead SAD entries with
hgs
parents:
diff changeset
    89
.Fl D .
hgs
parents:
diff changeset
    90
If with
hgs
parents:
diff changeset
    91
.Fl a ,
hgs
parents:
diff changeset
    92
the dead SAD entries will be displayed as well.
hgs
parents:
diff changeset
    93
A dead SAD entry means that
hgs
parents:
diff changeset
    94
it has been expired but remains in the system
hgs
parents:
diff changeset
    95
because it is referenced by some SPD entries.
hgs
parents:
diff changeset
    96
.It Fl h
hgs
parents:
diff changeset
    97
Add hexadecimal dump on
hgs
parents:
diff changeset
    98
.Fl x
hgs
parents:
diff changeset
    99
mode.
hgs
parents:
diff changeset
   100
.It Fl l
hgs
parents:
diff changeset
   101
Loop forever with short output on
hgs
parents:
diff changeset
   102
.Fl D .
hgs
parents:
diff changeset
   103
.It Fl v
hgs
parents:
diff changeset
   104
Be verbose.
hgs
parents:
diff changeset
   105
The program will dump messages exchanged on
hgs
parents:
diff changeset
   106
.Dv PF_KEY
hgs
parents:
diff changeset
   107
socket, including messages sent from other processes to the kernel.
hgs
parents:
diff changeset
   108
.It Fl x
hgs
parents:
diff changeset
   109
Loop forever and dump all the messages transmitted to
hgs
parents:
diff changeset
   110
.Dv PF_KEY
hgs
parents:
diff changeset
   111
socket.
hgs
parents:
diff changeset
   112
.Fl xx
hgs
parents:
diff changeset
   113
makes each timestamps unformatted.
hgs
parents:
diff changeset
   114
.El
hgs
parents:
diff changeset
   115
.Ss Configuration syntax
hgs
parents:
diff changeset
   116
With
hgs
parents:
diff changeset
   117
.Fl c
hgs
parents:
diff changeset
   118
or
hgs
parents:
diff changeset
   119
.Fl f
hgs
parents:
diff changeset
   120
on the command line,
hgs
parents:
diff changeset
   121
.Nm
hgs
parents:
diff changeset
   122
accepts the following configuration syntax.
hgs
parents:
diff changeset
   123
Lines starting with hash signs
hgs
parents:
diff changeset
   124
.Pq Ql #
hgs
parents:
diff changeset
   125
are treated as comment lines.
hgs
parents:
diff changeset
   126
.Bl -tag -width indent
hgs
parents:
diff changeset
   127
.It Xo
hgs
parents:
diff changeset
   128
.Li add
hgs
parents:
diff changeset
   129
.Op Fl 46n
hgs
parents:
diff changeset
   130
.Ar src Ar dst Ar protocol Ar spi
hgs
parents:
diff changeset
   131
.Op Ar extensions
hgs
parents:
diff changeset
   132
.Ar algorithm ...
hgs
parents:
diff changeset
   133
.Li ;
hgs
parents:
diff changeset
   134
.Xc
hgs
parents:
diff changeset
   135
Add an SAD entry.
hgs
parents:
diff changeset
   136
.Li add
hgs
parents:
diff changeset
   137
can fail with multiple reasons,
hgs
parents:
diff changeset
   138
including when the key length does not match the specified algorithm.
hgs
parents:
diff changeset
   139
.\"
hgs
parents:
diff changeset
   140
.It Xo
hgs
parents:
diff changeset
   141
.Li get
hgs
parents:
diff changeset
   142
.Op Fl 46n
hgs
parents:
diff changeset
   143
.Ar src Ar dst Ar protocol Ar spi
hgs
parents:
diff changeset
   144
.Li ;
hgs
parents:
diff changeset
   145
.Xc
hgs
parents:
diff changeset
   146
Show an SAD entry.
hgs
parents:
diff changeset
   147
.\"
hgs
parents:
diff changeset
   148
.It Xo
hgs
parents:
diff changeset
   149
.Li delete
hgs
parents:
diff changeset
   150
.Op Fl 46n
hgs
parents:
diff changeset
   151
.Ar src Ar dst Ar protocol Ar spi
hgs
parents:
diff changeset
   152
.Li ;
hgs
parents:
diff changeset
   153
.Xc
hgs
parents:
diff changeset
   154
Remove an SAD entry.
hgs
parents:
diff changeset
   155
.\"
hgs
parents:
diff changeset
   156
.It Xo
hgs
parents:
diff changeset
   157
.Li deleteall
hgs
parents:
diff changeset
   158
.Op Fl 46n
hgs
parents:
diff changeset
   159
.Ar src Ar dst Ar protocol
hgs
parents:
diff changeset
   160
.Li ;
hgs
parents:
diff changeset
   161
.Xc
hgs
parents:
diff changeset
   162
Remove all SAD entries that match the specification.
hgs
parents:
diff changeset
   163
.\"
hgs
parents:
diff changeset
   164
.It Xo
hgs
parents:
diff changeset
   165
.Li flush
hgs
parents:
diff changeset
   166
.Op Ar protocol
hgs
parents:
diff changeset
   167
.Li ;
hgs
parents:
diff changeset
   168
.Xc
hgs
parents:
diff changeset
   169
Clear all SAD entries matched by the options.
hgs
parents:
diff changeset
   170
.Fl F
hgs
parents:
diff changeset
   171
on the command line achieves the same functionality.
hgs
parents:
diff changeset
   172
.\"
hgs
parents:
diff changeset
   173
.It Xo
hgs
parents:
diff changeset
   174
.Li dump
hgs
parents:
diff changeset
   175
.Op Ar protocol
hgs
parents:
diff changeset
   176
.Li ;
hgs
parents:
diff changeset
   177
.Xc
hgs
parents:
diff changeset
   178
Dumps all SAD entries matched by the options.
hgs
parents:
diff changeset
   179
.Fl D
hgs
parents:
diff changeset
   180
on the command line achieves the same functionality.
hgs
parents:
diff changeset
   181
.\"
hgs
parents:
diff changeset
   182
.It Xo
hgs
parents:
diff changeset
   183
.Li spdadd
hgs
parents:
diff changeset
   184
.Op Fl 46n
hgs
parents:
diff changeset
   185
.Ar src_range Ar dst_range Ar upperspec Ar policy
hgs
parents:
diff changeset
   186
.Li ;
hgs
parents:
diff changeset
   187
.Xc
hgs
parents:
diff changeset
   188
Add an SPD entry.
hgs
parents:
diff changeset
   189
.\"
hgs
parents:
diff changeset
   190
.It Xo
hgs
parents:
diff changeset
   191
.Li spddelete
hgs
parents:
diff changeset
   192
.Op Fl 46n
hgs
parents:
diff changeset
   193
.Ar src_range Ar dst_range Ar upperspec Fl P Ar direction
hgs
parents:
diff changeset
   194
.Li ;
hgs
parents:
diff changeset
   195
.Xc
hgs
parents:
diff changeset
   196
Delete an SPD entry.
hgs
parents:
diff changeset
   197
.\"
hgs
parents:
diff changeset
   198
.It Xo
hgs
parents:
diff changeset
   199
.Li spdflush
hgs
parents:
diff changeset
   200
.Li ;
hgs
parents:
diff changeset
   201
.Xc
hgs
parents:
diff changeset
   202
Clear all SPD entries.
hgs
parents:
diff changeset
   203
.Fl FP
hgs
parents:
diff changeset
   204
on the command line achieves the same functionality.
hgs
parents:
diff changeset
   205
.\"
hgs
parents:
diff changeset
   206
.It Xo
hgs
parents:
diff changeset
   207
.Li spddump
hgs
parents:
diff changeset
   208
.Li ;
hgs
parents:
diff changeset
   209
.Xc
hgs
parents:
diff changeset
   210
Dumps all SPD entries.
hgs
parents:
diff changeset
   211
.Fl DP
hgs
parents:
diff changeset
   212
on the command line achieves the same functionality.
hgs
parents:
diff changeset
   213
.El
hgs
parents:
diff changeset
   214
.\"
hgs
parents:
diff changeset
   215
.Pp
hgs
parents:
diff changeset
   216
Meta-arguments are as follows:
hgs
parents:
diff changeset
   217
.Pp
hgs
parents:
diff changeset
   218
.Bl -tag -compact -width indent
hgs
parents:
diff changeset
   219
.It Ar src
hgs
parents:
diff changeset
   220
.It Ar dst
hgs
parents:
diff changeset
   221
Source/destination of the secure communication is specified as
hgs
parents:
diff changeset
   222
IPv4/v6 address.
hgs
parents:
diff changeset
   223
The
hgs
parents:
diff changeset
   224
.Nm
hgs
parents:
diff changeset
   225
utility
hgs
parents:
diff changeset
   226
can resolve a FQDN into numeric addresses.
hgs
parents:
diff changeset
   227
If the FQDN resolves into multiple addresses,
hgs
parents:
diff changeset
   228
.Nm
hgs
parents:
diff changeset
   229
will install multiple SAD/SPD entries into the kernel
hgs
parents:
diff changeset
   230
by trying all possible combinations.
hgs
parents:
diff changeset
   231
.Fl 4 ,
hgs
parents:
diff changeset
   232
.Fl 6
hgs
parents:
diff changeset
   233
and
hgs
parents:
diff changeset
   234
.Fl n
hgs
parents:
diff changeset
   235
restricts the address resolution of FQDN in certain ways.
hgs
parents:
diff changeset
   236
.Fl 4
hgs
parents:
diff changeset
   237
and
hgs
parents:
diff changeset
   238
.Fl 6
hgs
parents:
diff changeset
   239
restrict results into IPv4/v6 addresses only, respectively.
hgs
parents:
diff changeset
   240
.Fl n
hgs
parents:
diff changeset
   241
avoids FQDN resolution and requires addresses to be numeric addresses.
hgs
parents:
diff changeset
   242
.\"
hgs
parents:
diff changeset
   243
.Pp
hgs
parents:
diff changeset
   244
.It Ar protocol
hgs
parents:
diff changeset
   245
.Ar protocol
hgs
parents:
diff changeset
   246
is one of following:
hgs
parents:
diff changeset
   247
.Bl -tag -width Fl -compact
hgs
parents:
diff changeset
   248
.It Li esp
hgs
parents:
diff changeset
   249
ESP based on rfc2406
hgs
parents:
diff changeset
   250
.It Li esp-old
hgs
parents:
diff changeset
   251
ESP based on rfc1827
hgs
parents:
diff changeset
   252
.It Li ah
hgs
parents:
diff changeset
   253
AH based on rfc2402
hgs
parents:
diff changeset
   254
.It Li ah-old
hgs
parents:
diff changeset
   255
AH based on rfc1826
hgs
parents:
diff changeset
   256
.It Li ipcomp
hgs
parents:
diff changeset
   257
IPComp
hgs
parents:
diff changeset
   258
.It Li tcp
hgs
parents:
diff changeset
   259
TCP-MD5 based on rfc2385
hgs
parents:
diff changeset
   260
.El
hgs
parents:
diff changeset
   261
.\"
hgs
parents:
diff changeset
   262
.Pp
hgs
parents:
diff changeset
   263
.It Ar spi
hgs
parents:
diff changeset
   264
Security Parameter Index
hgs
parents:
diff changeset
   265
(SPI)
hgs
parents:
diff changeset
   266
for the SAD and the SPD.
hgs
parents:
diff changeset
   267
.Ar spi
hgs
parents:
diff changeset
   268
must be a decimal number, or a hexadecimal number with
hgs
parents:
diff changeset
   269
.Ql 0x
hgs
parents:
diff changeset
   270
prefix.
hgs
parents:
diff changeset
   271
SPI values between 0 and 255 are reserved for future use by IANA
hgs
parents:
diff changeset
   272
and they cannot be used.
hgs
parents:
diff changeset
   273
TCP-MD5 associations must use 0x1000 and therefore only have per-host
hgs
parents:
diff changeset
   274
granularity at this time.
hgs
parents:
diff changeset
   275
.\"
hgs
parents:
diff changeset
   276
.Pp
hgs
parents:
diff changeset
   277
.It Ar extensions
hgs
parents:
diff changeset
   278
take some of the following:
hgs
parents:
diff changeset
   279
.Bl -tag -width Fl -compact
hgs
parents:
diff changeset
   280
.\"
hgs
parents:
diff changeset
   281
.It Fl m Ar mode
hgs
parents:
diff changeset
   282
Specify a security protocol mode for use.
hgs
parents:
diff changeset
   283
.Ar mode
hgs
parents:
diff changeset
   284
is one of following:
hgs
parents:
diff changeset
   285
.Li transport , tunnel
hgs
parents:
diff changeset
   286
or
hgs
parents:
diff changeset
   287
.Li any .
hgs
parents:
diff changeset
   288
The default value is
hgs
parents:
diff changeset
   289
.Li any .
hgs
parents:
diff changeset
   290
.\"
hgs
parents:
diff changeset
   291
.It Fl r Ar size
hgs
parents:
diff changeset
   292
Specify window size of bytes for replay prevention.
hgs
parents:
diff changeset
   293
.Ar size
hgs
parents:
diff changeset
   294
must be decimal number in 32-bit word.
hgs
parents:
diff changeset
   295
If
hgs
parents:
diff changeset
   296
.Ar size
hgs
parents:
diff changeset
   297
is zero or not specified, replay check does not take place.
hgs
parents:
diff changeset
   298
.\"
hgs
parents:
diff changeset
   299
.It Fl u Ar id
hgs
parents:
diff changeset
   300
Specify the identifier of the policy entry in SPD.
hgs
parents:
diff changeset
   301
See
hgs
parents:
diff changeset
   302
.Ar policy .
hgs
parents:
diff changeset
   303
.\"
hgs
parents:
diff changeset
   304
.It Fl f Ar pad_option
hgs
parents:
diff changeset
   305
defines the content of the ESP padding.
hgs
parents:
diff changeset
   306
.Ar pad_option
hgs
parents:
diff changeset
   307
is one of following:
hgs
parents:
diff changeset
   308
.Bl -tag -width random-pad -compact
hgs
parents:
diff changeset
   309
.It Li zero-pad
hgs
parents:
diff changeset
   310
All of the padding are zero.
hgs
parents:
diff changeset
   311
.It Li random-pad
hgs
parents:
diff changeset
   312
A series of randomized values are set.
hgs
parents:
diff changeset
   313
.It Li seq-pad
hgs
parents:
diff changeset
   314
A series of sequential increasing numbers started from 1 are set.
hgs
parents:
diff changeset
   315
.El
hgs
parents:
diff changeset
   316
.\"
hgs
parents:
diff changeset
   317
.It Fl f Li nocyclic-seq
hgs
parents:
diff changeset
   318
Do not allow cyclic sequence number.
hgs
parents:
diff changeset
   319
.\"
hgs
parents:
diff changeset
   320
.It Fl lh Ar time
hgs
parents:
diff changeset
   321
.It Fl ls Ar time
hgs
parents:
diff changeset
   322
Specify hard/soft life time duration of the SA.
hgs
parents:
diff changeset
   323
.El
hgs
parents:
diff changeset
   324
.\"
hgs
parents:
diff changeset
   325
.Pp
hgs
parents:
diff changeset
   326
.It Ar algorithm
hgs
parents:
diff changeset
   327
.Bl -tag -width Fl -compact
hgs
parents:
diff changeset
   328
.It Fl E Ar ealgo Ar key
hgs
parents:
diff changeset
   329
Specify an encryption algorithm
hgs
parents:
diff changeset
   330
.Ar ealgo
hgs
parents:
diff changeset
   331
for ESP.
hgs
parents:
diff changeset
   332
.It Xo
hgs
parents:
diff changeset
   333
.Fl E Ar ealgo Ar key
hgs
parents:
diff changeset
   334
.Fl A Ar aalgo Ar key
hgs
parents:
diff changeset
   335
.Xc
hgs
parents:
diff changeset
   336
Specify a encryption algorithm
hgs
parents:
diff changeset
   337
.Ar ealgo ,
hgs
parents:
diff changeset
   338
as well as a payload authentication algorithm
hgs
parents:
diff changeset
   339
.Ar aalgo ,
hgs
parents:
diff changeset
   340
for ESP.
hgs
parents:
diff changeset
   341
.It Fl A Ar aalgo Ar key
hgs
parents:
diff changeset
   342
Specify an authentication algorithm for AH.
hgs
parents:
diff changeset
   343
.It Fl C Ar calgo Op Fl R
hgs
parents:
diff changeset
   344
Specify a compression algorithm for IPComp.
hgs
parents:
diff changeset
   345
If
hgs
parents:
diff changeset
   346
.Fl R
hgs
parents:
diff changeset
   347
is specified,
hgs
parents:
diff changeset
   348
.Ar spi
hgs
parents:
diff changeset
   349
field value will be used as the IPComp CPI
hgs
parents:
diff changeset
   350
(compression parameter index)
hgs
parents:
diff changeset
   351
on wire as is.
hgs
parents:
diff changeset
   352
If
hgs
parents:
diff changeset
   353
.Fl R
hgs
parents:
diff changeset
   354
is not specified,
hgs
parents:
diff changeset
   355
the kernel will use well-known CPI on wire, and
hgs
parents:
diff changeset
   356
.Ar spi
hgs
parents:
diff changeset
   357
field will be used only as an index for kernel internal usage.
hgs
parents:
diff changeset
   358
.El
hgs
parents:
diff changeset
   359
.Pp
hgs
parents:
diff changeset
   360
.Ar key
hgs
parents:
diff changeset
   361
must be double-quoted character string, or a series of hexadecimal digits
hgs
parents:
diff changeset
   362
preceded by
hgs
parents:
diff changeset
   363
.Ql 0x .
hgs
parents:
diff changeset
   364
.Pp
hgs
parents:
diff changeset
   365
Possible values for
hgs
parents:
diff changeset
   366
.Ar ealgo ,
hgs
parents:
diff changeset
   367
.Ar aalgo
hgs
parents:
diff changeset
   368
and
hgs
parents:
diff changeset
   369
.Ar calgo
hgs
parents:
diff changeset
   370
are specified in separate section.
hgs
parents:
diff changeset
   371
.\"
hgs
parents:
diff changeset
   372
.Pp
hgs
parents:
diff changeset
   373
.It Ar src_range
hgs
parents:
diff changeset
   374
.It Ar dst_range
hgs
parents:
diff changeset
   375
These are selections of the secure communication specified as
hgs
parents:
diff changeset
   376
IPv4/v6 address or IPv4/v6 address range, and it may accompany
hgs
parents:
diff changeset
   377
TCP/UDP port specification.
hgs
parents:
diff changeset
   378
This takes the following form:
hgs
parents:
diff changeset
   379
.Bd -unfilled
hgs
parents:
diff changeset
   380
.Ar address
hgs
parents:
diff changeset
   381
.Ar address/prefixlen
hgs
parents:
diff changeset
   382
.Ar address[port]
hgs
parents:
diff changeset
   383
.Ar address/prefixlen[port]
hgs
parents:
diff changeset
   384
.Ed
hgs
parents:
diff changeset
   385
.Pp
hgs
parents:
diff changeset
   386
.Ar prefixlen
hgs
parents:
diff changeset
   387
and
hgs
parents:
diff changeset
   388
.Ar port
hgs
parents:
diff changeset
   389
must be decimal number.
hgs
parents:
diff changeset
   390
The square bracket around
hgs
parents:
diff changeset
   391
.Ar port
hgs
parents:
diff changeset
   392
is really necessary.
hgs
parents:
diff changeset
   393
They are not manpage metacharacters.
hgs
parents:
diff changeset
   394
For FQDN resolution, the rules applicable to
hgs
parents:
diff changeset
   395
.Ar src
hgs
parents:
diff changeset
   396
and
hgs
parents:
diff changeset
   397
.Ar dst
hgs
parents:
diff changeset
   398
apply here as well.
hgs
parents:
diff changeset
   399
.\"
hgs
parents:
diff changeset
   400
.Pp
hgs
parents:
diff changeset
   401
.It Ar upperspec
hgs
parents:
diff changeset
   402
Upper-layer protocol to be used.
hgs
parents:
diff changeset
   403
Use one of the words in
hgs
parents:
diff changeset
   404
.Pa /etc/protocols
hgs
parents:
diff changeset
   405
as
hgs
parents:
diff changeset
   406
.Ar upperspec .
hgs
parents:
diff changeset
   407
Or
hgs
parents:
diff changeset
   408
.Li icmp6 ,
hgs
parents:
diff changeset
   409
.Li ip4 ,
hgs
parents:
diff changeset
   410
and
hgs
parents:
diff changeset
   411
.Li any
hgs
parents:
diff changeset
   412
can be specified.
hgs
parents:
diff changeset
   413
.Li any
hgs
parents:
diff changeset
   414
stands for
hgs
parents:
diff changeset
   415
.Dq any protocol .
hgs
parents:
diff changeset
   416
Also, use the protocol number.
hgs
parents:
diff changeset
   417
Specify a type and/or a code of ICMPv6 when
hgs
parents:
diff changeset
   418
upper-layer protocol is ICMPv6.
hgs
parents:
diff changeset
   419
The specification can be placed after
hgs
parents:
diff changeset
   420
.Li icmp6 .
hgs
parents:
diff changeset
   421
A type is separated with a code by single comma.
hgs
parents:
diff changeset
   422
A code must be specified anytime.
hgs
parents:
diff changeset
   423
When a zero is specified, the kernel deals with it as a wildcard.
hgs
parents:
diff changeset
   424
Note that the kernel cannot distinguish a wildcard from that a type
hgs
parents:
diff changeset
   425
of ICMPv6 is zero.
hgs
parents:
diff changeset
   426
For example, the following means the policy does not require IPsec
hgs
parents:
diff changeset
   427
for any inbound Neighbor Solicitation:
hgs
parents:
diff changeset
   428
.Pp
hgs
parents:
diff changeset
   429
.Dl "spdadd ::/0 ::/0 icmp6 135,0 -P in none;"
hgs
parents:
diff changeset
   430
.Pp
hgs
parents:
diff changeset
   431
NOTE:
hgs
parents:
diff changeset
   432
.Ar upperspec
hgs
parents:
diff changeset
   433
does not work against forwarding case at this moment,
hgs
parents:
diff changeset
   434
as it requires extra reassembly at forwarding node
hgs
parents:
diff changeset
   435
(not implemented at this moment).
hgs
parents:
diff changeset
   436
There are many protocols in
hgs
parents:
diff changeset
   437
.Pa /etc/protocols ,
hgs
parents:
diff changeset
   438
but protocols except of TCP, UDP and ICMP may not be suitable to use with IPsec.
hgs
parents:
diff changeset
   439
be cautious when using the protocols.
hgs
parents:
diff changeset
   440
.\"
hgs
parents:
diff changeset
   441
.Pp
hgs
parents:
diff changeset
   442
.It Ar policy
hgs
parents:
diff changeset
   443
.Ar policy
hgs
parents:
diff changeset
   444
is the one of the following three formats:
hgs
parents:
diff changeset
   445
.Bd -ragged -offset indent
hgs
parents:
diff changeset
   446
.It Fl P Ar direction Li discard
hgs
parents:
diff changeset
   447
.It Fl P Ar direction Li none
hgs
parents:
diff changeset
   448
.It Xo Fl P Ar direction Li ipsec
hgs
parents:
diff changeset
   449
.Ar protocol/mode/src-dst/level Op ...
hgs
parents:
diff changeset
   450
.Xc
hgs
parents:
diff changeset
   451
.Ed
hgs
parents:
diff changeset
   452
.Pp
hgs
parents:
diff changeset
   453
Specify the direction of its policy as
hgs
parents:
diff changeset
   454
.Ar direction .
hgs
parents:
diff changeset
   455
Either
hgs
parents:
diff changeset
   456
.Li out
hgs
parents:
diff changeset
   457
or
hgs
parents:
diff changeset
   458
.Li in
hgs
parents:
diff changeset
   459
are used.
hgs
parents:
diff changeset
   460
.Li discard
hgs
parents:
diff changeset
   461
means the packet matching indexes will be discarded.
hgs
parents:
diff changeset
   462
.Li none
hgs
parents:
diff changeset
   463
means that IPsec operation will not take place onto the packet.
hgs
parents:
diff changeset
   464
.Li ipsec
hgs
parents:
diff changeset
   465
means that IPsec operation will take place onto the packet.
hgs
parents:
diff changeset
   466
The part of
hgs
parents:
diff changeset
   467
.Ar protocol/mode/src-dst/level
hgs
parents:
diff changeset
   468
specifies the rule how to process the packet.
hgs
parents:
diff changeset
   469
Either
hgs
parents:
diff changeset
   470
.Li ah ,
hgs
parents:
diff changeset
   471
.Li esp
hgs
parents:
diff changeset
   472
or
hgs
parents:
diff changeset
   473
.Li ipcomp
hgs
parents:
diff changeset
   474
is to be set as
hgs
parents:
diff changeset
   475
.Ar protocol .
hgs
parents:
diff changeset
   476
.Ar mode
hgs
parents:
diff changeset
   477
is either
hgs
parents:
diff changeset
   478
.Li transport
hgs
parents:
diff changeset
   479
or
hgs
parents:
diff changeset
   480
.Li tunnel .
hgs
parents:
diff changeset
   481
If
hgs
parents:
diff changeset
   482
.Ar mode
hgs
parents:
diff changeset
   483
is
hgs
parents:
diff changeset
   484
.Li tunnel ,
hgs
parents:
diff changeset
   485
specify the end-points addresses of the SA as
hgs
parents:
diff changeset
   486
.Ar src
hgs
parents:
diff changeset
   487
and
hgs
parents:
diff changeset
   488
.Ar dst
hgs
parents:
diff changeset
   489
with
hgs
parents:
diff changeset
   490
.Sq -
hgs
parents:
diff changeset
   491
between these addresses which is used to specify the SA to use.
hgs
parents:
diff changeset
   492
If
hgs
parents:
diff changeset
   493
.Ar mode
hgs
parents:
diff changeset
   494
is
hgs
parents:
diff changeset
   495
.Li transport ,
hgs
parents:
diff changeset
   496
both
hgs
parents:
diff changeset
   497
.Ar src
hgs
parents:
diff changeset
   498
and
hgs
parents:
diff changeset
   499
.Ar dst
hgs
parents:
diff changeset
   500
can be omitted.
hgs
parents:
diff changeset
   501
.Ar level
hgs
parents:
diff changeset
   502
is to be one of the following:
hgs
parents:
diff changeset
   503
.Li default , use , require
hgs
parents:
diff changeset
   504
or
hgs
parents:
diff changeset
   505
.Li unique .
hgs
parents:
diff changeset
   506
If the SA is not available in every level, the kernel will request
hgs
parents:
diff changeset
   507
getting SA to the key exchange daemon.
hgs
parents:
diff changeset
   508
.Li default
hgs
parents:
diff changeset
   509
means the kernel consults to the system wide default against the specified protocol 
hgs
parents:
diff changeset
   510
, for example,
hgs
parents:
diff changeset
   511
.Li esp_trans_deflev
hgs
parents:
diff changeset
   512
sysctl variable, when the kernel processes the packet.
hgs
parents:
diff changeset
   513
.Li use
hgs
parents:
diff changeset
   514
means that the kernel use a SA if it is available,
hgs
parents:
diff changeset
   515
otherwise the kernel keeps normal operation.
hgs
parents:
diff changeset
   516
.Li require
hgs
parents:
diff changeset
   517
means SA is required whenever the kernel sends a packet matched
hgs
parents:
diff changeset
   518
with the policy.
hgs
parents:
diff changeset
   519
.Li unique
hgs
parents:
diff changeset
   520
is the same to require.
hgs
parents:
diff changeset
   521
In addition, it allows the policy to bind with the unique out-bound SA.
hgs
parents:
diff changeset
   522
Specify the policy level 
hgs
parents:
diff changeset
   523
.Li unique ,
hgs
parents:
diff changeset
   524
.Xr racoon 8
hgs
parents:
diff changeset
   525
will configure the SA for the policy.
hgs
parents:
diff changeset
   526
If the SA is configured by manual keying for that policy,
hgs
parents:
diff changeset
   527
put the decimal number as the policy identifier after
hgs
parents:
diff changeset
   528
.Li unique
hgs
parents:
diff changeset
   529
separated by colon
hgs
parents:
diff changeset
   530
.Ql :\&
hgs
parents:
diff changeset
   531
like the following;
hgs
parents:
diff changeset
   532
.Li unique:number .
hgs
parents:
diff changeset
   533
In order to bind this policy to the SA,
hgs
parents:
diff changeset
   534
.Li number
hgs
parents:
diff changeset
   535
must be between 1 and 32767.
hgs
parents:
diff changeset
   536
It corresponds to
hgs
parents:
diff changeset
   537
.Ar extensions Fl u
hgs
parents:
diff changeset
   538
of the manual SA configuration.
hgs
parents:
diff changeset
   539
In order to use the SA bundle, multiple rules can be defined.
hgs
parents:
diff changeset
   540
For example, if an IP header was followed by AH header followed by ESP header
hgs
parents:
diff changeset
   541
followed by an upper layer protocol header, the rule
hgs
parents:
diff changeset
   542
would be:
hgs
parents:
diff changeset
   543
.Dl esp/transport//require ah/transport//require ;
hgs
parents:
diff changeset
   544
The rule order is very important.
hgs
parents:
diff changeset
   545
.Pp
hgs
parents:
diff changeset
   546
Note that
hgs
parents:
diff changeset
   547
.Dq Li discard
hgs
parents:
diff changeset
   548
and
hgs
parents:
diff changeset
   549
.Dq Li none
hgs
parents:
diff changeset
   550
are not in the syntax described in
hgs
parents:
diff changeset
   551
.Xr ipsec_set_policy 3 .
hgs
parents:
diff changeset
   552
There are little differences in the syntax.
hgs
parents:
diff changeset
   553
See
hgs
parents:
diff changeset
   554
.Xr ipsec_set_policy 3
hgs
parents:
diff changeset
   555
for detail.
hgs
parents:
diff changeset
   556
.Pp
hgs
parents:
diff changeset
   557
.El
hgs
parents:
diff changeset
   558
.Pp
hgs
parents:
diff changeset
   559
.\"
hgs
parents:
diff changeset
   560
.Sh ALGORITHMS
hgs
parents:
diff changeset
   561
The following list shows the supported algorithms.
hgs
parents:
diff changeset
   562
.Sy protocol
hgs
parents:
diff changeset
   563
and
hgs
parents:
diff changeset
   564
.Sy algorithm
hgs
parents:
diff changeset
   565
are almost orthogonal.
hgs
parents:
diff changeset
   566
Followings are the list of authentication algorithms that can be used as
hgs
parents:
diff changeset
   567
.Ar aalgo
hgs
parents:
diff changeset
   568
in
hgs
parents:
diff changeset
   569
.Fl A Ar aalgo
hgs
parents:
diff changeset
   570
of
hgs
parents:
diff changeset
   571
.Ar protocol
hgs
parents:
diff changeset
   572
parameter:
hgs
parents:
diff changeset
   573
.Pp
hgs
parents:
diff changeset
   574
.Bd -literal -offset indent
hgs
parents:
diff changeset
   575
algorithm	keylen (bits)	comment
hgs
parents:
diff changeset
   576
hmac-md5	128		ah: rfc2403
hgs
parents:
diff changeset
   577
		128		ah-old: rfc2085
hgs
parents:
diff changeset
   578
hmac-sha1	160		ah: rfc2404
hgs
parents:
diff changeset
   579
		160		ah-old: 128bit ICV (no document)
hgs
parents:
diff changeset
   580
keyed-md5	128		ah: 96bit ICV (no document)
hgs
parents:
diff changeset
   581
		128		ah-old: rfc1828
hgs
parents:
diff changeset
   582
keyed-sha1	160		ah: 96bit ICV (no document)
hgs
parents:
diff changeset
   583
		160		ah-old: 128bit ICV (no document)
hgs
parents:
diff changeset
   584
null		0 to 2048	for debugging
hgs
parents:
diff changeset
   585
hmac-sha2-256	256		ah: 96bit ICV
hgs
parents:
diff changeset
   586
				(draft-ietf-ipsec-ciph-sha-256-00)
hgs
parents:
diff changeset
   587
		256		ah-old: 128bit ICV (no document)
hgs
parents:
diff changeset
   588
hmac-sha2-384	384		ah: 96bit ICV (no document)
hgs
parents:
diff changeset
   589
		384		ah-old: 128bit ICV (no document)
hgs
parents:
diff changeset
   590
hmac-sha2-512	512		ah: 96bit ICV (no document)
hgs
parents:
diff changeset
   591
		512		ah-old: 128bit ICV (no document)
hgs
parents:
diff changeset
   592
hmac-ripemd160	160		ah: 96bit ICV (RFC2857)
hgs
parents:
diff changeset
   593
				ah-old: 128bit ICV (no document)
hgs
parents:
diff changeset
   594
aes-xcbc-mac	128		ah: 96bit ICV (RFC3566)
hgs
parents:
diff changeset
   595
		128		ah-old: 128bit ICV (no document)
hgs
parents:
diff changeset
   596
tcp-md5		8 to 640	tcp: rfc2385
hgs
parents:
diff changeset
   597
.Ed
hgs
parents:
diff changeset
   598
.Pp
hgs
parents:
diff changeset
   599
Followings are the list of encryption algorithms that can be used as
hgs
parents:
diff changeset
   600
.Ar ealgo
hgs
parents:
diff changeset
   601
in
hgs
parents:
diff changeset
   602
.Fl E Ar ealgo
hgs
parents:
diff changeset
   603
of
hgs
parents:
diff changeset
   604
.Ar protocol
hgs
parents:
diff changeset
   605
parameter:
hgs
parents:
diff changeset
   606
.Pp
hgs
parents:
diff changeset
   607
.Bd -literal -offset indent
hgs
parents:
diff changeset
   608
algorithm	keylen (bits)	comment
hgs
parents:
diff changeset
   609
des-cbc		64		esp-old: rfc1829, esp: rfc2405
hgs
parents:
diff changeset
   610
3des-cbc	192		rfc2451
hgs
parents:
diff changeset
   611
null		0 to 2048	rfc2410
hgs
parents:
diff changeset
   612
blowfish-cbc	40 to 448	rfc2451
hgs
parents:
diff changeset
   613
cast128-cbc	40 to 128	rfc2451
hgs
parents:
diff changeset
   614
des-deriv	64		ipsec-ciph-des-derived-01
hgs
parents:
diff changeset
   615
3des-deriv	192		no document
hgs
parents:
diff changeset
   616
rijndael-cbc	128/192/256	rfc3602
hgs
parents:
diff changeset
   617
aes-ctr		160/224/288	draft-ietf-ipsec-ciph-aes-ctr-03
hgs
parents:
diff changeset
   618
.Ed
hgs
parents:
diff changeset
   619
.Pp
hgs
parents:
diff changeset
   620
Note that the first 128 bits of a key for
hgs
parents:
diff changeset
   621
.Li aes-ctr
hgs
parents:
diff changeset
   622
will be used as AES key, and remaining 32 bits will be used as nonce.
hgs
parents:
diff changeset
   623
.Pp
hgs
parents:
diff changeset
   624
Followings are the list of compression algorithms that can be used as
hgs
parents:
diff changeset
   625
.Ar calgo
hgs
parents:
diff changeset
   626
in
hgs
parents:
diff changeset
   627
.Fl C Ar calgo
hgs
parents:
diff changeset
   628
of
hgs
parents:
diff changeset
   629
.Ar protocol
hgs
parents:
diff changeset
   630
parameter:
hgs
parents:
diff changeset
   631
.Pp
hgs
parents:
diff changeset
   632
.Bd -literal -offset indent
hgs
parents:
diff changeset
   633
algorithm	comment
hgs
parents:
diff changeset
   634
deflate		rfc2394
hgs
parents:
diff changeset
   635
.Ed
hgs
parents:
diff changeset
   636
.\"
hgs
parents:
diff changeset
   637
.Sh EXIT STATUS
hgs
parents:
diff changeset
   638
.Ex -std
hgs
parents:
diff changeset
   639
.\"
hgs
parents:
diff changeset
   640
.Sh EXAMPLES
hgs
parents:
diff changeset
   641
.Bd -literal -offset
hgs
parents:
diff changeset
   642
add 3ffe:501:4819::1 3ffe:501:481d::1 esp 123457
hgs
parents:
diff changeset
   643
	-E des-cbc 0x3ffe05014819ffff ;
hgs
parents:
diff changeset
   644
hgs
parents:
diff changeset
   645
add -6 myhost.example.com yourhost.example.com ah 123456
hgs
parents:
diff changeset
   646
	-A hmac-sha1 "AH SA configuration!" ;
hgs
parents:
diff changeset
   647
hgs
parents:
diff changeset
   648
add 10.0.11.41 10.0.11.33 esp 0x10001
hgs
parents:
diff changeset
   649
	-E des-cbc 0x3ffe05014819ffff
hgs
parents:
diff changeset
   650
	-A hmac-md5 "authentication!!" ;
hgs
parents:
diff changeset
   651
hgs
parents:
diff changeset
   652
get 3ffe:501:4819::1 3ffe:501:481d::1 ah 123456 ;
hgs
parents:
diff changeset
   653
hgs
parents:
diff changeset
   654
flush ;
hgs
parents:
diff changeset
   655
hgs
parents:
diff changeset
   656
dump esp ;
hgs
parents:
diff changeset
   657
hgs
parents:
diff changeset
   658
spdadd 10.0.11.41/32[21] 10.0.11.33/32[any] any
hgs
parents:
diff changeset
   659
	-P out ipsec esp/tunnel/192.168.0.1-192.168.1.2/require ;
hgs
parents:
diff changeset
   660
hgs
parents:
diff changeset
   661
add 10.1.10.34 10.1.10.36 tcp 0x1000 -A tcp-md5 "TCP-MD5 BGP secret" ;
hgs
parents:
diff changeset
   662
hgs
parents:
diff changeset
   663
.Ed
hgs
parents:
diff changeset
   664
.\"
hgs
parents:
diff changeset
   665
.Sh SEE ALSO
hgs
parents:
diff changeset
   666
.Xr ipsec_set_policy 3 ,
hgs
parents:
diff changeset
   667
.Xr racoon 8 ,
hgs
parents:
diff changeset
   668
.Xr sysctl 8
hgs
parents:
diff changeset
   669
.Rs
hgs
parents:
diff changeset
   670
.%T "Changed manual key configuration for IPsec"
hgs
parents:
diff changeset
   671
.%O "http://www.kame.net/newsletter/19991007/"
hgs
parents:
diff changeset
   672
.%D "October 1999"
hgs
parents:
diff changeset
   673
.Re
hgs
parents:
diff changeset
   674
.\"
hgs
parents:
diff changeset
   675
.Sh HISTORY
hgs
parents:
diff changeset
   676
The
hgs
parents:
diff changeset
   677
.Nm
hgs
parents:
diff changeset
   678
utility first appeared in WIDE Hydrangea IPv6 protocol stack kit.
hgs
parents:
diff changeset
   679
The utility was completely re-designed in June 1998.
hgs
parents:
diff changeset
   680
.\"
hgs
parents:
diff changeset
   681
.Sh BUGS
hgs
parents:
diff changeset
   682
The
hgs
parents:
diff changeset
   683
.Nm
hgs
parents:
diff changeset
   684
utility
hgs
parents:
diff changeset
   685
should report and handle syntax errors better.
hgs
parents:
diff changeset
   686
.Pp
hgs
parents:
diff changeset
   687
For IPsec gateway configuration,
hgs
parents:
diff changeset
   688
.Ar src_range
hgs
parents:
diff changeset
   689
and
hgs
parents:
diff changeset
   690
.Ar dst_range
hgs
parents:
diff changeset
   691
with TCP/UDP port number do not work, as the gateway does not reassemble
hgs
parents:
diff changeset
   692
packets
hgs
parents:
diff changeset
   693
(cannot inspect upper-layer headers).