xref: /freebsd/usr.sbin/ctld/ctl.conf.5 (revision 5b9c547c)
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 March 4, 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
327Assign specified CTL port (such as "isp0") to the target.
328On startup ctld configures LUN mapping and enables all assigned ports.
329Each port can be assigned to only one target.
330.It Ic redirect Ar address
331IPv4 or IPv6 address to redirect initiators to.
332When configured, all initiators attempting to connect to this target
333will get redirected using "Target moved temporarily" login response.
334Redirection happens after successful authentication.
335.It Ic lun Ar number Ar name
336Export previously defined
337.Sy lun
338by the parent target.
339.It Ic lun Ar number
340Create a
341.Sy lun
342configuration context, defining a LUN exported by the parent target.
343.El
344.Ss lun Context
345.Bl -tag -width indent
346.It Ic backend Ar block No | Ar ramdisk
347The CTL backend to use for a given LUN.
348Valid choices are
349.Qq Ar block
350and
351.Qq Ar ramdisk ;
352block is used for LUNs backed
353by files or disk device nodes; ramdisk is a bitsink device, used mostly for
354testing.
355The default backend is block.
356.It Ic blocksize Ar size
357The blocksize visible to the initiator.
358The default blocksize is 512.
359.It Ic device-id Ar string
360The SCSI Device Identification string presented to the initiator.
361.It Ic option Ar name Ar value
362The CTL-specific options passed to the kernel.
363All CTL-specific options are documented in the
364.Sx OPTIONS
365section of
366.Xr ctladm 8 .
367.It Ic path Ar path
368The path to the file or device node used to back the LUN.
369.It Ic serial Ar string
370The SCSI serial number presented to the initiator.
371.It Ic size Ar size
372The LUN size, in bytes.
373.El
374.Sh FILES
375.Bl -tag -width ".Pa /etc/ctl.conf" -compact
376.It Pa /etc/ctl.conf
377The default location of the
378.Xr ctld 8
379configuration file.
380.El
381.Sh EXAMPLES
382.Bd -literal
383auth-group ag0 {
384	chap-mutual "user" "secret" "mutualuser" "mutualsecret"
385	chap-mutual "user2" "secret2" "mutualuser" "mutualsecret"
386	initiator-portal 192.168.1.1/16
387}
388
389auth-group ag1 {
390	auth-type none
391	initiator-name "iqn.2012-06.com.example:initiatorhost1"
392	initiator-name "iqn.2012-06.com.example:initiatorhost2"
393	initiator-portal 192.168.1.1/24
394	initiator-portal [2001:db8::de:ef]
395}
396
397portal-group pg0 {
398	discovery-auth-group no-authentication
399	listen 0.0.0.0:3260
400	listen [::]:3260
401	listen [fe80::be:ef]:3261
402}
403
404target iqn.2012-06.com.example:target0 {
405	alias "Example target"
406	auth-group no-authentication
407	lun 0 {
408		path /dev/zvol/tank/example_0
409		blocksize 4096
410		size 4G
411	}
412}
413
414lun example_1 {
415	path /dev/zvol/tank/example_1
416	option naa 0x50015178f369f093
417}
418
419target iqn.2012-06.com.example:target1 {
420	auth-group ag0
421	portal-group pg0
422	lun 0 example_1
423	lun 1 {
424		path /dev/zvol/tank/example_2
425		option foo bar
426	}
427}
428
429target naa.50015178f369f092 {
430	port isp0
431	port isp1
432	lun 0 example_1
433}
434.Ed
435.Sh SEE ALSO
436.Xr ctl 4 ,
437.Xr ctladm 8 ,
438.Xr ctld 8
439.Sh AUTHORS
440The
441.Nm
442configuration file functionality for
443.Xr ctld 8
444was developed by
445.An Edward Tomasz Napierala Aq Mt trasz@FreeBSD.org
446under sponsorship from the FreeBSD Foundation.
447