Title: OpenBSD and iSCSI part1: the target (server)
       Author: Solène
       Date: 21 February 2019
       Tags: unix openbsd iscsi
       Description: 
       
       This is the first article of a series about iSCSI.
       
       iSCSI is a protocol designed for sharing a block device across
       network as if it was a local disk. This doesn't permit using that
       disk from multiples places at once though, except if you use a
       specific filesystem like GFS2 or OCFS2 (Linux only). In this article,
       we will learn how to create an iSCSI target, which is the "server"
       part of iSCSI, the target is the system holding the disk and making
       it available to others on the network.
       
       OpenBSD does not have an target server in base, we will have to use
       net/netbsd-iscsi-target for this. The setup is really simple.
       
       First, we obviously need to install the package and we will activate
       the daemon
       so it start automatically at boot, but don't start it yet:
       
           # pkg_add netbsd-iscsi-target
           # rcctl enable iscsi_target
       
       The configurations files are in **/etc/iscsi/** folder, it contains
       files
       **auths** and **targets**. The default configuration files are the
       same. By
       looking at the source code, it seems that **auths** is used there but
       it seems
       to have no use at all. We will just overwrite it everytime we modify
       **targets** to keep them in sync.
       
       Default **/etc/iscsi/targets** (with comments stripped):
       
           extent0         /tmp/iscsi-target0      0       100MB
           target0         rw      extent0         10.4.0.0/16
       
       The first line defines the file holding our disk in the second field,
       and the
       last field defines the size of it. When iscsi-target will be started,
       it will
       create files as required with the size defined here.
       
       The second line defines permissions, in that case, the extent0 disk can
       be used
       read/write by the net 10.4.0.0/16. For this example, I will only change
       the
       netmask to suit my network, **then I copy targets over auths**.
       
       Let's start the daemon:
       
           # rcctl start iscsi_target
           # rcctl check iscsi_target
           iscsi_target(ok)
       
       If you want to restrict ports using PF, you only have to allows the TCP
       port
       3260 from the network that will connect to the target. The according
       line would
       looks like this:
       
           pass in proto tcp to port 3260
       
       Done!