NFSサーバー(RHEL)とクライアント(Debian)の2台のマシンがあります。サーバーにはNFSが設定されており、特定のディレクトリをエクスポートします。
server:~$ Sudo /usr/sbin/rpcinfo -p localhost
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 910 status
100024 1 tcp 913 status
100021 1 udp 53391 nlockmgr
100021 3 udp 53391 nlockmgr
100021 4 udp 53391 nlockmgr
100021 1 tcp 32774 nlockmgr
100021 3 tcp 32774 nlockmgr
100021 4 tcp 32774 nlockmgr
100007 2 udp 830 ypbind
100007 1 udp 830 ypbind
100007 2 tcp 833 ypbind
100007 1 tcp 833 ypbind
100011 1 udp 999 rquotad
100011 2 udp 999 rquotad
100011 1 tcp 1002 rquotad
100011 2 tcp 1002 rquotad
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100005 1 udp 1013 mountd
100005 1 tcp 1016 mountd
100005 2 udp 1013 mountd
100005 2 tcp 1016 mountd
100005 3 udp 1013 mountd
100005 3 tcp 1016 mountd
server$ cat /etc/exports
/dir *.my.domain.com(ro)
client$ grep dir /etc/fstab
server.my.domain.com:/dir /dir nfs tcp,soft,bg,noauto,ro 0 0
すべて順調に見えますが、マウントしようとすると、次のように表示されます。
client$ Sudo mount /dir
mount.nfs: access denied by server while mounting server.my.domain.com:/dir
そして、私が見るサーバー上で:
server$ tail /var/log/messages
Mar 15 13:46:23 server mountd[413]: authenticated mount request from client.my.domain.com:723 for /dir (/dir)
ここで何が欠けていますか?これをどのようにデバッグする必要がありますか?
/etc/hosts.allowと/etc/hosts.denyが正しくない場合、これを見てきました。これらのファイルでポートマップを含む行を確認し、コメントアウトするか(ファイアウォールの背後にいない場合は安全ではありません)、クライアント/サーバーの行を特定のサブネットに設定します。
したがって、たとえば、/ etc/hosts.allow:
portmap: 192.168.0.0/16
...そして/etc/hosts.denyにあるものをコメントアウトして、hosts.allowのみをアクティブにします。 NFSは、tcpwrappersとこれらのファイルを使用して、/ etc/exportsにあるものとともにアクセスを制御します。
rpcinfo
は、NFSがUDP経由で接続しようとしていることを示します。 NFSv4はUDPで機能しなくなったようですが、TCPが使用されることを期待しています。
たとえば、LinuxカーネルはNFSv4でもUDPを介してrootfsをマウントしようとしており、nfsroot
の末尾に特別な引数を追加する必要がありました。例:nfsroot=192.79.143.131:/diskless/client01,tcp
私は同じ問題に直面しました、私のサーバーはubuntuマシンであり、私のクライアントはmacbookairです。解決策は過去にサーバーマシンを再起動することでしたが、私はそれをメディアセンターとして使用しているので、それは必ずしも楽しいとは限りません。だから、私がそれを修正するためにしたことは:
サーバーで、/ etc/exportsを編集します
pico /etc/exports
それから私はそれを洗い流します
exportfs
問題のあるクライアントの特定のIPを使用して新しい行を追加し(私の通常の共有はネットワーク全体です)、クライアントで共有をアンマウントし、再度マウントすると、機能します。
PS:しかし、通常のようにFinderの左側にショートカットとして表示されなかったので、マウントポイントで見つける必要がありました。
それはすべてのマシンから壊れていますか、それとも1つだけですか? nfsd疑似ファイルシステムはサーバーの/proc/fs/nfsd
にマウントされていますか?
残念ながら、サーバーを再起動すると問題が解決したので、まだわかりませんなぜ発生していたのですが、もう発生していません。
(決して遅くなるよりはまし)
Netbsd pxebootブートローダーを使用してカーネルをロードしようとすると、同じ非常に具体的なシナリオが発生しました。実際にはNFSv2について話します。 8年前、これも根本的な原因である可能性があります。Debianクライアントとrhelサーバーが同じ言語を話していませんでした。 -V2
の引数としてrpc.mountd
を追加することで、NFSv2を有効にすることができます。最終的には、-N3,4
を使用してv3およびv4を無効にすることもできます。
MacOSクライアントを搭載したDebian10.2サーバーから同じ問題に直面しました。私の解決策:
NFSサーバーで、insecure
オプションを/etc/exports
の共有に追加し、exportfs -r
を再実行します
ソースはこちら 。