(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Linux/RHEL】NFSマウント後に/etc/exportを編集すると起きる事象

スポンサーリンク

はじめに

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のサービスの落とし上げが必要となります。

以上、ご参考になれば幸いです。