次のようなフォルダ権限を持つNFSサーバーがあります。同じネットワーク内でこのサーバーに接続する必要のあるクライアントが50あります。サーバーからこのサーバーにアクセスしているクライアントを検索するコマンドを教えてください。
NFSサーバー構成ファイルは次のようになります。
[root@server ~]# cat /etc/exports
/home/guests *(rw,sync)
/india *(rw,sync)
以下は共有フォルダのリストです
[root@server ~]# showmount -e
Export list for server.sanith.com:
/india *
/home/guests *
テスト目的で、1つのクライアントをサーバーに接続しました。以下の出力は、「client2」マシンからのものです。
[root@client2 ~]# showmount -e 192.168.1.10
Export list for 192.168.1.10:
/india *
/home/guests *
[root@client2 ~]# mount -t nfs 192.168.1.10:/india /test
[root@client2 ~]# mount
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
/dev/sda3 on /home type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
gvfs-Fuse-daemon on /root/.gvfs type Fuse.gvfs-Fuse-daemon (rw,nosuid,nodev)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
192.168.1.10:/india on /test type nfs (rw,vers=4,addr=192.168.1.10,clientaddr=192.168.1.12)
showmount -a
とshowmount -d
を使用してみましたが、接続されているクライアントマシンのリストにないものがないかわかりません。
[root@server ~]# showmount -a
All mount points on server.sanith.com:
[root@server ~]# man showmount
[root@server ~]# showmount -d
Directories on server.sanith.com:
[root@server ~]# netstat -an | grep 192.168.1.10:2048
[root@server ~]# netstat -an | grep 192.168.1.10:2049
[root@server ~]# cat /var/lib/nfs/rmtab
[root@server ~]#
注:このテスト中、サーバーのファイアウォールは一時的に無効になります。お知らせ下さい。
NFSサーバーで次のコマンドを実行すると、接続されているNFSクライアントを見つけることができます。
netstat | grep :nfs
netstat -a | grep nfs
これは私にとってUbuntu GNOME 16.04で機能しました。
netstat
はss
に置き換えられるため、常に使用できるとは限らないため、次のように使用することもできます。
ss -a|grep nfs
Linuxカーネル5.3以降、/proc/fs/nfsd/clients
という特別なディレクトリを使用できます。
カーネルのバージョンはuname -r
コマンドで確認できます