xref: /freebsd/usr.sbin/ctld/ctl.conf.5 (revision fcb560670601b2a4d87bb31d7531c8dcc37ee71b)
1.\" Copyright (c) 2012 The FreeBSD Foundation
2.\" All rights reserved.
3.\"
4.\" This software was developed by Edward Tomasz Napierala under sponsorship
5.\" from the FreeBSD Foundation.
6.\"
7.\" Redistribution and use in source and binary forms, with or without
8.\" modification, are permitted provided that the following conditions
9.\" are met:
10.\" 1. Redistributions of source code must retain the above copyright
11.\"    notice, this list of conditions and the following disclaimer.
12.\" 2. Redistributions in binary form must reproduce the above copyright
13.\"    notice, this list of conditions and the following disclaimer in the
14.\"    documentation and/or other materials provided with the distribution.
15.\"
16.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
17.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
20.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26.\" SUCH DAMAGE.
27.\"
28.\" $FreeBSD$
29.\"
30.Dd February 7, 2015
31.Dt CTL.CONF 5
32.Os
33.Sh NAME
34.Nm ctl.conf
35.Nd CAM Target Layer / iSCSI target daemon configuration file
36.Sh DESCRIPTION
37The
38.Nm
39configuration file is used by the
40.Xr ctld 8
41daemon.
42Lines starting with
43.Ql #
44are interpreted as comments.
45The general syntax of the
46.Nm
47file is:
48.Bd -literal -offset indent
49.No pidfile Ar path
50
51.No auth-group Ar name No {
52.Dl chap Ar user Ar secret
53.Dl ...
54}
55
56.No portal-group Ar name No {
57.Dl listen Ar address
58.\".Dl listen-iser Ar address
59.Dl discovery-auth-group Ar name
60.Dl ...
61}
62
63.No lun Ar name No {
64.Dl path Ar path
65}
66
67.No target Ar name {
68.Dl auth-group Ar name
69.Dl portal-group Ar name Op Ar agname
70.Dl port Ar name
71.Dl lun Ar number Ar name
72.Dl lun Ar number No {
73.Dl 	path Ar path
74.Dl }
75.Dl ...
76}
77.Ed
78.Ss Global Context
79.Bl -tag -width indent
80.It Ic auth-group Ar name
81Create an
82.Sy auth-group
83configuration context,
84defining a new auth-group,
85which can then be assigned to any number of targets.
86.It Ic debug Ar level
87The debug verbosity level.
88The default is 0.
89.It Ic maxproc Ar number
90The limit for concurrently running child processes handling
91incoming connections.
92The default is 30.
93A setting of 0 disables the limit.
94.It Ic pidfile Ar path
95The path to the pidfile.
96The default is
97.Pa /var/run/ctld.pid .
98.It Ic portal-group Ar name
99Create a
100.Sy portal-group
101configuration context,
102defining a new portal-group,
103which can then be assigned to any number of targets.
104.It Ic lun Ar name
105Create a
106.Sy lun
107configuration context, defining a LUN to be exported by some target(s).
108.It Ic target Ar name
109Create a
110.Sy target
111configuration context, which can contain one or more
112.Sy lun
113contexts.
114.It Ic timeout Ar seconds
115The timeout for login sessions, after which the connection
116will be forcibly terminated.
117The default is 60.
118A setting of 0 disables the timeout.
119.It Ic isns-server Ar address
120An IPv4 or IPv6 address and optionally port of iSNS server to register on.
121.It Ic isns-period Ar seconds
122iSNS registration period.
123Registered Network Entity not updated during this period will be unregistered.
124The default is 900.
125.It Ic isns-timeout Ar seconds
126Timeout for iSNS requests.
127The default is 5.
128.El
129.Ss auth-group Context
130.Bl -tag -width indent
131.It Ic auth-type Ar type
132Sets the authentication type.
133Type can be either
134.Qq Ar none ,
135.Qq Ar deny ,
136.Qq Ar chap ,
137or
138.Qq Ar chap-mutual .
139In most cases it is not necessary to set the type using this clause;
140it is usually used to disable authentication for a given
141.Sy auth-group .
142.It Ic chap Ar user Ar secret
143A set of CHAP authentication credentials.
144Note that for any
145.Sy auth-group ,
146the configuration may only contain either
147.Sy chap
148or
149.Sy chap-mutual
150entries; it is an error to mix them.
151.It Ic chap-mutual Ar user Ar secret Ar mutualuser Ar mutualsecret
152A set of mutual CHAP authentication credentials.
153Note that for any
154.Sy auth-group ,
155the configuration may only contain either
156.Sy chap
157or
158.Sy chap-mutual
159entries; it is an error to mix them.
160.It Ic initiator-name Ar initiator-name
161An iSCSI initiator name.
162Only initiators with a name matching one of the defined
163names will be allowed to connect.
164If not defined, there will be no restrictions based on initiator
165name.
166.It Ic initiator-portal Ar address Ns Op / Ns Ar prefixlen
167An iSCSI initiator portal: an IPv4 or IPv6 address, optionally
168followed by a literal slash and a prefix length.
169Only initiators with an address matching one of the defined
170addresses will be allowed to connect.
171If not defined, there will be no restrictions based on initiator
172address.
173.El
174.Ss portal-group Context
175.Bl -tag -width indent
176.It Ic discovery-auth-group Ar name
177Assign a previously defined authentication group to the portal group,
178to be used for target discovery.
179By default, portal groups are assigned predefined
180.Sy auth-group
181.Qq Ar default ,
182which denies discovery.
183Another predefined
184.Sy auth-group ,
185.Qq Ar no-authentication ,
186may be used
187to permit discovery without authentication.
188.It Ic discovery-filter Ar filter
189Determines which targets are returned during discovery.
190Filter can be either
191.Qq Ar none ,
192.Qq Ar portal ,
193.Qq Ar portal-name ,
194or
195.Qq Ar portal-name-auth .
196When set to
197.Qq Ar none ,
198discovery will return all targets assigned to that portal group.
199When set to
200.Qq Ar portal ,
201discovery will not return targets that cannot be accessed by the
202initiator because of their
203.Sy initiator-portal .
204When set to
205.Qq Ar portal-name ,
206the check will include both
207.Sy initiator-portal
208and
209.Sy initiator-name .
210When set to
211.Qq Ar portal-name-auth ,
212the check will include
213.Sy initiator-portal ,
214.Sy initiator-name ,
215and authentication credentials.
216The target is returned if it does not require CHAP authentication,
217or if the CHAP user and secret used during discovery match those
218used by the target.
219Note that when using
220.Qq Ar portal-name-auth ,
221targets that require CHAP authentication will only be returned if
222.Sy discovery-auth-group
223requires CHAP.
224The default is
225.Qq Ar none .
226.It Ic listen Ar address
227An IPv4 or IPv6 address and port to listen on for incoming connections.
228.\".It Ic listen-iser Ar address
229.\"An IPv4 or IPv6 address and port to listen on for incoming connections
230.\"using iSER (iSCSI over RDMA) protocol.
231.It Ic redirect Aq Ar address
232IPv4 or IPv6 address to redirect initiators to.
233When configured, all initiators attempting to connect to portal
234belonging to this
235.Sy portal-group
236will get redirected using "Target moved temporarily" login response.
237Redirection happens before authentication and any
238.Sy initiator-name
239or
240.Sy initiator-portal
241checks are skipped.
242.El
243.Ss target Context
244.Bl -tag -width indent
245.It Ic alias Ar text
246Assign a human-readable description to the target.
247There is no default.
248.It Ic auth-group Ar name
249Assign a previously defined authentication group to the target.
250By default, targets that do not specify their own auth settings,
251using clauses such as
252.Sy chap
253or
254.Sy initiator-name ,
255are assigned
256predefined
257.Sy auth-group
258.Qq Ar default ,
259which denies all access.
260Another predefined
261.Sy auth-group ,
262.Qq Ar no-authentication ,
263may be used to permit access
264without authentication.
265Note that targets must only use one of
266.Sy auth-group , chap , No or Sy chap-mutual ;
267it is a configuration error to mix multiple types in one target.
268.It Ic auth-type Ar type
269Sets the authentication type.
270Type can be either
271.Qq Ar none ,
272.Qq Ar deny ,
273.Qq Ar chap ,
274or
275.Qq Ar chap-mutual .
276In most cases it is not necessary to set the type using this clause;
277it is usually used to disable authentication for a given
278.Sy target .
279This clause is mutually exclusive with
280.Sy auth-group ;
281one cannot use
282both in a single target.
283.It Ic chap Ar user Ar secret
284A set of CHAP authentication credentials.
285Note that targets must only use one of
286.Sy auth-group , chap , No or Sy chap-mutual ;
287it is a configuration error to mix multiple types in one target.
288.It Ic chap-mutual Ar user Ar secret Ar mutualuser Ar mutualsecret
289A set of mutual CHAP authentication credentials.
290Note that targets must only use one of
291.Sy auth-group , chap , No or Sy chap-mutual ;
292it is a configuration error to mix multiple types in one target.
293.It Ic initiator-name Ar initiator-name
294An iSCSI initiator name.
295Only initiators with a name matching one of the defined
296names will be allowed to connect.
297If not defined, there will be no restrictions based on initiator
298name.
299This clause is mutually exclusive with
300.Sy auth-group ;
301one cannot use
302both in a single target.
303.It Ic initiator-portal Ar address Ns Op / Ns Ar prefixlen
304An iSCSI initiator portal: an IPv4 or IPv6 address, optionally
305followed by a literal slash and a prefix length.
306Only initiators with an address matching one of the defined
307addresses will be allowed to connect.
308If not defined, there will be no restrictions based on initiator
309address.
310This clause is mutually exclusive with
311.Sy auth-group ;
312one cannot use
313both in a single target.
314.It Ic offload Ar driver
315Define iSCSI hardware offload driver to use for this target.
316.It Ic portal-group Ar name Op Ar agname
317Assign a previously defined portal group to the target.
318The default portal group is
319.Qq Ar default ,
320which makes the target available
321on TCP port 3260 on all configured IPv4 and IPv6 addresses.
322Optional second argument specifies auth group name for connections
323to this specific portal group.
324If second argument is not specified, target auth group is used.
325.It Ic port Ar name
326Assign specified CTL port (such as "isp0") to the target.
327On startup ctld configures LUN mapping and enables all assigned ports.
328Each port can be assigned to only one target.
329.It Ic redirect Aq Ar address
330IPv4 or IPv6 address to redirect initiators to.
331When configured, all initiators attempting to connect to this target
332will get redirected using "Target moved temporarily" login response.
333Redirection happens after successful authentication.
334.It Ic lun Ar number Ar name
335Export previously defined
336.Sy lun
337by the parent target.
338.It Ic lun Ar number
339Create a
340.Sy lun
341configuration context, defining a LUN exported by the parent target.
342.El
343.Ss lun Context
344.Bl -tag -width indent
345.It Ic backend Ar block No | Ar ramdisk
346The CTL backend to use for a given LUN.
347Valid choices are
348.Qq Ar block
349and
350.Qq Ar ramdisk ;
351block is used for LUNs backed
352by files or disk device nodes; ramdisk is a bitsink device, used mostly for
353testing.
354The default backend is block.
355.It Ic blocksize Ar size
356The blocksize visible to the initiator.
357The default blocksize is 512.
358.It Ic device-id Ar string
359The SCSI Device Identification string presented to the initiator.
360.It Ic option Ar name Ar value
361The CTL-specific options passed to the kernel.
362All CTL-specific options are documented in the
363.Sx OPTIONS
364section of
365.Xr ctladm 8 .
366.It Ic path Ar path
367The path to the file or device node used to back the LUN.
368.It Ic serial Ar string
369The SCSI serial number presented to the initiator.
370.It Ic size Ar size
371The LUN size, in bytes.
372.El
373.Sh FILES
374.Bl -tag -width ".Pa /etc/ctl.conf" -compact
375.It Pa /etc/ctl.conf
376The default location of the
377.Xr ctld 8
378configuration file.
379.El
380.Sh EXAMPLES
381.Bd -literal
382auth-group ag0 {
383	chap-mutual "user" "secret" "mutualuser" "mutualsecret"
384	chap-mutual "user2" "secret2" "mutualuser" "mutualsecret"
385	initiator-portal 192.168.1.1/16
386}
387
388auth-group ag1 {
389	auth-type none
390	initiator-name "iqn.2012-06.com.example:initiatorhost1"
391	initiator-name "iqn.2012-06.com.example:initiatorhost2"
392	initiator-portal 192.168.1.1/24
393	initiator-portal [2001:db8::de:ef]
394}
395
396portal-group pg0 {
397	discovery-auth-group no-authentication
398	listen 0.0.0.0:3260
399	listen [::]:3260
400	listen [fe80::be:ef]:3261
401}
402
403target iqn.2012-06.com.example:target0 {
404	alias "Example target"
405	auth-group no-authentication
406	lun 0 {
407		path /dev/zvol/tank/example_0
408		blocksize 4096
409		size 4G
410	}
411}
412
413lun example_1 {
414	path /dev/zvol/tank/example_1
415}
416
417target iqn.2012-06.com.example:target1 {
418	chap chapuser chapsecret
419	lun 0 example_1
420}
421
422target iqn.2012-06.com.example:target2 {
423	auth-group ag0
424	portal-group pg0
425	lun 0 example_1
426	lun 1 {
427		path /dev/zvol/tank/example_2
428		option foo bar
429	}
430}
431.Ed
432.Sh SEE ALSO
433.Xr ctl 4 ,
434.Xr ctladm 8 ,
435.Xr ctld 8
436.Sh AUTHORS
437The
438.Nm
439configuration file functionality for
440.Xr ctld 8
441was developed by
442.An Edward Tomasz Napierala Aq Mt trasz@FreeBSD.org
443under sponsorship from the FreeBSD Foundation.
444