NFS服務器資源使用問題
前面我們講解了NFS服務器的安裝和配置問題。這里我們主要討論一下NFS安全問題以及資源使用的問題。那么首先讓我們關注一下NFS的安全問題。那么在一些防火墻的配置中,我們可以進行一下操作。
NFS安全問題:
1 Iptables 防火墻
如果我們的NFS服務器在防火墻后邊,則需要在防火強策略中加入如下策略:
- -A INPUT -p tcp -m state --state NEW -m multiport --dport 111,2049,4001,32764:32767 -j ACCEPT
- -A INPUT -p udp -m state --state NEW -m multiport --dport 111,2049,4001,32764:32767 -j ACCEPT
2 使用 /etc/hosts.allow和/etc/hosts.deny 控制客戶端的訪問
/etc/hosts.allow和/etc/hosts.deny這兩個文件是tcpd服務器的配置文件,tcpd服務器可以控制外部IP對本機服務的訪問。這兩個配置文件的格式如下:
#服務進程名:主機列表:當規(guī)則匹配時可選的命令操作
- server_name:hosts-list[:command]
/etc/hosts.allow控制可以訪問本機的IP地址,/etc/hosts.deny控制禁止訪問本機的IP。如果兩個文件的配置有沖突,以 /etc/hosts.deny為準。下面是一個/etc/hosts.allow的示例:
- ALL:127.0.0.1 #允許本機訪問本機所有服務進程
- smbd:192.168.0.0/255.255.255.0 #允許192.168.0.網段的IP訪問smbd服務
ALL關鍵字匹配所有情況,EXCEPT匹配除了某些項之外的情況,PARANOID匹配你想控制的IP地址和它的域名不匹配時(域名偽裝)的情況。
比如,在服務器的 /etc/hosts.deny 文件作如下設置:
- # cat /etc/hosts.deny
- portmap:192.168.102.15
然后在客戶機192.168.102.15上加載共享目錄
- # mount 192.168.102.47:/home/share /mnt
- mount to NFS server '192.168.102.47' failed.
我們發(fā)現(xiàn)現(xiàn)在已經無法加載共享目錄的。
資源使用
除了使用mount的命令手動掛栽共享資源,還可以使用其他方法實現(xiàn)共享資源的自動掛栽:
1 啟動時自動掛栽
修改客戶機的 /etc/fstab文件,加入類似如下行:
- 192.168.102.47:/home/share /mnt nfs rsize=8192,wsize=8192,timeo=14,intr
重啟客戶機,即可實現(xiàn)系統(tǒng)啟動時自動掛栽共享資源
2 使用 autofs 實現(xiàn)資源掛栽
autofs 使用 automount 守護進程來管理你的掛載點,它只在文件系統(tǒng)被訪問時才動態(tài)地掛載它們。 autofs 查詢主配置文件 /etc/auto.master 來決定要定義哪些掛載點。然后,它使用適用于各個掛載點的參數來啟動 automount 進程。主配置中的每一行都定義一個掛載點,然后用單獨的配置文件定義在該掛載點下要掛載的文件系統(tǒng)
。
NFS服務器安裝autofs
- # aptitude install autofs
修改/etc/auto.master文件, 加入如下內容:
- /mnt /etc/auto.nfs
創(chuàng)建 /etc/auto.nfs 文件內容如下:
- nfs -rw,soft,intr,rsize=8192,wsize=8192 192.168.102.47:/home/share
這樣,每當您進入 /mnt/nfs 目錄時,系統(tǒng)都會嘗試將服務器的共享資源掛栽到該目錄上。應當注意nfs目錄是由 automount 動態(tài)地創(chuàng)建的,它不應該在客戶機器上實際存在。
- tonybox2:/# cd /mnt
- tonybox2:/mnt# ls
- tonybox2:/mnt# cd nfs
- tonybox2:/mnt/nfs# ls
- 123
- tonybox2:/mnt/nfs# ls -l
- total 4
- -rw-r--r-- 1 nobody nogroup 6 2006-08-22 07:50 123
- tonybox2:/mnt/nfs#
如果修改了/etc/auto.master主配置文件,則需要運行
- #/etc/init.d/autofs reload
對NFS服務器進行重新加載。