Tech Note Plus

PC から Azure まで幅広い伝道を目指してます

OpenWrt でファイル共有 (Samba) を試す!

この記事では OpenWrt のファイル共有に関する設定を記載しています。なお、実装ミドルウェアは Samba となります。

ファイル共有に求める要件

やりたいこと

もうお分かりだと思いますが実家のルーターを OpenWrt へ入れ替えたいわけです。となると現在実行している機能は移行の必要がでてくるのです。

OpenWrt は WindowsLinux とインストール方法に大きな違いがあって、「OS のインストール」という行為がなく、イメージを展開した記録媒体からそのまま起動して稼動します。しかも、1GB もいらないぐらいの容量 (既定で 100MB 少々)。

この性質を考慮すると、保全性の観点から USB メモリ起動が一番良いのです。こんな感じでアップデートや検証にハードウェアを使いまわせるからです。

  • 本番の設定が入った USB メモリを抜く
  • アップデートを含む検証用の USB メモリを差して検証する
  • 検証が終わったら本番の設定が入った USB メモリを差す

もちろん仮想というプラットフォームがあるので完全に論理的な検証であれば仮想でやった方が早いですが、物理的な検証の場合実機でやることに越したことはありません。

とすると、せっかく存在するミニ PC 上の高速なストレージ用帯域が無駄になってしまうわけなので、高速な内蔵ディスク (NVMe SSD) を差して NAS に回せばよいということになります。

OpenWrt におけるファイル共有の実装方法

OpenWrt では追加のモジュールを導入して設定をすることで、ファイル共有を構成できます。なお、ファイル共有は関係コンポーネントが多いため大分割愛した絵になっています。

ファイル共有の設定方法

ディスクマウント、Samba、管理画面(日本語化含む)
  1. [システム]-[ソフトウェア] フィルターblock-mount と入力し、インストール を押します。
    ※ 一度 OS を再起動してしまうとパッケージリストの取り直しが必要なので、その場合は「リストを更新..」を実施してください。
  2. 依存関係の確認が行われるので インストール を押します。
  3. パッケージが読み込まれるので、閉じる を押します。
  4. 1-3 を繰り返します。パッケージ名は luci-app-samba4 です。最近のアップデートなのか言語ファイルは本体のモジュールのインストール時に Suggest ってでて既定でチェック済みなので一緒にインストールしてくれるようになったようです。
  5. 再起動すると、画面上部に [システム]-[マウントポイント] と [サービス]-[Network Shares] の二つが出現します。
ディスクマウント

Linux であれば既定でディスク管理系のツールがインストールされているのですが OpenWrt は追加でモジュールを入れるまで利用できません。 導入は簡単なのですが、あえて導入は避ける方向で手順を構成しています。

  1. SSH で OpenWrt に接続し、以下を入力してディスク追加前の構成を覚えておきます。

    ls -l /dev/sd*

  2. ディスクの追加後に OS を再起動して再度同じコマンドを実行して、差分を控えます。(私の場合、/dev/sdb が追加した内蔵の SSD でした)

    ls -l /dev/sd*

  3. SSH で OpenWrt に接続し、以下を入力して追加ディスクをフォーマットし、マウント用のポイントを作成します。

    mkfs.ext4 /dev/sdb
    mkdir /file
  4. [システム]-[マウントポイント]-[マウントポイント] 追加 を押します。

  5. UUID から先ほどフォーマットしたディスクを選択し、マウントポイントに前項で作成したポイントを指定した上で、保存→保存&適用を押します。

  6. [システム]-[マウントポイント]-[マウント済みファイルシステム] 追加した設定が反映されていることを確認します。

Samba の設定
  1. [サービス]-[Network Shares]-[Shared Directories] 追加 を押します。

  2. [サービス]-[Network Shares]-[Shared Directories] 追加された行に対して以下の設定を行い、保存&適用 を押します。

    設定項目 設定値
    名前 共有名。\IP アドレス\ここの部分の文字列
    Path 前項で作成したマウント用のポイント
    Allowed users 個人利用であるものの任意文字列のユーザーでのアクセスを推奨
    Allow guests 個人利用であるもののチェックオフ推奨
    Create mask 0777。NAS からの exe 実行とか・・・

Samba 用ユーザーの作成
  1. SSH で OpenWrt に接続し、fileadmin:x:1001:1001:smb user:/dev/null:/bin/false を最終行に追加します。fileadmin は前項で設定した SMB アクセス許可ユーザーの文字列。

    vi /etc/passwd
  2. 以下を実行して、作成したユーザー用のパスワードを設定します。

    smbpasswd -a fileadmin
  3. 以下を実行して、ファイル共有のルートフォルダの所有者を変更します。

    chown -R fileadmin /file
動作確認と性能
  1. Windows 機からネットワークドライブの割り付けを実施し、動作を確認します。 \OpenWrt の IP アドレス\Samba で設定した「名前」

  2. 同じ仮想環境上にあるクライアント機からファイルをコピーしたところかなり高速な値がでました。少なくとも OpenWrt だから遅いということにはならないかなと。

その他

OS アップデート時の対応

以前にも記載したように、OpenWrt のアップデートは「再設定」と覚えておいた方がよいぐらいのものですので、再設定時のポイントについて記載します。 とはいっても、基本的には今までの流れをもう一度流すだけです。コマンドなどにしておけばあっという間に完了します。その上で。

  1. mkfs.ext4 /dev/sdb は行わない。当たり前ですよね・・・フォーマットしてしまったらデータがなくなってしまいます。
  2. chown -R fileadmin /file は行わない。既にデータがあるので所有権の書き換えなどは不要です。なお、Windows と違ってシステム ID などは存在せず、新規作成時と同じ情報で作成したユーザーであれば同一と扱われます。

本当にこれぐらいしか新規の時と違いがありません。

設定のための参考サイト

設定に当たっては、以下の情報を参考にしました。

openwrt.org openwrt.org

OpenWrt のファイル共有設定を終えて

こうして OpenWrt を使って Windows からのファイル共有が可能になりました。あと一つ。。。


Note
・ 当ブログは個人主催であり、ブログ中のすべての情報は個人的な観点となります。
・ 情報については正確な内容となるよう努めますが、完全性や正確性、有用性、安全性、最新性について一切保証できかねます。