ubuntu 設置NFS的方法

介紹

​ NFS(網絡文件系統)使您可以與該網絡上的其他計算機/設備“共享”位於一臺聯網計算機上的目錄。 目錄所在的計算機稱爲服務器,連接到該服務器的計算機或設備稱爲客戶端。 客戶端通常“掛載”共享目錄以使其成爲其自身目錄結構的一部分。

​ NFS非常適合在Linux/Unix環境中創建NAS(網絡附加存儲)。 與使用Microsoft開發的SMB協議的Samba相比,它是原生Linux/Unix協議。 Apple OS對NFS有很好的支持。 Windows 7對NFS有一些支持。

​ 對於更“永久”的網絡掛載目錄(例如/home目錄)或定期訪問的共享資源,NFS可能是最佳選擇。 如果希望訪客用戶可以輕鬆連接的網絡共享,則Samba更適合。 這是因爲在舊的專有操作系統中更容易存在工具來臨時掛載和斷開Samba共享。

​ Ubuntu在部署NFS之前,應該熟悉:

  • Linux文件和目錄權限
  • 掛載和分離(卸載)文件系統

​ 此方法可在Ubuntu服務器成功部署NFSv4。

NFS快速入門

爲了使您瞭解自己在做什麼,請在Ubuntu上使用此簡短的練習設置NFSv4服務器(無身份驗證安全性)。 然後在Ubuntu客戶端掛載共享。 它已經在Ubuntu 14.04上進行了測試。

NFS服務器

要檢查是否已安裝NFS服務器,可以執行以下操作:

# dpkg -l | grep nfs-kernel-server

安裝所需的軟件包…

# apt-get -y install nfs-kernel-server

爲了簡化維護,我們將所有NFS導出隔離在一個目錄中,在此目錄中,將使用–bind選項掛載實際目錄。

​ 假設我們要在/home/users中導出用戶的主目錄。 首先,我們創建導出文件系統:

# mkdir -p /export/users

/export和/export/users具有777權限很重要,因爲我們將在沒有LDAP/NIS身份驗證的情況下從客戶端訪問NFS共享。 如果使用身份驗證,則將不適用(請參閱下文)。 現在使用以下命令掛載真實用戶目錄:

# mount --bind /home/users /export/users

​ 爲了避免我們在每次重新啓動後重新鍵入此代碼,我們將以下行添加到/etc/fstab中:

/home/users    /export/users   none    bind  0  0

與NFS服務器相關的配置文件共有三個:/etc/default/nfs-kernel-server,/etc/default/nfs-common和/etc/exports。

  • 目前,/etc/default/nfs-kernel-server中唯一重要的選項是NEED_SVCGSSD。 默認情況下將其設置爲“ no”,這很好,因爲這次我們不激活NFSv4安全性。

爲了自動映射ID名稱,客戶端和服務器都要求/etc/idmapd.conf文件具有相同的內容和正確的域名。 此外,此文件在“Mapping”部分中應包含以下幾行:

[Mapping] 
Nobody-User = nobody 
Nobody-Group = nogroup

但是,客戶端對Nobody-User和Nobody-Group可能有不同的要求。 例如,在RedHat變體上,兩者都是nfsnobody。 cat /etc/passwd和cat /etc/group應該顯示“ nobody”帳戶。

這樣,服務器和客戶端不需要用戶共享相同的UID / GID。

對於使用基於LDAP的身份驗證的用戶,將以下行添加到客戶端的idmapd.conf中:

[Translation] 
Method = nsswitch

這將使idmapd知道查看nsswitch.conf以確定應該在哪裏尋找證書信息(並且,如果您已經在使用LDAP身份驗證,則nsswitch不需要進一步的說明)。

假如現在將目錄導出到本地網絡192.168.1.0/24,則需要將以下兩行添加到/etc/exports

/export       192.168.1.0/24(rw,fsid=0,insecure,no_subtree_check,async) 
/export/users 192.168.1.0/24(rw,nohide,insecure,no_subtree_check,async)

Portmap Lockdown

可選

將以下行添加到/etc/hosts.deny:

rpcbind mountd nfsd statd lockd rquotad : ALL

通過首先阻止所有客戶端,將僅允許下面/etc/hosts.allow中的客戶端訪問服務器。

