macOS
Synology NAS
Tailscale
#NFS
#VPN
#autofs
#ホームサーバー
#リモートマウント
🗺️ はじまり — 3つの願い
ノートPCを持ってカフェに座ったとき、自宅のNASがすぐそばにあるかのようにファイルにアクセスできたら…と思ったことはありませんか?
私もそうでした。正確に3つの願いがありました。
1つ目は、どこからでも自分のファイルにアクセスしたいということ。カフェでも、オフィスでも、海外でも、ローカルフォルダを開くようにNASのファイルを使いたかったのです。2つ目は、SMBではなくNFSを使いたいということ。macOSやLinux系では、NFSは小さなファイル処理で10〜30%速く、何よりUnixパーミッションをネイティブに扱えます。3つ目は、設定がいつも同じであってほしいということ。ネットワークが変わっても、再起動しても、macOSがアップデートされても、何も触らずにフォルダにアクセスするだけで済む環境が欲しかったのです。
問題はNFSの根本的な特性にありました。
🔑 NFSの壁 — IPベース認証
NFSは「誰に共有するか」をIPアドレスで決定します。NASの/etc/exportsに許可するクライアントIPを登録し、そのIPからのみアクセスできる仕組みです。
しかし、ノートPCは移動するデバイスです。カフェではカフェのIP、オフィスではオフィスのIP、テザリングすればまた別のIP。接続するたびにNASの設定を変更するのは現実的ではありません。
「MACアドレスで認証すればいいのでは?」と思うかもしれませんが、MACアドレスはOSI第2層(L2)で、NFSは第7層(L7)で動作します。異なる世界の言語なので、NFSがMACアドレスを認識する方法がないのです。
💡 解決策 — Tailscaleが固定IPを作ってくれる
この問題をスッキリ解決してくれるのがTailscaleです。TailscaleはWireGuardベースのメッシュVPNで、各デバイスに100.x.x.x帯の永久固定IPを割り当てるのが核心です。
MacBookがカフェにいても海外にいても、TailscaleのIPは常に同じ。NASの/etc/exportsにこの固定IPを1つ登録しておけば、どこからでもNFS接続が可能になります。
例えばこんな構成になります。
| デバイス | Tailscale IP | NASアクセス方法 |
|---|---|---|
| MacBook Pro | 100.64.0.2 |
NFS via Tailscale |
| Mac mini | 100.64.0.3 |
NFS via ローカルネットワーク |
| Synology NAS | 100.64.0.10 |
— |
Mac miniはNASと同じネットワークにあるため、ローカルIP(192.168.1.10)で直接接続します。Tailscaleを経由する必要がないので、一段階速くなります。
⚙️ NAS設定 — SynologyでTailscaleを動かす
Synology NASにTailscaleを導入するのは、思ったより厄介でした。DSM 7ではパッケージが非rootで実行されますが、Tailscaleのカーネルモード(TUNインターフェース)にはroot権限が必要です。
userspaceモードで動かすと、NFSがTailscale IPを認識できずPermission deniedが出ます。そこで、起動時にTUNモジュールを自動ロードし、tailscaledをrootで直接起動するrc.dスクリプトを作成しました。
#!/bin/bash
# /usr/local/etc/rc.d/S01-tailscale-tun.sh
# TUNカーネルモジュールロード + root tailscaled実行
# TUNモジュールがなければロード
if ! lsmod | grep -q "^tun "; then
modprobe tun 2>/dev/null || insmod /lib/modules/tun.ko
fi
# /dev/net/tunがなければ作成
if [ ! -c /dev/net/tun ]; then
mkdir -p /dev/net
mknod /dev/net/tun c 10 200
chmod 0666 /dev/net/tun
fi
# DSMパッケージ停止 → rootで直接実行
/usr/syno/bin/synopkg stop Tailscale 2>/dev/null
killall tailscaled 2>/dev/null
sleep 2
TAILSCALED=/volume2/@appstore/Tailscale/bin/tailscaled
STATE_FILE=/volume2/@appdata/Tailscale/tailscaled.state
$TAILSCALED --state=$STATE_FILE --tun=tailscale0 &
🛡️ DSMアップデート — exportsの自動復旧
Synology NASはDSMアップデート時に/etc/exportsを初期化することがあります。追加したTailscale IPのエントリが消えてしまうのです。そこでrc.dスクリプトに自動復旧ロジックを組み込みました。
repair_nfs_exports() {
local changed=0
MACBOOK_TS_IP="100.64.0.2" # MacBook Tailscale固定IP
NFS_SHARES=("/volume1/Data" "/volume2/Work" "/volume2/Software")
for share in "${NFS_SHARES[@]}"; do
if ! grep -q "${share}.*${MACBOOK_TS_IP}" /etc/exports; then
echo -e "${share}\t${MACBOOK_TS_IP}(rw,async,all_squash,sec=sys)" >> /etc/exports
changed=1
fi
done
[ $changed -eq 1 ] && exportfs -ra
}
毎回の起動時に/etc/exportsをチェックし、Tailscale IPのエントリが欠けていれば自動的に再追加します。このロジックのおかげで、DSMアップデート後もNFS接続が途切れません。
📂 macOS autofs — アクセスするだけで自動マウント
最後のピースはmacOS側です。毎回sudo mountを打ちたくないですよね?macOSのautofsを使えば、フォルダにアクセスした瞬間に自動マウントされ、使わなければ自動的にアンマウントされます。
MacBookの/etc/auto_nfsはこんな感じです。
# /etc/auto_nfs — MacBook(Tailscale経由)
NAS_Work -fstype=nfs,resvport 100.64.0.10:/volume2/Work
NAS_Data -fstype=nfs,resvport 100.64.0.10:/volume1/Data
NAS_Software -fstype=nfs,resvport 100.64.0.10:/volume2/Software
/etc/auto_masterに1行追加するだけです。
/Volumes auto_nfs
sudo automount -vcで適用すれば、ls /Volumes/NAS_Workと打つだけで自動マウントされます。Mac miniはローカルIP(192.168.1.10)を使うので、Tailscaleなしでも動作し、同じネットワークなので速度も速くなります。
-o resvportオプションが必須です。これがないとSynology NASが接続を拒否します。🪟 Windowsはどうする?
Windows PCはオフィスに固定されているため、TailscaleなしでSMBネットワークドライブで接続します。net use X: \\192.168.1.10\Data /persistent:yesの一行で完了です。移動しないデバイスにVPNをインストールする理由はなく、企業ネットワークポリシーと競合する可能性もありますから。
| 項目 | macOS(NFS) | Windows(SMB) |
|---|---|---|
| プロトコル | NFS + autofs自動マウント | SMBネットワークドライブ |
| 認証方式 | IPベース(Tailscale固定IP) | ユーザー名/パスワード |
| 外部アクセス | Tailscale経由(どこからでも) | 不可(オフィス専用) |
| 小ファイル性能 | NFSが10〜30%高速 | 標準 |
🏁 まとめ — 地図の上の3つの道
完成した構成はこうです。MacBookはTailscaleトンネルを通してどこからでもNFSで、Mac miniはローカルネットワークでNFSで、Windows PCはSMBで。3台すべてがNASをローカルフォルダのように使えるようになりました。
最初の3つの願いを振り返ると — どこからでもアクセスはTailscaleが、最高性能のNFSはautofsが、一貫した設定維持はrc.d自動復旧スクリプトがそれぞれ解決してくれました。一度セットアップすれば、その後は何も気にする必要のない「透明なインフラ」が完成したのです。
• NFS + Tailscale = モバイルデバイスでも固定IPでNFS認証を解決
• autofs = アクセスするだけで自動マウント、手動作業ゼロ
• rc.d自動復旧 = DSMアップデートがexportsを消しても起動時に自動復元
• Mac mini = ローカルIPで直接NFS(Tailscale不要、より高速)
• Windows = SMBで十分(固定位置、VPN不要)