|
4.NFS |
2007年2月20日 |
ネットワークファイルシステムNFSを使って他のコンピュータとのファイル共有を設定します。 |
そのためにネットワークファイル共有システム(NFS)を使うこととし、接続許可マシンの設定、ファイルアクセスの設定、起動設定などを行います。
接続許可マシンの設定
設定ファイル
/etc/hosts.allow
/etc/hosts.deny
に接続許可マシンを設定しますが基本的にすべてのマシンを不許可とし、許可したIPアドレスのマシンのみが繋がるように設定します。
まず /etc/hosts.deny に以下を記述します。
portmap: ALL
lockd: ALL
mountd: ALL
rquotad: ALL
statd: ALL
これで基本的にすべてのマシンが接続拒否され、以下の/etc/hosts.allow に記述されたマシンだけが接続許可されます。
/etc/hosts.allow に許可するマシンを記述します。
私の家のLANのアドレスは192.168.を頭に使っています。
portmap: 192.168.0.0/255.255.0.0
lockd: 192.168.0.0/255.255.0.0
mountd: 192.168.0.0/255.255.0.0
rquotad: 192.168.0.0/255.255.0.0
statd: 192.168.0.0/255.255.0.0
現在動いている他のマシンにはすでに同様の設定がしてあります。
許可するディレクトリの設定
設定ファイルは /etc/exports
たとえば /homeディレクトリを他のマシンに公開するには
/home 192.168.0.0/255.255.0.0(ro)
とします。
(ro)はread only すなわち読み出しのみ許可する設定です。
書込み可を設定したければ
/home 192.168.0.0/255.255.0.0(rw,sync)
とします。
rwは読み書き可能、syncは実際にファイルを書き込んでから書込み完了を通知する設定です。(少し遅くなりますがsyncを指定しておいた方が安全そうです。)
その他設定ファイルのある/etcやファイルの受け渡しをするためのディレクトリなどを作成して設定しておきます。
/etc 192.168.0.0/255.255.0.0(ro)
/home 192.168.0.0/255.255.0.0(ro)
/Data 192.168.0.0/255.255.0.0(rw,sync)
...
マウントポイントの設置
/(ルートディレクトリ)の中のmntというディレクトリの中にそれを作ります。
/mntをファイルブラウザで開き、「新規作成」でフォルダ(ディレクトリ)を作ります。
名前はわかれば何でもいいのですが、私はディレクトリ名.マシン名を使います。
こちらのマシン名をjiji、相手のマシン名をbabaとすると
/mnt/etc.baba
/mnt/home.baba
/mnt/Data.baba
という具合です。
相手のマシンにも同様に
/mnt/etc.jiji
/mnt/home.jiji
/mnt/Data.jiji
などが設置してあります。
だんだんjijibaba合体の時が近づいてまいりました。
マウント情報の設定
(相手のマシンのアドレスを192.168.1.2として)
192.168.1.2:/home /mnt/home.baba nfs noauto,owner 0 0
192.168.1.2:/Data /mnt/Data.baba nfs noauto,owner 0 0
とりあえずマウント情報だけ覚えこませておいて、必要なときにマウントするのが正解です。
/etc/fstabをsaveするとマウント情報が変更されたがどうするかとマウントポイントごとに聞いてきますので、とりあえず何もしないを選択します。(条件が整っていればマウントして表示してもかまわないでしょう。)
マウントのテスト
mount /mnt/home.baba
と打ち込みますと、babaホストの/homeディレクトリが/mnt/home.babaにマウントされます。
他のマウントポイントも同様にテストします。
ここまでは問題なくすんなりいきました。
NFSサービスの設定
NFSサービスを使う設定をします。
メニューのシステム−サービスの管理を開き、「フォルダの共有サービス(NFS)」にチェックを入れます。
ここで繋いでみると...繋がりません。どうやらファイヤウォールが邪魔をしているようです。
細かい調査はやめておいて/etc/sysconfig/iptablesをエディタで開き
-A RH-Firewall-1-INPUT -i lo -j ACCEPT という行の下に
-A RH-Firewall-1-INPUT -s 192.168.0.0/16 -j ACCEPT を書き加えます。
この意味はLAN内からのすべてのサービス要求を通すということですが、LANは我が家内だけで安全だし、最終的には他の各種のサービスやサーバーの設定の際もめんどうがないのでこうしておきます。但しこのマニュアルでのカスタマイズはGUIでファイアウォール設定をすると消えてしまいます(マニュアルでのカスタマイズは推奨しないと書いてある)。
ただ無線LANを使っている場合は無線LANのセキュリティーを充分確保しておく必要があります。(あとで調べたところNFSは動的にポートを割り当てるので、ファイアウォールを使いたければポートの固定というめんどうなことをしなければならないということらしい。)
コンピュータを再起動して相手のコンピュータでこちらのファイルシステムがマウントできることを確認します。(個々のサービスを再起動または起動してもよいが、私はいつも思い切りコンピュータを再起動します。)
これで相手のコンピュータからもこちらのファイルが見れて無事繋がりました。
マウント用スクリプトの作成
ファイル名はmount-NFS.shとでもして、内容は
#! /bin/sh
mount /mnt/etc.baba
mount /mnt/home.baba
....
といった具合です。
また併せてアンマウント用のスクリプトも作っておきました。
同様にumount-NFS.shをつくって
#! /bin/sh
umount /mnt/etc.baba
umount /mnt/home.baba
....
これでクリック一発、マウント/アンマウントが可能です。
(追記)NFS4でユーザとグループがうまく取得できない問題。
原因はわかって対処しましたが詳細については、
サーバー構築メモ その3/各サーバーの設定:ネットワークファイルシステム NFS に。