現在將以下行添加到/etc/hosts.allow中:

rpcbind mountd nfsd statd lockd rquotad : IP地址列表

此處的“ IP地址列表”是字符串,需要製作一個包含服務器和所有客戶端的IP地址列表。 由於端口映射的限制,這些地址必須是IP地址(它不喜歡主機名)。 請注意,如果您已設置NIS,只需將它們添加到同一行。

注意:由於最新版本的Ubuntu中的啓動腳本使用rpcinfo命令來發現NFSv3支持,因此請確保授權IP地址列表中包括本地主機地址(127.0.0.1),如果本地主機無法連接,則將禁用此功能。

現在重啓服務

# service nfs-kernel-server restart

NFSv4客戶端

安裝所需的軟件包:

# apt-get -y install nfs-common 

在客戶端上,可以使用一個命令掛載完整的導出樹:

# mount -t nfs -o proto=tcp,port=2049 <nfs-server-IP>:/ /mnt

也可以指定NFS服務器主機名而不是其IP,但是在這種情況下,需要確保主機名可以在客戶端解析爲IP(可以使用/etc/hosts文件)。

請注意,在NFSv4中:/export是不必要的,在NFSv3中也是如此。 根導出:/默認使用fsid = 0導出。

還可以使用以下命令掛載導出的子樹:

# mount -t nfs -o proto=tcp,port=2049 :/users /home/users

爲了避免我們在每次重新啓動後重新鍵入此代碼,可將以下行添加到/etc/fstab中:

<nfs-server-IP>:/   /mnt   nfs    auto  0  0

​ 如果在掛載之後,/proc/mounts中的條目顯示爲😕/(帶有兩個斜槓),那麼您可能需要在/etc/fstab中指定兩個斜槓,否則umount可能會抱怨找不到掛載。

auto選項在啓動時掛載。 但是,如果客戶端使用在用戶級別(登錄後)管理的wifi連接,則此方法將不起作用,因爲在啓動時網絡將不可用。 在Ubuntu 12.04 LTS和更高版本中,默認情況下,WiFi連接在系統級別進行管理,因此在啓動時自動掛載NFS共享應該可以正常工作。

Ubuntu Server不附帶任何init.d / netfs或其他腳本來爲您執行此操作。

Portmap Lockdown

可選

將以下行添加到/etc/hosts.deny:

rpcbind : ALL

通過首先阻止所有客戶端,將僅允許下面/etc/hosts.allow中的客戶端訪問服務器。

現在將以下行添加到/etc/hosts.allow中:

rpcbind : NFS服務器IP地址

其中“ NFS服務器IP地址”是服務器的IP地址。 這必須是數字! 這就是portmap的工作方式。

NFS服務器

預安裝設置

以下任何預安裝步驟均非嚴格必要。

用戶權限

NFS用戶權限基於用戶ID(UID)。 客戶端上任何用戶的UID必須與服務器上的UID匹配,以便用戶可以訪問。 這樣做的典型方法是:

  • 手動進行密碼文件同步
  • 使用 LDAP
  • 使用 NIS

同樣重要的是要注意,在主用戶具有root訪問權限的系統上必須小心-該用戶可以更改系統上的UID以允許自己訪問任何人的文件。此頁假定管理團隊是唯一具有root訪問權限的組,並且他們都是受信任的。任何其他內容都代表更高級的配置,在此不再贅述。

組權限

使用NFS,用戶對文件的訪問權限是由在客戶端(而不是服務器)上的組成員身份確定的。 但是,有一個重要的限制:最多16個組從客戶端傳遞到服務器,並且,如果用戶是客戶端上16個以上組的成員,則某些文件或目錄可能出乎意料地不可訪問。

主機名

如果使用DNS,則爲可選。

將任何客戶端名稱和IP地址添加到/etc/hosts。服務器的真實IP地址(不是127.0.0.1)應該已經在這裏。這可確保即使DNS出現故障,NFS仍可正常工作。如果願意的話,則可以依賴DNS。

NIS

可選-僅在使用NIS時執行步驟

注意:在使用NIS時有效。 否則,將無法使用網絡組,而應在/etc/exports中指定單個IP或主機名。 閱讀man netgroup中的BUGS部分。

編輯/etc/netgroup並添加一行以對客戶端進行分類。(此步驟不是必需的,但爲方便起見)。

myclients (client1,,) (client2,,)

顯然,可以添加更多的客戶端。 myclients可以是任何您喜歡的東西; 這是一個網絡組名稱。

運行以下命令以重建YP數據庫:

make -C /var/yp
Portmap Lockdown

可選

將以下行添加到/etc/hosts.deny:

rpcbind mountd nfsd statd lockd rquotad : ALL

通過首先阻止所有客戶端,將僅允許下面/etc/hosts.allow中的客戶端訪問服務器。

現在將以下行添加到/etc/hosts.allow中:

rpcbind mountd nfsd statd lockd rquotad :IP地址列表

在“ IP地址列表”字符串所在的位置,需要創建一個包含服務器和所有客戶端的IP地址列表。 由於端口映射的限制,這些地址必須是IP地址(它不喜歡主機名)。 請注意,如果您已設置NIS,只需將它們添加到同一行。

安裝與配置

安裝NFS服務器
apt-get -y install rpcbind nfs-kernel-server
共享

編輯/etc/exports並添加共享:

/home @myclients(rw,sync,no_subtree_check)  
/usr/local @myclients(rw,sync,no_subtree_check)

以上配置文件將/home和/usr/local共享到myclients網絡組中的所有客戶端。

/home 192.168.0.10(rw,sync,no_subtree_check) 192.168.0.11(rw,sync,no_subtree_check) /usr/local 192.168.0.10(rw,sync,no_subtree_check) 192.168.0.11(rw,sync,no_subtree_check)

以上配置文件將/home和/usr/local共享給兩個具有固定IP地址的客戶端。最好僅與具有靜態IP地址的計算機配合使用。

/home 192.168.0.0/255.255.255.0(rw,sync,no_subtree_check)  
/usr/local 192.168.0.0/255.255.255.0(rw,sync,no_subtree_check)

以上配置文件將/home和/usr/local共享給屬於指定IP地址範圍內的專用網絡中的所有客戶端。

rw 使共享能夠讀/寫,並且sync要求服務器僅在將任何更改刷新到磁盤後才答覆請求。 這是最安全的選擇(async速度更快,但很危險。強烈建議閱讀man exports。

設置/etc/exports後,導出共享:

exportfs -arv

每當修改 /etc/exports時,都希望執行此命令。

重啓服務

默認情況下,端口映射僅綁定到環回接口。 要允許從遠程計算機訪問端口映射,您需要更改/ etc / default / portmap以擺脫“ -l”或“ -i 127.0.0.1”。

如果更改了/ etc / default / portmap,則需要重新啓動portmap:

service portmap restart

NFS內核服務器也將需要重啓:

service nfs-kernel-server restart

安全須知

​ 除了上面討論的UID問題外,還應注意,攻擊者可能會僞裝成一臺允許映射共享的機器,從而使他們可以創建任意UID來訪問您的文件。 一種可能的解決方案是 IPSec,另請參見下面的“ NFS和IPSec”部分。 可以將所有域成員設置爲僅通過IPSec彼此通信,這將有效地驗證您的客戶端是誰。

​ IPSec的工作原理是使用服務器的密鑰對到服務器的通信進行加密,然後服務器會發回用客戶端的密鑰加密的所有答覆。 使用相應的密鑰解密流量。 如果客戶端沒有客戶端應該擁有的密鑰,則它將無法發送或接收數據。

IPSec的替代方法是物理上獨立的網絡。 這需要單獨的網絡交換機和單獨的以太網卡,以及該網絡的物理安全性。

NFS客戶端

安裝

apt-get -y install rpcbind nfs-common
Portmap Lockdown

可選

將以下行添加到/etc/hosts.deny:

rpcbind : ALL

通過首先阻止所有服務器,將僅允許客戶端訪問下面/etc/hosts.allow中的服務器。

現在將以下行添加到/etc/hosts.allow中:

rpcbind : NFS server IP address

其中“ NFS服務器IP地址”是服務器的IP地址。 這必須是數字! 這就是portmap的工作方式。

主機名

如果使用DNS,則爲可選

將服務器名稱添加到/etc/hosts。 這樣可以確保即使DNS出現故障,NFS掛載仍將正常工作。 可以根據需要依賴DNS,這取決於您。

Mounts

檢查是否一切正常

應該立即嘗試掛載它。 將使用的基本模板是:

mount ServerIP:/folder/already/setup/to/be/shared /home/username/folder/in/your/local/computer

因此,例如:

mount 192.168.1.42:/home/music /home/poningru/music
啓動時掛載

NFS掛載既可以在使用autofs訪問時自動掛載,也可以使用/etc/fstab中的條目通過靜態掛載進行設置。 兩者都在下面說明。

自動掛載器

安裝autofs:

apt-get -y install autofs

以下配置示例將主目錄設置爲在登錄NFS服務器時自動掛載。也可以將其他目錄設置爲在訪問時自動掛載。

將以下行添加到/etc/auto.master的末尾:

  /home         /etc/auto.home

現在創建/etc/auto.home並插入以下內容:

*    solarisbox1.company.com.au,solarisbox2.company.com.au:/export/home/&

上面的行自動從solarisbox1.company.com.au:/export/home/[用戶名]或solarisbox2.company.com.au:/export/home/[用戶名]掛載在/home/[用戶名]上訪問的目錄。

重啓autofs以啓用配置:

service autofs start
靜態掛載

在設置掛載之前,請確保已經創建了將用作掛載點的目錄。

在/etc/fstab中,爲共享添加行,例如:

servername:dir /mntpoint nfs rw,hard,intr 0 0

rw 對其進行讀/寫掛載。 顯然,如果服務器以只讀方式共享它,則客戶端將無法以其它方式掛載它。 hard掛載共享,以便在服務器不可用時,程序將等待直到可用。 替代方案是 soft。intr允許中斷/殺死進程。 否則,它將忽略。 這些文件的文檔可以在man mount的Mount options for nfs中找到。

現在可以使用mount/mountpoint或mount -a掛載文件系統,以掛載應在引導時掛載的所有內容。

注意事項

最低限度的NFS設置

上面的步驟非常全面。 此處列出了設置NFS所需的最少步驟數:

http://www.ubuntuforums.org/showthread.php?t=249889

IPSec注意事項

如果使用的是IPSec,則Breezy / Dapper中的默認關閉順序會導致客戶端在關閉時掛起,因爲IPSec在NFS之前先關閉。 要解決此問題,請執行以下操作:

update-rc.d -f setkey remove update-rc.d setkey start 37 0 6 S .

已在此處提交錯誤: https://launchpad.net/distros/ubuntu/+source/ipsec-tools/+bug/37536

故障排除

在加密的主目錄中掛載NFS共享在啓動時無法正常工作

只有在成功登錄並解密了主目錄之後,才能在加密的主目錄中掛載NFS共享。 這意味着使用/ etc / fstab在引導時掛載NFS共享將不起作用-因爲掛載時您的主目錄尚未被解密。 有一種使用符號鏈接的簡單方法:

  • 創建一個備用目錄以在以下位置掛載NFS共享:
$ sudo mkdir /nfs $ sudo mkdir /nfs/music
  • 編輯/etc/fstab將NFS共享掛載到該目錄中:
nfsServer:music  /nfs/music  nfs  auto  0 0
  • 在您的主目錄內創建一個符號鏈接,指向實際的掛載位置(在本例中,請首先刪除該位置已存在的“ Music”目錄):
$ rmdir /home/user/Music 
$ ln -s /nfs/music/ /home/user/Music

其它資源

動時無法正常工作

只有在成功登錄並解密了主目錄之後,才能在加密的主目錄中掛載NFS共享。 這意味着使用/ etc / fstab在引導時掛載NFS共享將不起作用-因爲掛載時您的主目錄尚未被解密。 有一種使用符號鏈接的簡單方法:

  • 創建一個備用目錄以在以下位置掛載NFS共享:
$ sudo mkdir /nfs $ sudo mkdir /nfs/music
  • 編輯/etc/fstab將NFS共享掛載到該目錄中:
nfsServer:music  /nfs/music  nfs  auto  0 0
  • 在您的主目錄內創建一個符號鏈接,指向實際的掛載位置(在本例中,請首先刪除該位置已存在的“ Music”目錄):
$ rmdir /home/user/Music 
$ ln -s /nfs/music/ /home/user/Music

其它資源

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章