はじめに
NFSを利用するためにはサーバ側にて/etc/exportにクライアント側のIPを記載し、クライアント側は指定されたディレクトリをマウントします。
その際、サーバ側にてやはりクライアント側からのアクセスを遮断したい場合は/etc/exportを書き換えて対応します。
本記事ではその流れを実際に確認したログを残しておきます。
環境情報
- Red Hat Enterprise Linux Server 7.5
- nfs v4
- Server IP : 10.100.200.1
- Client IP : 10.100.200.2
NFSマウントの正常な通信
サーバ側で以下のようにサービスが起動している状態で
# systemctl status nfs-server ● nfs-server.service - NFS server and services Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled) Active: active (exited) since xx JST; 5s ago Process: 2600 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS) Process: 2594 ExecStartPre=/bin/sh -c /bin/kill -HUP `cat /run/gssproxy.pid` (code=exited, status=0/SUCCESS) Process: 2591 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS) Main PID: 2600 (code=exited, status=0/SUCCESS) Tasks: 0 Memory: 0B CGroup: /system.slice/nfs-server.service ..
exportファイルに以下のようにクライアント側のIPやホスト名を記載します。
# cat /etc/exports /tmp/hoge 10.100.200.2
同ファイルを編集した状態でサービスの落とし上げをすれば
# systemctl stop nfs-server # systemctl start nfs-server
クライアント側でサーバ側のIPを指定した状態で
# cat /etc/fstab /dev/mapper/rhel-root / xfs defaults 0 0 ... 10.100.200.1:/tmp/hoge /tmp/hoge nfs defaults 0 0
mountコマンドを打てば正常にnfsマウントされます。
# mount -v 10.100.200.1:/tmp/hoge /tmp/hoge mount.nfs: timeout set for xx mount.nfs: trying text-based options 'vers=4.1,addr=10.100.200.1,clientaddr=10.100.200.2'
dfにて該当ディレクトリの情報が確認できます。
# df /tmp/hoge/ Filesystem 1K-blocks Used Available Use% Mounted on 10.100.200.1:/tmp/hoge 83845120 3760128 80084992 5%
サーバ側でクライアントのIPを変更した場合
以下のIPがクライアントのIPとは別のものになってしまったと仮定します。
# cat /etc/exports /tmp/hoge 10.100.200.3
同ファイルが変更されただけであればNFSマウントは利用できたままで、新規に変更したファイルもクライアント側に反映されます。
一方でサーバ側にてNFSのサービスを再起動すると
# systemctl stop nfs-server # systemctl start nfs-server
クライアント側ではファイルシステムは存在しなくなります。
# df /tmp/hoge/ df: ‘/tmp/hoge/’: No such file or directoryFilesystem
ディレクトリは存在するも権限の表示が崩れて中身は読めません。
# ls -l /tmp ls: cannot access /tmp/hoge: Permission denied total 0 d????????? ? ? ? ? ? hoge
再度mountコマンドを押下するも以下のようにエラーとなります。
# mount -v 10.100.200.1:/tmp/hoge /tmp/hoge mount.nfs: timeout set for xx mount.nfs: trying text-based options 'vers=4.1,addr=10.100.200.1,clientaddr=10.100.200.2' mount.nfs: mount(2): Operation not permitted mount.nfs: trying text-based options 'addr=10.100.200.1' mount.nfs: prog 100003, trying vers=3, prot=6 mount.nfs: trying 10.100.200.1 prog 100003 vers 3 prot TCP port 2049 mount.nfs: prog 100005, trying vers=3, prot=17 mount.nfs: trying 10.100.200.1 prog 100005 vers 3 prot UDP port 20048 mount.nfs: mount(2): Permission denied mount.nfs: access denied by server while mounting 10.100.200.1:/tmp/hoge
終わりに
結論として、NFSマウントをクライアント側に利用させたくない場合は、exportsファイルを編集するだけでなくnfs-serverのサービスの落とし上げが必要となります。
以上、ご参考になれば幸いです。