2017年10月27日金曜日

VPN 接続(Tunnelblick)と NFS マウントの自動化

先の記事で sudo がパスワード入力なしで実行できるようになったので、それを前提として VPN 接続に連動して NFS のマウント/アンマウントを自動化する方法を確立した。

(Tunnelblick のベースである)OpenVPN 自体の仕様で .ovpn ファイルの設定で up / down 用のスクリプトを指定できるようになっている。この仕様に加えて、Tunnelblick では、connected.sh と pre-disconnect.sh という名前のスクリプトをそれぞれ up / down 用スクリプトとして割り当てることによって「接続後」「切断前」に実行するスクリプトとし扱ってくれるようだ。

なので、connected.sh と pre-disconnect.sh を用意し、それぞれにおいて、NFS をマウント/切断する処理を記述しておいた。

connected.sh

#!/bin/sh
sudo mkdir /Volumes/NFS
sudo mount_nfs -P 192.168.0.1:/share /Volumes/NFS

pre-disconnect.sh

#!/bin/sh
sudo umount /Volumes/NFS

※ umount 時に /Volumes/NFS は自動的に rmdir されるので、rmdir は明示的に行う必要はない。

以上の 2 種のスクリプトを用意した上で、.ovpn に

.ovpn

up ~/OpenVPN/connected.sh
down ~/OpenVPN/pre-disconnect.sh

といったような形式の設定を追加する。

最後に、Tunnelblick で .ovpn をインポートする。これだけである。

※ .ovpn や .sh を修正した場合、都度 Tunnelblick にインポートし直す必要がある点に注意する。Tunnelblick はインポート時に自前で .ovpn や .sh をコピーしてそれを直接使うので、インポート元の .ovpn や .sh を修正しただけでは Tunnelblick の挙動に反映されない。


Mac から NFS を使ってみた結果……

iCloud ドライブや Google ドライブのような感覚で使いたいと思って、VPN を構築し、VPN 経由で NAS に接続して NFS を使う──というのが元々の目的だった。これでできるようになったわけだが、実際に Eclipse で NAS にある作業ディレクトリーを使ってみたところ……重い。

というわけで、NAS を使ったクラウドドライブ化作戦は諦め、素直にローカルの作業ディレクトリーを使って、適宜 NAS にバックアップする体制にすることにした。つまり、rsync を使って、ローカル(Mac)のディレクトリとマウントした NFS の間でプットする。どの道、iCloud にせよ Google ドライブにせよ、クラウドストレージは実際そのような形式をとっているわけであって、常に NAS のストレージ上のファイル実体を直接読み書きしているわけではない(そうでないと、クラウドストレージはオフライン時に利用できない)。もちろん、クラウドストレージの場合はプットだけではなくプルも同程度行われることを前提としており、さらに他人との共有なども考えられている。しかし、僕が考えていた使い方に関しては、基本的にプッシュの一方通行だから、rsync だけ一発で行えるスクリプトなり、Automator アプリなりを用意しておけば済み、それが iCloud や Google ドライブで有料で大容量を使った場合と何ら差異はないという話である。

0 件のコメント:

コメントを投稿