xref: /freebsd/usr.sbin/ctld/ctl.conf.5 (revision b78ee15e9f04ae15c3e1200df974473167524d17)
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 June 24, 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 offload Ar driver
232Define iSCSI hardware offload driver to use for this
233.Sy portal-group .
234.It Ic redirect Ar address
235IPv4 or IPv6 address to redirect initiators to.
236When configured, all initiators attempting to connect to portal
237belonging to this
238.Sy portal-group
239will get redirected using "Target moved temporarily" login response.
240Redirection happens before authentication and any
241.Sy initiator-name
242or
243.Sy initiator-portal
244checks are skipped.
245.El
246.Ss target Context
247.Bl -tag -width indent
248.It Ic alias Ar text
249Assign a human-readable description to the target.
250There is no default.
251.It Ic auth-group Ar name
252Assign a previously defined authentication group to the target.
253By default, targets that do not specify their own auth settings,
254using clauses such as
255.Sy chap
256or
257.Sy initiator-name ,
258are assigned
259predefined
260.Sy auth-group
261.Qq Ar default ,
262which denies all access.
263Another predefined
264.Sy auth-group ,
265.Qq Ar no-authentication ,
266may be used to permit access
267without authentication.
268Note that targets must only use one of
269.Sy auth-group , chap , No or Sy chap-mutual ;
270it is a configuration error to mix multiple types in one target.
271.It Ic auth-type Ar type
272Sets the authentication type.
273Type can be either
274.Qq Ar none ,
275.Qq Ar deny ,
276.Qq Ar chap ,
277or
278.Qq Ar chap-mutual .
279In most cases it is not necessary to set the type using this clause;
280it is usually used to disable authentication for a given
281.Sy target .
282This clause is mutually exclusive with
283.Sy auth-group ;
284one cannot use
285both in a single target.
286.It Ic chap Ar user Ar secret
287A set of CHAP authentication credentials.
288Note that targets must only use one of
289.Sy auth-group , chap , No or Sy chap-mutual ;
290it is a configuration error to mix multiple types in one target.
291.It Ic chap-mutual Ar user Ar secret Ar mutualuser Ar mutualsecret
292A set of mutual CHAP authentication credentials.
293Note that targets must only use one of
294.Sy auth-group , chap , No or Sy chap-mutual ;
295it is a configuration error to mix multiple types in one target.
296.It Ic initiator-name Ar initiator-name
297An iSCSI initiator name.
298Only initiators with a name matching one of the defined
299names will be allowed to connect.
300If not defined, there will be no restrictions based on initiator
301name.
302This clause is mutually exclusive with
303.Sy auth-group ;
304one cannot use
305both in a single target.
306.It Ic initiator-portal Ar address Ns Op / Ns Ar prefixlen
307An iSCSI initiator portal: an IPv4 or IPv6 address, optionally
308followed by a literal slash and a prefix length.
309Only initiators with an address matching one of the defined
310addresses will be allowed to connect.
311If not defined, there will be no restrictions based on initiator
312address.
313This clause is mutually exclusive with
314.Sy auth-group ;
315one cannot use
316both in a single target.
317.It Ic portal-group Ar name Op Ar agname
318Assign a previously defined portal group to the target.
319The default portal group is
320.Qq Ar default ,
321which makes the target available
322on TCP port 3260 on all configured IPv4 and IPv6 addresses.
323Optional second argument specifies auth group name for connections
324to this specific portal group.
325If second argument is not specified, target auth group is used.
326.It Ic port Ar name
327.It Ic port Ar name/pp
328.It Ic port Ar name/pp/vp
329Assign specified CTL port (such as "isp0" or "isp2/1") to the target.
330On startup ctld configures LUN mapping and enables all assigned ports.
331Each port can be assigned to only one target.
332.It Ic redirect Ar address
333IPv4 or IPv6 address to redirect initiators to.
334When configured, all initiators attempting to connect to this target
335will get redirected using "Target moved temporarily" login response.
336Redirection happens after successful authentication.
337.It Ic lun Ar number Ar name
338Export previously defined
339.Sy lun
340by the parent target.
341.It Ic lun Ar number
342Create a
343.Sy lun
344configuration context, defining a LUN exported by the parent target.
345.El
346.Ss lun Context
347.Bl -tag -width indent
348.It Ic backend Ar block No | Ar ramdisk
349The CTL backend to use for a given LUN.
350Valid choices are
351.Qq Ar block
352and
353.Qq Ar ramdisk ;
354block is used for LUNs backed
355by files or disk device nodes; ramdisk is a bitsink device, used mostly for
356testing.
357The default backend is block.
358.It Ic blocksize Ar size
359The blocksize visible to the initiator.
360The default blocksize is 512.
361.It Ic device-id Ar string
362The SCSI Device Identification string presented to the initiator.
363.It Ic option Ar name Ar value
364The CTL-specific options passed to the kernel.
365All CTL-specific options are documented in the
366.Sx OPTIONS
367section of
368.Xr ctladm 8 .
369.It Ic path Ar path
370The path to the file, device node, or
371.Xr zfs 8
372volume used to back the LUN.
373For optimal performance, create the volume with the
374.Qq Ar volmode=dev
375property set.
376.It Ic serial Ar string
377The SCSI serial number presented to the initiator.
378.It Ic size Ar size
379The LUN size, in bytes.
380.El
381.Sh FILES
382.Bl -tag -width ".Pa /etc/ctl.conf" -compact
383.It Pa /etc/ctl.conf
384The default location of the
385.Xr ctld 8
386configuration file.
387.El
388.Sh EXAMPLES
389.Bd -literal
390auth-group ag0 {
391	chap-mutual "user" "secret" "mutualuser" "mutualsecret"
392	chap-mutual "user2" "secret2" "mutualuser" "mutualsecret"
393	initiator-portal 192.168.1.1/16
394}
395
396auth-group ag1 {
397	auth-type none
398	initiator-name "iqn.2012-06.com.example:initiatorhost1"
399	initiator-name "iqn.2012-06.com.example:initiatorhost2"
400	initiator-portal 192.168.1.1/24
401	initiator-portal [2001:db8::de:ef]
402}
403
404portal-group pg0 {
405	discovery-auth-group no-authentication
406	listen 0.0.0.0:3260
407	listen [::]:3260
408	listen [fe80::be:ef]:3261
409}
410
411target iqn.2012-06.com.example:target0 {
412	alias "Example target"
413	auth-group no-authentication
414	lun 0 {
415		path /dev/zvol/tank/example_0
416		blocksize 4096
417		size 4G
418	}
419}
420
421lun example_1 {
422	path /dev/zvol/tank/example_1
423	option naa 0x50015178f369f093
424}
425
426target iqn.2012-06.com.example:target1 {
427	auth-group ag0
428	portal-group pg0
429	lun 0 example_1
430	lun 1 {
431		path /dev/zvol/tank/example_2
432		option foo bar
433	}
434}
435
436target naa.50015178f369f092 {
437	port isp0
438	port isp1
439	lun 0 example_1
440}
441.Ed
442.Sh SEE ALSO
443.Xr ctl 4 ,
444.Xr ctladm 8 ,
445.Xr ctld 8 ,
446.Xr zfs 8
447.Sh AUTHORS
448The
449.Nm
450configuration file functionality for
451.Xr ctld 8
452was developed by
453.An Edward Tomasz Napierala Aq Mt trasz@FreeBSD.org
454under sponsorship from the FreeBSD Foundation.
455