table of contents
IPSEC-PLUTO(8) | Executable programs | IPSEC-PLUTO(8) |
NAME¶
ipsec-pluto, pluto - Internet Key Exchange daemon
SYNOPSIS¶
ipsec pluto [--help] [--version]
[--nofork] [--rundir path] [--leak-detective] [--efence-protect]
[--stderrlog] [--logfile filename] [--log-no-time]
[--log-no-append] [--log-no-ip] [--log-no-audit]
[--config filename] [--secretsfile secrets-file]
[--ipsecdir dirname] [--nssdir dirname]
[--coredir dirname]
[--vendorid VID] [--uniqueids]
[--virtual-private network_list]
[--keep-alive delay_sec] [--force-busy] [--crl-strict]
[--crlcheckinterval] [--listen ipaddr]
[--nhelpers number] [--seedbits numbits]
[--statsbin filename]
[--secctx-attr-type number]
[--use-xfrm] [--use-bsdkame]
DESCRIPTION¶
pluto is Libreswan's Internet Key Exchange (IKE) daemon.
pluto is not normally run directly. Instead the daemon is controlled the hosts init(8) system (such as systemd(1) or rc(8)) or the command ipsec (see ipsec(8)).
For more general information on Libreswan see libreswan(7).
For information on how to configure Libreswan and the pluto daemon see ipsec.conf(5).
Help Options¶
--help
--version
Starting pluto¶
When starting, pluto attempts to create a lockfile with the name /run/pluto/pluto.pid. If the lockfile cannot be created, pluto exits - this prevents multiple plutos from competing. Any "leftover" lockfile must be manually removed before pluto will run. pluto then writes its PID into this file so that scripts can find it. pluto then forks and the parent exits (this is the conventional "daemon fork").
The following options alter how pluto starts:
--nofork
In addition, after the lock file and control socket are created, print the line "Pluto initialized" to standard out.
--rundir path
The run directory contains:
path/pluto.ctl
path/pluto.pid
--leak-detective
--efence-protect
Logging¶
All logging, including diagnostics, are sent to syslog(3) with facility=authpriv; it decides where to put these messages. The following options alter this behaviour:
--stderrlog
Often combined with --nofork debugging pluto.
--logfile filename
See ipsec.conf(5) and logfile=filename.
--log-no-time
See ipsec.conf(5) and logtime=no.
--log-no-append
See ipsec.conf(5) and logappend=no.
--log-no-ip
See ipsec.conf(5) and logip=no.
--log-no-audit
See ipsec.conf(5) and audit-log=no.
Configuration Files¶
The following options overide pluto's default configuration parameters:
--config filename
The "config" section of filename will be loaded.
Normally, pluto is started using ipsec start, and that passes the parameter --config /etc/ipsec.conf so that the default configuration is read.
--secretsfile secrets-file
This name is subject to "globbing" as in sh(1), so every file with a matching name is processed. Quoting is generally needed to prevent the shell from doing the globbing.
Default is /etc/ipsec.secrets. See ipsec.secrets(5).
--ipsecdir dirname
Default is /etc/ipsec.d.
--nssdir dirname
Default is /var/lib/ipsec/nss.
--coredir dirname
Default is /run/pluto.
Other Options¶
The following options tweak pluto's behaviour:
--vendorid VID
--uniqueids
If this option has been selected, whenever a new ISAKMP SA is established, any connection with the same Peer ID but a different Peer IP address is unoriented (causing all its SAs to be deleted). This helps clean up dangling SAs when a connection is lost and then regained at another IP address.
--virtual-private network_list
See ipsec.conf(5) for the syntax
--keep-alive delay_sec
--force-busy
--crl-strict
--crlcheckinterval
--listen ipaddr
--nhelpers number
Pluto can also use helper children to off-load cryptographic operations. This behavior can be fine tuned using the --nhelpers. Pluto will start (n-1) of them, where n is the number of CPU's you have (including hypherthreaded CPU's). A value of 0 forces pluto to do all operations in the main process. A value of -1 tells pluto to perform the above calculation. Any other value forces the number to that amount.
See ipsec.conf(5) and nhelpers=number.
--seedbits numbits
Pluto uses the NSS crypto library as its random source. Some government Three Letter Agency requires that pluto reads 440 bits from /dev/random and feed this into the NSS RNG before drawing random from the NSS library, despite the NSS library itself already seeding its internal state. As this process can block pluto for an extended time, the default is to not perform this redundant seeding. The --seedbits option can be used to specify the number of bits that will be pulled from /dev/random and seeded into the NSS RNG.
See ipsec.conf(5) and seedbits=number.
This option should not be used by most people.
--statsbin filename
--secctx-attr-type number
Libreswan supports different IPstacks on different operating systems. Since most IPstacks have died the list is very short:
--use-xfrm
--use-bsdkame
Debugging¶
When running pluto under a debugger, the options --nofork and --stderrlog are recommended.
pluto is willing to produce a prodigious amount of debugging information. There are several classes of debugging output, and pluto may be directed to produce a selection of them. All lines of debugging output are prefixed with "|" to distinguish them from normal diagnostic messages.
See ipsec.conf(5) and plutodebug=options.
Very occasionally it is necessary to enable debugging early in pluto's startup process. The follow options enable this:
--debug help (whack only)
--debug none
--debug base
--debug cpu-usage
--debug class, --no-debug class, --debug no-class
SIGNALS¶
pluto responds to SIGHUP by issuing a suggestion that ipsec listen might have been intended.
pluto exits when it receives SIGTERM.
EXIT STATUS¶
pluto normally forks a daemon process, so the exit status is a very preliminary result.
0
1
10
FILES¶
/run/pluto/pluto.pid /run/pluto/pluto.ctl /etc/ipsec.secrets /etc/ipsec.conf
ENVIRONMENT¶
pluto does not use any environment variables.
SEE ALSO¶
The rest of the Libreswan distribution, in particular libreswan(7).
HISTORY¶
This code is released under the GPL terms. See the accompanying files CHANGES COPYING and CREDITS.* for more details.
Detailed history (including FreeS/WAN and Openswan) can be found in the docs/ directory.
BUGS¶
Please see https://github.com/libreswan/libreswan/issues for a list of currently known bugs and missing features.
AUTHOR¶
Paul Wouters Andrew Cagney
03/04/2025 | Libreswan 5.2 |