先日のエントリーでは、複数の I/F (IP アドレス) を持つ QUADStor が利用するターゲット I/F を iptables で擬似的に制御していました。…その後、QUADStor が内部で利用している iSCSI Enterprise Target のマニュアルとコマンドのオプション ヘルプに Listen する I/F を指定する方法の記述があったので、ズボラな回避策ではなく基本に立ち返った設定方法を残します。

ietd のヘルプを見ると Listen する IP アドレスを指定出来ることがわかります。

[root@stg-l-01b ~]# /quadstor/sbin/ietd --help
Usage: iscsid [OPTION]
iSCSI target daemon.
  -c, --config=[path]     Execute in the config file.
  -f, --foreground        make the program run in the foreground
  -d, --debug debuglevel  print debugging information
  -u, --uid=uid           run as uid, default is current user
  -g, --gid=gid           run as gid, default is current user group
  -a, --address=address   listen on specified local address instead of all
  -p, --port=port         listen on specified port instead of 3260
  -h, --help              display this help and exit
[root@stg-l-01b ~]#

コンフィグファイルで Listen する IP アドレスやポートを指定する方法は、残念ながら iET にはないようなので、QUADStor サービスを起動するスクリプト (/etc/init.d/quadstor) を直接編集します。こちら を見る限り Debian では /etc/defaults/iscsitarget に IETD_ARGS というパラメータが入ったようですが、今後に期待したいところです。

if [ -f /quadstor/sbin/ietd ]; then
    /sbin/insmod /quadstor/lib/modules/$kvers/iscsit.ko > /dev/null 2>&1
    check_error "Failed to insert iscsi target module"
    $DAEMON_CMD /quadstor/sbin/ietd -a 192.168.220.201
fi

このサーバーでは、192.168.210.201 と 192.168.220.201 という 2 つの IP アドレスを持っていて、192.168.220.0/24 をストレージアクセス用のセグメントとしています。保存したら、QUADStor を再起動するか、OS を再起動させます。 編集する前は以下のようなポートの開き具合だったのが、

[root@stg-l-01b ~]# netstat -an | grep 3260
tcp        0      0 0.0.0.0:3260                0.0.0.0:*                   LISTEN
tcp        0      0 :::3260                     :::*                        LISTEN
[root@stg-l-01b ~]#</pre>

次のように、狙い撃った I/F (IP アドレス) でサービスを提供するようになります。

[root@stg-l-01b ~]# netstat -an | grep 3260
tcp        0      0 192.168.220.201:3260        0.0.0.0:*                   LISTEN
[root@stg-l-01b ~]#

自宅環境、閉鎖ネットワーク、かつ、Nested 環境での稼働なので、iptables を停止し 少しでも負荷を下げることに努めます。