TCPKEY(8) Maintenance Commands and Procedures TCPKEY(8)
NAME
tcpkey - Manages the Security Association Database (SADB) for TCP
SYNOPSIS
tcpkey [
-nvp]
tcpkey [
-nvp]
-f filename tcpkey -c filename tcpkey [
-nvp]
get {
Extension value...}
tcpkey [
-nvp]
delete {
Extension value...}
tcpkey [
-nvp]
flush tcpkey [
-nvp]
dump tcpkey [
-nvp]
save [
filename]
DESCRIPTION
The
tcpkey command is used to manually manipulate the
tcp(4P) security
association (SA) database.
TCP SAs are in one of three states:
mature A newly added SA starts in the mature state and will remain
there unless it is configured with any limits on its lifetime.
dying A mature SA which exceeds a soft lifetime limit will transition
into the
dying state. This state is informational only; the SA
can continue to be used. A
dying SA can be moved back to the
mature state by updating its lifetime limits via the
update command, so that they are no longer exceeded. A
dying SA will
transition to
dead and be removed when it is either deleted via
a
delete or
flush command, or subsequently exceeds a hard
lifetime limit.
dead An SA which exceeds a hard lifetime limit will transition into
the
dead state, be unavailable for use on any new connections,
and be removed from the system as soon as it is no longer used
by any established TCP session.
While the
tcpkey utility has only a limited number of general options,
it supports a rich command language. The user may specify requests to
be delivered by means of a programmatic interface specific for manual
keying. See
pf_key(4P). When
tcpkey is invoked with no arguments, it
will enter an interactive mode which prints a prompt ("tcpkey>") to the
standard output and accepts commands from the standard input until the
end-of-file is reached.
tcpkey uses a
pf_key(4P) socket and the message types SADB_ADD,
SADB_UPDATE, SADB_DELETE, SADB_GET and SADB_FLUSH. Thus, you must have
the PRIV_SYS_IP_CONFIG privilege to use this command.
OPTIONS
-c [
filename]
Analogous to the
-f option (see following), except that the
input is not executed but only checked for syntactical
correctness. Errors are reported to stderr. This option is
provided to debug configurations without making changes.
-f [
filename]
Read commands from an input file,
filename. The lines of the
input file are identical to the command line language. The
save command can generate files readable by the
-f argument.
-n Prevent attempts to print host and network names symbolically
when reporting actions. This is useful, for example, when all
name servers are down or are otherwise unreachable.
-p Paranoid. Do not print any keying material, even if saving.
Instead of an actual hexadecimal digit, print an `X' when this
flag is turned on.
-v Verbose. Print the messages being sent into the
pf_key(4P) socket, and print raw seconds values for lifetimes.
COMMANDS
add Add an SA. Because it involves the transfer of keying
material, this command and its parameters cannot be passed in
as arguments to
tcpkey, lest the keys be visible in
ps(1) output. It can be used either from the interactive `tcpkey>'
prompt or in a command file specified by the
-f option. The
add command accepts all extension-value pairs described below.
update Update SA lifetime extensions. Like
add this command can only
be used either from the interactive `tcpkey>' prompt or in a
command file specified by the
-f option. The
update command
accepts all extension-value pairs described below with the
exception of those used to configure algorithm or keying
material, which cannot be changed once an SA is established.
delete Delete a specific SA. This command requires the
src extension,
and the
dest extension. If the SA is in use, it will be marked
for deletion and no longer used for new connection setup.
Existing connections will however continue to use it until they
are closed.
get Look up and display a security association. Like
delete, this
command only requires
src and
dest.
flush Remove all SAs.
dump Will display all SAs. Because of the large amount of data
generated by this command, there is no guarantee that all SA
information will be successfully delivered, or that this
command will even complete.
save Is the command analog of the
-s option.
help Prints a brief summary of commands.
EXTENSION VALUE TYPES
Commands like
add,
delete,
get, and
update require that certain
extensions and associated values be specified. The extensions will be
listed here, followed by the commands that use them, and the commands
that require them.
src addr |
name Source address of the SA.
src6 IPv6addr dst addr |
name Destination address of the SA.
dst6 IPv6addr sport port Source port number. If unspecified, the SA will
match any source port.
dport port Destination port number. If unspecified, the SA
will match any destination port.
authalg algorithm Authentication algorithm. The only supported
value is `md5'.
authstring string Authentication string. Only ASCII characters are
supported and the authentication string must be
no longer than 80 characters.
The next four extensions are lifetime extensions. There are two
varieties, "hard" and "soft". If a hard lifetime expires, the SA will
be deleted automatically by the system, or marked for deletion and no
longer used for new connection setup if it is in use. Existing
connections will continue to use the SA until they are closed. If a
soft lifetime expires, its state is downgraded to dying from mature.
In either case, an SADB_EXPIRE message will be queued by the system and
transmitted upstream on the
pf_key(4P) socket the next time a
downstream command is received. The
ipseckey(8) monitor command to key
allows you to view SADB_EXPIRE messages.
soft_addtime hard_addtime Specifies the number of seconds that this SA can
exist after being added. Updating an SA does not
reset the initial time that it was added. If the
system clock has been altered since the SA was
established, you may need to adjust the specified
duration to achieve the desired outcome. If this
extension is not present, the default value is
zero, which means the SA will not expire based on
how long it has been since it was added. This
extension is used by the
add and
update commands.
soft_usetime hard_usetime Specifies the number of seconds this SA can exist
after first being used. If the system clock has
been altered since the SA was first used, you may
need to adjust the specified duration to achieve
the desired outcome. If this extension is not
present, the default value is zero, which means
the SA will not expire based on how long it has
been since it was first used. This extension is
used by the
add and
update commands.
FILES
/etc/inet/secret/tcpkeys Default configuration file used at boot time.
EXAMPLES
Example 1 Empting Out All SAs
# tcpkey flush
Example 2 Saving All SAs To Standard Output
# tcpkey save
Example 3 Adding a pair of SAs
Note that the second SA specifies 179 as the
source port so that it
matches reply traffic.
# tcpkey
tcpkey> add src 192.168.1.1 dst 192.168.1.2 dport 179 \
authalg md5 authstring s3kr1t
tcpkey> add src 192.168.1.2 dst 192.168.1.1 sport 179 \
authalg md5 authstring s3kr1t
tcpkey> exit
Example 4 Displaying all SAs
# tcpkey dump
Base message (version 2) type DUMP, SA type TCPSIG.
Message length 112 bytes, seq=5, pid=649091.
SRC: Source address (proto=6/tcp)
SRC: AF_INET6: port 0, ::ffff:192.168.1.1/32 (host.example.com).
DST: Destination address (proto=6/tcp)
DST: AF_INET6: port 179, ::ffff:192.168.1.2/32 <unknown>.
AST: Authentication string.
AST: "s3kr1t"
INTERFACE STABILITY
The command line interface of
tcpkey is
Uncommitted. The command line
interface of
tcpkey is
Not-An-Interface and may change at any time.
SEE ALSO
ps(1),
pf_key(4P),
ipseckey(8)illumos August 14, 2024 illumos