Service IP:110.1.1.1
Client IP:123.1.1.1
Server
//更新系統及安裝相關package
$ sudo apt-get update
$ sudo apt-get install nfs-kernel-server
//建立提供的NFS資料夾
$ sudo mkdir /var/nfs
//修改資料夾擁有者
$ sudo chown nobody:nogroup /var/nfs
//修改開放可mount資料夾
$ sudo vi /etc/exports
//規則 [NFS server folder] [client ip or hostname]([權限等設定])
/home 110.1.1.1(rw,sync,no_root_squash,no_subtree_check)
/var/nfs 110.1.1.1(rw,sync,no_subtree_check)
//重新執行相關服務
$ sudo exportfs -a
$ sudo service nfs-kernel-server start
//檢查是否成功開放
$ sudo showmount -e localhost
NFS每次重新restart時都會導致port隨機產生,為了讓port可以固定,以下為設定方式。
$ vim /etc/default/nfs-common
STATDOPTS="--port 32765 --outgoing-port 32766"
$ vim /etc/default/nfs-kernel-server
RPCMOUNTDOPTS="-p 32767"
//網路上教學需要修改此檔案,但是本人操作後未修改仍然可以固定相關port
$ vim /etc/default/quota
RPCRQUOTADOPTS="-p 32769"
$ vim /etc/services
rpc.nfsd 2049/tcp # RPC nfsd
rpc.nfsd 2049/udp # RPC nfsd
rpc.nfs-cb 32764/tcp # RPC nfs callback
rpc.nfs-cb 32764/udp # RPC nfs callback
rpc.statd-bc 32765/tcp # RPC statd broadcast
rpc.statd-bc 32765/udp # RPC statd broadcast
rpc.statd 32766/tcp # RPC statd listen
rpc.statd 32766/udp # RPC statd listen
rpc.mountd 32767/tcp # RPC mountd
rpc.mountd 32767/udp # RPC mountd
rpc.lockd 32768/tcp # RPC lockd/nlockmgr
rpc.lockd 32768/udp # RPC lockd/nlockmgr
rpc.quotad 32769/tcp # RPC quotad
rpc.quotad 32769/udp # RPC quotad
$ vim /etc/modprobe.d/local.conf
options lockd nlm_udpport=32768 nlm_tcpport=32768
options nfs callback_tcpport=32764
//重新執行相關服務
$ sudo service nfs-kernel-server start
//查看修改結果
$ rpcinfo -p
依照以上設定port成功後,必須將防火牆開啟(AWS、GCE需去預設相關安全性地方開啟port)
TCP、UDP都得開啟以上範例的相關port
$ vim /etc/rc.local
iptables -A INPUT -i eth1 -p tcp -s 192.168.66.0/24 -m state --state NEW -m multiport --dport 111,2049,32764:32769 -j ACCEPT
iptables -A INPUT -i eth1 -p udp -s 192.168.66.0/24 -m state --state NEW -m multiport --dport 111,2049,32764:32769 -j ACCEPT
//restart iptables
$ service rc.local start
//並沒特別開啟
$ vim /etc/hosts.deny
ALL: ALL
//並沒特別開啟
$ vim /etc/hosts.allow
portmap: ALL
Client
//更新系統及安裝相關package
$ sudo apt-get update
$ sudo apt-get install nfs-common
//建立clinet放置NFS位置資料夾
$ sudo mkdir -p /mnt/nfs/home
$ sudo mkdir -p /mnt/nfs/var/nfs
//mount NFS路徑
//mount e.g mount -t nfs [NFS IP]:[client folder] [remote folder]
$ sudo mount -t nfs 123.1.1.1:/home /mnt/nfs/home
$ sudo mount -t nfs 123.1.1.1:/var/nfs /mnt/nfs/var/nfs
//可查詢cline目前mount哪些資料夾
$ mount -t nfs
//取消remote mount
//e.g umount [client folder]
$ umount /mnt/nfs/home
$ umount /mnt/nfs/var/nfs
client重新開機後掛載會取消,如需讓client自動掛載有以下兩種方式
//方法一
$ vim /etc/fstab
//規則說明
123.1.1.1:/home /mnt/nfs/home nfs defaults 1 1
123.1.1.1:/var/nfs /mnt/nfs/var/nfs nfs defaults 1 1
//方法二
$ vim /etc/rc.d/rc.local
//規則說明
mount -t nfs -o nosuid,noexec,nodev,rw,bg,soft,rsize=32768,wsize=32768 \123.1.1.1:/home /mnt/nfs/home
mount -t nfs -o nosuid,noexec,nodev,rw,bg,soft,rsize=32768,wsize=32768 \123.1.1.1:/var/nfs /mnt/nfs/var/nfs
參考網址: