Ubuntu 14.04 Server 上的 NFS Server 設定

使用 NFS Server 感覺比較麻煩的是,NFS Server 除了固定的 tcp/udp 111 和 tcp/udp 2049 外,其它的 Port 都是動態產生,如果要在防火牆上做設定,不太容易,最好能固定使用某些 Port,方便處理。
# rpcinfo -p
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  56027  status
    100024    1   tcp  32961  status
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    2   tcp   2049
    100227    3   tcp   2049
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100227    2   udp   2049
    100227    3   udp   2049
    100021    1   udp  44022  nlockmgr
    100021    3   udp  44022  nlockmgr
    100021    4   udp  44022  nlockmgr
    100021    1   tcp  48020  nlockmgr
    100021    3   tcp  48020  nlockmgr
    100021    4   tcp  48020  nlockmgr
    100005    1   udp  33475  mountd
    100005    1   tcp  45010  mountd
    100005    2   udp  60988  mountd
    100005    2   tcp  44341  mountd
    100005    3   udp  51772  mountd
    100005    3   tcp  40966  mountd
[@more@]這方面的資料在 CentOS Linux 有很多的參考資料,如:鳥哥的 Linux 私房菜 — NFS 伺服器,但在 Ubuntu Server 上似乎不多,尤其是中文的部份,後來在英文的網站中,找到了 SecuringNFS – Debian Wiki 這一篇,根據網站上的說明,實際設定一下,可以正常成功。
1. 修改設定檔 /etc/default/nfs-common
# vim /etc/default/nfs-common
STATDOPTS=”–port 32765 –outgoing-port 32766″

2. 修改設定檔 /etc/default/nfs-kernel-server
# vim /etc/default/nfs-kernel-server
RPCMOUNTDOPTS=”-p 32767″

3. 修改設定檔 /etc/default/quota
# vim /etc/default/quota
RPCRQUOTADOPTS=”-p 32769″

4. 修改 /etc/services 加入下面的設定
# 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

5. 修改設定檔 /etc/modprobe.d/local.conf
# vim /etc/modprobe.d/local.conf
options lockd nlm_udpport=32768 nlm_tcpport=32768
options nfs callback_tcpport=32764

6. 重新啟動 Ubuntu Server

7. 檢查成果
# rpcinfo -p
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  32765  status
    100024    1   tcp  32765  status
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    2   tcp   2049
    100227    3   tcp   2049
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100227    2   udp   2049
    100227    3   udp   2049
    100021    1   udp  32768  nlockmgr
    100021    3   udp  32768  nlockmgr
    100021    4   udp  32768  nlockmgr
    100021    1   tcp  32768  nlockmgr
    100021    3   tcp  32768  nlockmgr
    100021    4   tcp  32768  nlockmgr
    100005    1   udp  32767  mountd
    100005    1   tcp  32767  mountd
    100005    2   udp  32767  mountd
    100005    2   tcp  32767  mountd
    100005    3   udp  32767  mountd
    100005    3   tcp  32767  mountd

8. 加入防火牆的設定
# NFS Port 111,2049,32764:32769
# eth1 對內網路卡 192.168.66.0/24 內部網路網段
# 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

9. 重新啟動防火牆
# service rc.local start