mount.nfs: access denied by server while mounting error エラーが発生してマウントに失敗する
Environment
- Red Hat Enterprise Linux (RHEL) 6、7
- NFS
Issue
-
ログにエラーが表示される。
<hostname> mount: mount.nfs: access denied by server while mounting *.*.*.*:/home/share
Resolution
-
以下のように、NFS サーバーの
/etc/exports
に安全でないオプションを含めます。# cat /etc/exports /home/export *(rw,sync,no_root_squash,insecure)
-
共有を再エクスポートします。
# exportfs -rav
-
NFS クライアントに NFS 共有をマウントしてみてください。
- 問題のクライアントに共有がエクスポートされていることを確認します。RHEL NFS サーバーから nfs 共有をマウントすると "mount.nfs: access denied by server while mounting" エラーが発生します。
注: NFS サーバーで設定を変更する前に、すべてのクライアントから共有をアンマウントする必要があります。そうしないと、共有が古くなります。
Root Cause
-
予約済みポートは、特権サービス用の
0
~1024
の TCP/UDP ポートであり、既知のポートとして指定されています。 -
以下のエラーがログに記録されました。これは、NFS サーバーに安全なポートが必要であることを意味します。
<hostname> rpc.mountd[8111]: refused mount request from *.*.*.* for /home/export (/home/export): illegal port 21645
Diagnostic Steps
- NFS サーバーは ping 可能であり、ポート
2049
および111
にtelnet
接続できます。 showmount -e <nfs server ip>
コマンドがハングします。showmount -e <nfs_server_ip>
は、使用可能な共有がない状態で戻ってきます (空白)
# showmount -e 1 <nfs-server-ip>
Export list for <nfs-server-ip>
- そのような共有で表示される必要があります。
# showmount -e <nfs-server-ip>
Export list for <nfs-server-ip>
/home 192.168.122.0/24
/export-1 192.168.122.0/24
/export2 192.168.122.0/24
rpcinfo -p <nfs server ip>
は、登録されているすべての RPC プログラムの一覧を表示します。必要なサービスに使用されているバージョン (v3、v4 など) があることを確認します
# rpcinfo -p <nfs-server-ip>
program vers proto port service
100000 2 udp 111 portmapper
100000 2 tcp 111 portmapper
100000 3 udp 111 portmapper
100000 3 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 4 tcp 111 portmapper
100003 3 udp 2049 nfs
100003 3 tcp 2049 nfs
100005 1 udp 635 mountd
100005 2 udp 635 mountd
100005 3 udp 635 mountd
100005 1 tcp 635 mountd
100005 2 tcp 635 mountd
100005 3 tcp 635 mountd
100021 4 udp 4045 nlockmgr
100021 4 tcp 4045 nlockmgr
100024 1 udp 4046 status
100024 1 tcp 4046 status
- NFS バージョン 3 でマウントしようとしましたが、それでも "access denied" エラーで失敗しました。
- NFS 共有の
/var/lib/nfs/etab
で、共有がエクスポートされているかどうかを確認します。 -
以下が Tcpdump の解析です。
# tshark -tad -n -r clien.pcap -Y 'frame.number == 500' -O rpc | sed '/^Re/,$ !d' Remote Procedure Call, Type:Reply XID:0x3f510e1b Fragment header: Last fragment, 20 bytes 1... .... .... .... .... .... .... .... = Last Fragment: Yes .000 0000 0000 0000 0000 0000 0001 0100 = Fragment Length: 20 XID: 0x3f510e1b (1062276635) Message Type: Reply (1) [Program: NFS (100003)] [Program Version: 4] [Procedure: COMPOUND (1)] Reply State: denied (1) [This is a reply to a request in frame 498] [Time from request: 0.000611000 seconds] Reject State: AUTH_ERROR (1) <===== Error Auth State: bad credential (seal broken) (1)
nfs-server
は NFS クライアントを認証できません。
-
以下に、さらなる
tcpdump
解析を示します。# tshark -tad -nr client.pcap -Y nfs.status!=0 20 2018-12-18 13:46:46.377409 *.*.*.* �� *.*.*.* NFS 144 V4 Reply (Call In 12) PUTROOTFH | GETATTR Status: NFS4ERR_PERM
NFS4ERR_PERM
は、リクエスターが所有者ではないことを示します。 呼び出し元が特権ユーザー (root) でも操作のターゲットの所有者でもないため、操作は許可されませんでした。
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.
Comments