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