目次

XigmaNASで別サーバのSMB共有をマウントしFTPで公開する(7年ぶり2度目)

まえがき

7年前に作ったNAS4FreeなFTPサーバは、その後、自前のストレージを持つFTP用物理マシンへと移行し、真っ当なメンテをすることもなく長らく稼働していた。この度、ストレージ部分はそっくりそのまま、システム部分のみを仮想化する形で別のマシンに収容することになった。

その収容先はXigmaNASが動いてる物理PCなので、FTPシステムはVirtualBoxにぶち込み、FTPストレージはRDMでアタッチすれば余裕っしょ、と目論んでいたのだが、vboxuserの権限まわりならびに、XigmaNASは見つけたZFSプールを手あたり次第にマウントしてしまい仮想マシンにFTPストレージをアタッチできない問題を解決できず、早々に頓挫してしまった。

代替案として、FTPストレージはホストのXigmaNASでマウントしNFSでVMに公開すればいいんじゃね?と目論むも、XigmaNASはnfsclientを持っていないことが判明しこれまた頓挫。mount_nfsはあるのに、どうして…どうして……。

となれば残された道は7年前同様、SMB経由しかない。mount_smbfsは今なお含まれており、加えて当時はなかったsmbutilもいつの間にか含まれるようになったので、XigmaNASで作業が完結するようになったのも嬉しいところ。

環境

設定

Samba共有の自動パスワード入力&自動マウントを実現するには、/etc/nsmb.conf/etc/fstabへの設定追加が必要となる。ところが、embeddedインストールでは、原則「/」以下への変更はOS再起動で揮発してしまい具合がよろしくない。

したがって、XigmaNASのブートUSBメモリの空き領域を永続ストレージとして使い、そこに保存した設定用スクリプトを起動のたびに実行することで、要件を実現する。

nsmb.confの準備

接続先のSambaサーバ情報を/mnt/storage/nsmb.confに書く。

|h /mnt/storage/nsmb.conf
[default]
workgroup=WORKGROUP
 
[SERVERNAME]
addr=192.168.xxx.yyy
charsets=UTF-8:UTF-8
 
[SERVERNAME:USERNAME]
password=$$CRYPTEDPASSWORD

設定値の意味。

SERVERNAME 接続先サーバの名称。サーバが公開しているNetBIOS名とは無関係で、任意の名前を付けられるが全て大文字で書くこと。
USERNAME 接続先Sambaのユーザー名。全て大文字で必要がある。さもないと認証が通らない。
workgroup ワークグループ名を指定。
charsets 接続先サーバの文字コードと自身の文字コードを指定する。iconv -lで出てくる文字コードが有効。ケースセンシティブなので注意!
addr 接続先サーバのホスト名、またはIPアドレス
password USERNAMEに対応するパスワード。「smbutil crypt パスワード」で得られた難読化パスワードを指定する。

ハマりポイント

charsetsに存在しないエンコーディングを書くと、mountコマンドが何のエラーもはかないのにマウントできない現象が発生するゾ。大文字・小文字も関係あるので、charsets=utf-8:utf-8と書いてもダメなんだゾ。

ぼくはこれで2日間なやみました。

fstabの準備

マウント設定を準備する。/etc/fstabはXigmaNASの管理下のため、差分を準備し結合する方向で。よって、1行目は念のため改行代わりの空行にしておく。

|h /mnt/storage/fstab_samba
//USERNAME@SERVERNAME/shared_folder_name /mnt/shared_folder smbfs rw,-d=777,-f=777 0 0

Sambaサーバ側の設定

mount_smbfsはSMB v1プロトコルにしか対応していないため、対向のSambaのバージョンによってはNTLM認証を有効化する必要がある。

XigmaNASのSMB設定であれば、サービス>SMB>追加のパラメータに「ntlm auth = yes」を追加する。

テスト

マウントできるか確認する。

# cp /mnt/storage/nsmb.conf /etc/
# cat /mnt/storage/fstab_samba >> /etc/fstab
# mkdir /mnt/shared_folder
# mount /mnt/shared_folder
# mount
(省略)
//USERNAME@SERVERNAME/shared_folder_name on /mnt/shared_folder (smbfs)

マウントスクリプトの準備

手動でマウント出来ることが確認できたら、起動時に自動マウントするスクリプトを用意する。

/mnt/storage/mount_smb.sh
#!/bin/sh
 
cp /mnt/storage/nsmb.conf /etc/
cat /mnt/storage/fstab_samba >> /etc/fstab
 
mkdir /mnt/shared_folder
mount /mnt/shared_folder

作成したスクリプトを、XigmaNASのシステム>高度な設定>コマンドスクリプトで起動時に実行するよう設定する。

名前 適当につける
コマンド /mnt/storage/mount_smb.sh
タイプ 初期化後

再起動して設定したSamba共有がマウントされていれば成功。

番外:ProFTPDとヤマハルータの設定

XigmaNASのFTPサービスはProFTPDだが、どうにもヤマハのルータとの組み合わせと相性が良くないようで。FileZillaで接続すると、MLSDコマンドでファイル一覧を取得するところでタイムアウトする現象に見舞われる。

正しい解決策かどうかは分からないが、以下の設定をすると上手く動くようになる。

参考サイト