🍓

Raspberry Pi B+ v1.2 を使った自宅用NAS構築手順(ブリッジモードルータ対応)

に公開

Raspberry Pi B+ v1.2 を使った自宅用NAS構築手順(ブリッジモードルータ対応)

📌 概要

組み込み系のデバイス開発に従事しており、ふと自宅にあるもので練習でもと思い立ち、2014年に購入して眠っていたRaspberry Pi B+ v1.2 を利用して、自宅ネットワーク内限定の簡易NAS(Network Attached Storage)を構築しました。その時の備忘録を公開します。特に、ルーターがブリッジモードでDHCP無効の環境における設定に対応しています。


🖥️ NAS構成

  • Raspberry Pi B+ v1.2

  • OS: Raspberry Pi OS Lite (32bit)

  • ストレージ: 外付けHDD(exFAT/セルフパワー)

  • ネットワーク構成:

    • ルーター:Aterm WX6000HP(ブリッジモード)
    • クライアント:Mac、iPhone等同一LAN内
  • 接続形態: 有線LAN(ルーターとRaspberry Piを直結)


🔧 構築ステップ

SDカードにOS書き込み

  • Raspberry Pi Imager v1.9.0 で Raspberry Pi OS Lite (32bit) をSDカードに書き込み。  
    まず最新のラズパイImagerを作業用PCにインストールしたが動かず。作業用PCはMacbookPro2014でOSはBig Sur 11.7.10だったので対応しているImagerをインストールし実行しました。
  • /Volumes/boot(場合によっては/Volumes/bootfs) パーティションに ssh という空ファイルを作成してSSH有効化

SSHでラズパイに接続

ssh pi@raspberrypi.local
# または、初回接続後に確認できたデフォルトIPで
ssh pi@192.168.2.3

最新にアップデート

sudo apt update && sudo apt full-upgrade -y

この辺のアップデートコマンドはひさみつこうぼうさんのブログ記事を参考にしました。上記コマンドでディストリビューションやfirmwareアップデートまでやってくれるのか不明ですが、必要であればリンク先のコマンドで実行してみてください。


外付けHDDの接続とマウント設定

共有ストレージとして使用するUSBメモリ16GBをexFATでフォーマットし、ラズパイの起動で自動的にマウントされるよう設定する。

sudo apt install exfat-fuse exfat-utils -y
lsblk #マウント対象の確認 /dev/sda1
sudo mkdir -p /mnt/usbshare
sudo mount -t exfat /dev/sda1 /mnt/usbshare

自動マウント設定:

sudo nano /etc/fstab
# 以下を追加(/dev/sda1は自分の値に置き換え)
/dev/sda1  /mnt/usbshare  exfat  defaults,nofail  0  0

SambaインストールとNAS構成

sudo apt install samba -y
sudo nano /etc/samba/smb.conf

設定追加:

[usbshare]
   comment = USB NAS Drive
   path = /mnt/usbshare
   browseable = yes
   writeable = yes
   public = yes
   guest ok = yes
sudo systemctl restart smbd

静的IPアドレスの設定(DHCPなしのネットワーク用)

/etc/systemd/network/ に以下を作成:

sudo nano /etc/systemd/network/eth0.network

内容:

[Match]
Name=eth0

[Network]
Address=192.168.100.50/24
Gateway=192.168.100.1
DNS=8.8.8.8

デフォルトではsystemd-networkinactiveだったので、下記コマンドを順番に実行して適用と再起動:

sudo systemctl enable systemd-networkd
sudo systemctl start systemd-networkd
sudo reboot

✅ 動作確認

ラズパイLANポートとブリッジモードの自宅ルータのLANポートを有線LANケーブルで接続して同一ネットワーク内のデバイスでアクセスしファイルの転送が可能なことを確認しました。

  • Mac から smb://192.168.100.50/usbshare にアクセス(Finder → ⌘K)
  • iPhone ファイルアプリから右上...ボタン→サーバに接続からゲスト接続し表示可能
  • PCのFinderからファイルの読み書きもドラッグ&ドロップでOK

🔚 まとめ

最近のMacbookはポートが省略され、外部メディアストレージへアクセスするには変換アダプタをかませる必要があり、PC買替えのタイミングで旧機の環境移行で悩まれる方もいらっしゃると思います。そんな時、変換アダプタなしでもネットワーク経由でUSBメモリやHDDストレージにアクセスできるような環境があれば良いなと、今回のような環境を構築してみました。
アクセス速度を気にしなければ、旧型Raspberry Piでも自宅ネットワーク専用のNASが構築できます。特に、DHCPが無効な環境でも systemd-networkd を使ったIP固定設定で対応可能できるので、用途として幅は広がるかなと思います。
今はルータに外付けストレージをNAS化できる機能がデフォルトでついていたりするようですが、DIYでも機能を外付けできたので欲しい機能はどんどん自分で作ってしまえば良いと思います。


追記

数ヶ月経って、動作確認しようと起動したがSSHログインからできなくなっていたため、今回新たに下記設定を追加した。

  • 初回構築時に使用したSDカードでブートできなかったため、同一SDカードに再度Raspberry Pi OS Lite (32bit)を書き込み、同じ機材でNAS再構築を実施。
  • raspberrypi.localにSSH接続した際、IPv6(fe80::xxxx)解決されkex_exchange_identificationエラーを発生する。原因はIPv4アドレスを取得できていないため。
    • Mac側の.ssh/config に以下を追加し、IPv4 優先に設定
      Host raspberrypi.local
      AddressFamily inet
      
    さらに、Macのインターネット共有がWi-Fi → Ethernetになっていることを確認し、ターミナルのifconfigコマンドからbridge100に192.168.2.1を持つことを確認
  • ネットワーク固定IP設定を/etc/dhcpcd.confに一本化し、systemd-networkdは使用しない設定に変更
    • /etc/dhcpcd.conf
      interface eth0
      static ip_address=192.168.100.10/24
      static routers=192.168.100.1
      static domain_name_servers=8.8.8.8
      
  • 再構築中、外付けHDDの接続とマウント設定の自動マウント設定/etc/fstabの記述ミスに気づかず保存してしまいラズパイの起動中ホールドする現象が発生した。
    調べるとLinux環境であればext4フォーマットされたSDカードへアクセスできるようだった。
    別機Windows11の仮想環境(VirtualBox)でKali Linuxを起動しSDカードをマウントすることで/etc/fstabの記述を修正し復旧した。
    この時参考にした記事はこちら

Discussion