NFS是Network File System的縮寫,即網絡文件系統。它的主要功能是通過網絡(一般是局域網)讓不同的主機系統之間可以共享文件或目錄。NFS客戶端可以通過掛載(mount)的方式將NFS服務端共享的數據目錄掛載到NFS客戶端本地系統中(就是某一個掛載點下)。從NFS客戶端的機器本地看,NFS服務端共享的目錄就好像是客戶自己的磁盤分區或者目錄一樣,而實際上確是遠端的NFS服務端的目錄。NFS主要用於類Unix系統之間的共享, 最早是由Sun公司發展出來的。
NFS網絡文件系統類似windows系統的網絡共享、安全功能、網絡驅動器映射,這也和linux系統里的samba服務類似。應用於互聯網中小型集群架構后端作為數據共享,如果是大型網站,那么有可能還會用到更復雜的分布式文件系統,例如Moosefs(mfs)、glusterfs、FastDFS。
一、NFS原理流程及RPC服務的介紹
既然NFS是通過網絡來進行服務器端和客戶端之間的數據傳輸,那么兩者之間要傳輸數據就要有相對應的網絡端口,NFS服務器到底使用哪個端口來進行數據傳輸呢?基本上NFS這個服務的端口開在2049,但由於文件系統非常復雜。因此NFS還有其他的程序去啟動額外的端口,這些額外的用來傳輸數據的端口是隨機選擇的,是小於1024的端口;既然是隨機的那么客戶端又是如何知道NFS服務器端到底使用的是哪個端口呢?這時就需要通過遠程過程調用(Remote Procedure Call,RPC)協議來實現了!
NFS RPC最主要的功能就是記錄每個NFS功能所對應的端口號,並且在NFS客戶端請求時將該端口和功能對應的信息傳遞給請求數據的NFS客戶端,讓客戶端可以鏈接到正確的端口上去,從而實現數據傳輸。只在第一次建立連接時候幫助網絡應用程序找到正確的port,當雙方正確連接時,端口就和應用綁定,PPC就無用了。相當於媒婆。
RPC怎樣知道NFS的每個端口呢?
原因是,當NFS服務啟動時會隨機取用數個端口,並主動向RPC服務注冊取用的相關端口信息,這樣,RPC服務就可以知道每個端口所對應的NFS功能了,然后RPC服務使用固定的端口號111來監聽NFS客戶端提交的請求,並將正確的NFS端口應答給NFS客戶端,這樣一來,就可以讓NFS客戶端與服務端進行數據傳輸了。
提示:在啟動NFS SERVER之前,首先要啟動RPC服務(即rpcbind服務,下同)否則NFS SERVER就無法向RPC服務注冊,另外,如果RPC服務重新啟動,原來已經注冊好的NFS端口數據就會全部丟失。因此此時RPC服務管理的NFS程序也要重新啟動以重新向RPC注冊。特別注意:一般修改NFS配置文檔后,是不需要重啟NFS的,直接在命令執行exportfs –rv即可使修改的/etc/exports生效。
客戶端NFS和服務端NFS通訊過程
1、首先服務器端啟動RPC服務,並開啟111端口
2、啟動NFS服務,並向RPC注冊端口信息
3、客戶端啟動RPC(rpcbind服務),向服務端的RPC(rpcbind)服務請求服務端的NFS端口
4、服務端的RPC(rpcbind)服務反饋NFS端口信息給客戶端。
5、客戶端通過獲取的NFS端口來建立和服務端的NFS連接並進行數據的傳輸
二、NFS服務端軟件的安裝
1、安裝nfs服務主程序nfs-kernel-server
這個軟件提供nfs的主要服務,提供文件系統的完整功能。這里要提醒一下,NFS服務器會直接使用到內核的模塊,所以內核必須要支持 NFS 才行。如果操作系統的版本是自行編譯的內核的話,需要注意編譯NFS的內核支持。安裝命令如下:
-------------------------------------------------
[root@CentOS ~]# yum install nfs-utils
-------------------------------------------------
2、安裝RPC主程序rpcbind以前的程序名叫做portmap
NFS 服務都是通過 RPC 來具體實現的,所以要正常使用NFS服務,需要啟動 rpcbind來實現端口的映射工作,通過下面命令安裝:
------------------------------------------------
[root@CentOS ~]# yum install rpcbind
------------------------------------------------
三、查看NFS相關服務是否啟動
1、啟動rpcbind服務
---------------------------------------------------
[root@CentOS ~]# service rpcbind start
---------------------------------------------------
2、啟動NFS主服務:
----------------------------------------
[root@CentOS ~]# service nfs start
----------------------------------------
3、設置rpcbind主程序開機啟動
----------------------------------------
[root@CentOS ~]# chkconfig rpcbind on
----------------------------------------
4、設置NFS主程序開機啟動
------------------------------------
[root@CentOS ~]# chkconfig nfs on
------------------------------------
5、通下面的命令產看上面的服務是否開機啟動
---------------------------------------------
[root@CentOS ~]# chkconfig --list rpcbind
[root@CentOS ~]# chkconfig --list nfs
---------------------------------------------
四、NFS server端的配置
1、主要的配置文件:/etc/exports
這個文件是NFS的主要配置文件,如果不存在新建這個文件,后面介紹他的用法。
2、NFS文件系統的維護命令:exportfs
這個是維護NFS共享資源的命令,我們可以利用這個命令重新共享/etc/exports更新的目錄資源、將NFS server共享的的目錄卸載或重新共享等,這是NFS系統里面相當重要的一個命令,后面會具體介紹。
五、/etc/exports配置文件的語法與參數
1、先舉個例子:將/media/目錄共享給局域網中192.168.1.0/24網段的用戶可讀寫並且數據同步寫入到硬盤和內存,所以用戶只讀。/etc/exports配置文件的內容如下:
=============================================
[root@CentOS ~]# vim.tiny /etc/exports
/media 192.168.1.0/24(rw,sync) *(ro)
[共享目錄] [可以訪問的主機(權限)] [*代表所有用戶(權限)]
=============================================
這個配置文件很簡單,每一行前面是要共享的目錄,是以目錄為單位。然后這個目錄可以依照不同的權限共享給不同的主機,不同的主機用空格分開,主機后面是以小括號"()"定義權限參數,若權限參數不只一個時,則以逗號","分開,並且主機名與小括號是連在一起的,主機與共享目錄之間用空格分開,在這個文件內也可以利用#號來進行注釋。
2、主機設置主要有以下幾種方式:
可以使用完整的IP或者網絡號,例如:
單個主機:192.168.1.100 網絡號:192.169.1.0/24或192.168.1.0/255.255.255.0
可以使用主機名,但這個主機名必須要在/etc/hosts內,或可以使用DNS找到該名稱,重點是可以找到IP地址,如果是主機名可以支持通配符,例如"*"或"?"均可接受。
3、小括號內常用的權限參數如下:
================================================================
ro:共享目錄只讀;
rw:共享目錄可讀可寫
sync:同步,將數據同步寫入內存緩沖區與磁盤中,效率低,但可以保證數據的一致性;
async:異步,將數據先保存在內存緩沖區中,必要時才寫入磁盤,效率高,但有丟失數據的風險;
wdelay(默認):如果有多個客戶端要對同一個共享目錄進行寫操作,則將這些操作集中執行。對有很多小的IO寫操作時,使用該選項可以有效的提高效率;
no_wdelay:如果有多個客戶端要對同一個共享目錄進行寫操作則立即寫入。當設置了async選項時,no_wdelay選項無效,應與sync配合使用;
root_squash(默認):將來訪的root用戶映射為匿名用戶或用戶組;
no_root_squash:來訪的root用戶保持root帳號權限;
all_squash:所有訪問用戶都映射為匿名用戶或用戶組;
no_all_squash(默認):訪問用戶先與本機用戶匹配,匹配失敗后再映射為匿名用戶或用戶組;
anonuid=<UID>:指定匿名訪問用戶的本地用戶UID,默認為nfsnobody(65534);
anongid=<GID>:指定匿名訪問用戶的本地用戶組GID,默認為nfsnobody(65534);
secure(默認):限制客戶端只能從小於1024的tcp/ip端口連接服務器;
insecure:允許客戶端從大於1024的tcp/ip端口連接服務器;
subtree_check :若輸出目錄是一個子目錄,則nfs服務器將檢查其父目錄的權限;
no_subtree_check(默認) :即使輸出目錄是一個子目錄,nfs服務器也不檢查其父目錄的權限,這樣可以提高效率;
hide:共享一個目錄時,不共享該目錄的子目錄;
no_hide:共享子目錄;
================================================================
如果想了解更多的參數,可以使用man exports
六、NFS權限控制
NFS服務器的架設比較簡單,最大的問題在於權限方面的管理。前面已經介紹了NFS提供了ro和rw選項,可以控制客戶端對共享文件的讀或寫權限。其實NFS共享文件的訪問權限並不僅僅由這些選項決定,它由三方面控制,第一方面就是服務器端nfs配置文件里權限參數的控制,第二方面就是服務器端文件在操作系統里的權限控制,包括共享的目錄和里面文件的權限,也就是文件的屬性中的rwx(讀、寫、執行)。第三方面就是客戶端,共享的目錄需要先掛載到客戶端指定的目錄上,客戶端才能通過掛在目錄訪問,所以客戶端掛載目錄的權限也起作用,就是目錄屬性中的rwx(讀、寫、執行)后面客戶端將再介紹。只有客戶端的用戶同時滿足上面的三個條件才能訪問共享目錄里面的文件。
操作系統對用戶的判斷其實並不是通過用戶名,而是通過/etc/passwd文件中所記錄的UID號,由於NFS客戶端和NFS服務器是兩台不同的機器,即使他們的操作系統有相同的用戶名,其UID也不一定一樣,那么客戶端用戶訪問NFS服務器的過程是怎樣的那?下面舉例說明下。
查看用戶UID的命令如下:
--------------------------------
[root@CentOS ~]# id -u 用戶名
--------------------------------
客戶端用戶訪問共享目錄文件的過程如下:
先假設客戶端用戶名為laopi,UID暫定,用於掛載的共享目錄為/Client目錄,用戶laopi對這個目錄的權限為讀寫執行(目錄的執行權限是可以進入這個目錄),服務器端共享目錄為/Server目錄權限為drwxr-xr-x(目錄的所有者用戶為pipci,UID為1000),nfs共享配置文件里設置為rw
1、當客戶端用戶laopi的UID與服務器端用戶pipci的UID相同時,即laopi的UID也為1000,這種情況由於用戶laopi對掛載目錄/Client具有讀寫權執行限,nfs共享配置文件里設置為讀寫,NFS服務器上pipci用戶對共享目錄/Server具有讀寫執行權限,所以客戶端用戶對共享目錄/Server也具有讀寫執行權限,因為UID相同。
2、當客戶端用戶laopi的UID與服務器端用戶pipci的UID不同時,假設laopi的UID為1010,這種情況由於用戶laopi對掛載目錄/Client具有讀寫權執行限,nfs共享配置文件里設置為讀寫,但是NFS服務器上UID為1010的用戶對共享目錄/Server只具有讀寫權限,所以客戶端用戶對共享目錄/Server也只具有讀寫權限,因為UID為1010的用戶對/Server目錄來說是其他用戶。如果也想讓laopi用戶具有讀寫執行的權限可以為目錄/Server添加其他用戶的執行權限
3、當客戶端用戶為root,因為正常所有Linux操作系統里的root用戶UID都為0,所以限制權限的只有nfs共享配置文件里設置參數了,如果權限參數有root_squash選項和rw選項,則就的看共享目錄對匿名用有什么權限,如果權限參數root_squash改為no_root_squash選項,那就沒有限制了。
七、exportfs命令:輸出共享目錄
NFS服務啟動時會讀取/etc/exports配置文件中的內容,把文件中設置的共享目錄輸出供客戶端使用,在NFS服務啟動后,如果對/etc/exports進行了更改,需要通過exports命令對共享的目錄進行輸出,輸出完成后,客戶端才能訪問新設置的共享目錄。exportfs命令的用法如下:
[root@CentOS ~]# exportfs [參數]
參數:
-a :全部輸出或取消輸出/etc/exports中共享的內容
-r :重新讀取/etc/exports中的配置
-u :取消一個或多個共享目錄的輸出
-i :忽略/etc/exports中的配置,而使用默認或命令行中指定的選項
-o :通過命令添加共享目錄,重啟后失效。
-v :如果不跟其他選項一起使用,則顯示當前共享的所有目錄及他們的選項設置,如果輸出或取消輸出共享目錄,則顯示進行了那些操作。
具體例子:
[root@CentOS ~]# exportfs -v #產看所以共享目錄
[root@CentOS ~]# exportfs -rv #使/etc/exports更改的配置生效
[root@CentOS ~]# exportfs -Au #取消當前所有的共享目錄
[root@CentOS ~]# exportfs -Av #只查看/etc/exports中共享的目錄同時恢復取消的共享目錄
[root@CentOS ~]# exportfs -o rw,async 192.168.2.100:/mnt #添加共享目錄/mnt,注意命令格式-o參數后面是權限,多個權限用逗號分開,權限后面是可以訪問的主機或網段,后面是共享的目錄,主機和共享目錄之間有冒號(:)並且不可以有空格。
oot@debian:~# exportfs -uv 192.168.2.100:/mnt #取消exportfs命令添加的共享目錄
八、NFS客戶端配置
1、NFS客戶端同樣要安裝rpcbind軟件並啟動該服務
------------------------------------------------
[root@CentOS ~]# yum install rpcbind
------------------------------------------------
2、啟動rpcbind服務
---------------------------------------------------
[root@CentOS ~]# service rpcbind start
---------------------------------------------------
3、設置rpcbind主程序開機啟動
----------------------------------------
[root@CentOS ~]# chkconfig rpcbind on
----------------------------------------
4、通下面的命令產看上面的服務是否開機啟動
---------------------------------------------
[root@CentOS ~]# chkconfig --list rpcbind
---------------------------------------------
5、通過命令showmount查看共享的目錄
在掛載遠程NFS共享目錄前,做好先使用showmount命令查看NFS服務器的共享目錄列表,已確定這些共享目錄是否運行本地訪問。showmount命令的格式如下:
[root@CentOS ~]# showmount [選項] [主機的IP或名稱]
常用的選項如下:
-a:該選項一般在NFS服務器上使用,用於顯示已經掛載了服務器共享目錄的客戶端及他們所使用的共享目錄。
-d:與-A類似,但只顯示目錄,不顯示具體的客戶端。
-e:顯示指定NFS服務器輸出的共享目錄列表
-h:顯示幫助信息
-v:顯示版本信息
--no-headers:不輸出標題信息
具體例子:
root@debian:~$ showmount -e 192.168.1.102 #顯示NFS服務器192.168.1.102 輸出的共享目錄
6、創建掛載點並掛載共享目錄
用戶可以自定義掛載點,而與需與NFS服務器上共享目錄一樣的路徑,用戶可以創建多個掛載點,掛載同一個共享目錄。創建的目錄如果由使用者全權控制,使用者對掛載目錄應該有讀寫執行的權限。
掛載共享目錄使用的命令與掛載本地文件系統使用的命令一樣,都是使用mount命令,其格式如下:
[root@CentOS ~]# mount [選項] NFS服務器IP或主機名:共享目錄 掛載點
命令格式中的冒號(:)一定不要少,他是在NFS服務器IP或主機名和共享目錄中間,沒有空格,mount命令與nfs相關選項說明如下:
-t nfs:指定要掛載的文件系統類型為NFS,不加這個選項也可以,mount命令會自動識別
-o ro:只掛載的文件系統為只讀
-o rw:可讀寫
-o port=n:指定連接NFS服務器使用的端口號
-o retry=n:指定放棄掛載前嘗試的時間,單位為分鍾。前台掛載的默認值為2,后台掛載的默認值為10000
-o fg:指定以前台方式完成掛載工作。如果與NFS服務器之間的連接存在問題,那么mount命令會一直重復嘗試掛載,直到成功或超時為止。在這個過程中,mount命令會占用終端窗口,用戶無法在窗口中運行其他命令
-o bg:與fg相反,使用后台方式完成掛載工作。如果與NFS服務器之間的連接存在問題,那么mount命令會在后台進行掛載,而不會占用終端窗口。
注意:-o選項可以通過逗號(,)分隔,聯合使用。
具體例子: 把NFS服務器192.168.1.102的共享目錄/media掛在到本地的/media目錄,掛載選項設置為只讀,后台掛載方式,放棄掛載前嘗試的時間為1分鍾
-------------------------------------------------------------------------------
[root@CentOS ~]# mount -t nfs -o rw,bg,retry=1 192.168.1.102:/media /media
-------------------------------------------------------------------------------
7、卸載NFS文件系統
與卸載普通的本地文件系統一樣,可以通過umount命令把它卸載,終止與NFS服務器的連接。但在卸載前,應該確保已經沒有任何進程在使用該文件系統。用戶可以通過fuser命令進行檢查。
卸載NFS文件系統的命令格式如下所示:
[root@CentOS ~]# umount [遠程文件系統或掛載點]
卸載上面例子掛載的NFS文件系統的方法:
[root@CentOS ~]# umount /media 或[root@CentOS ~]# umount 192.168.1.102:/media
8、fuser命令簡單用法
linux環境下,當使用umount命令卸載掛載點時,會遇到“device is busy”提示,這時fuser就能查出誰在使用這個資源;當然umount –lf [掛載點] 也可以強制卸載
運行下面命令看一下哪個用戶哪個進程占用着此目錄,假設掛載的目錄為/media
[root@CentOS ~]# fuser -mvu /media
運行下面命令殺掉占用此目錄的進程
[root@CentOS ~]# fuser -mvk /media
或者fuser -mvki /media(每殺掉一下進程會讓你確認)
選項說明
-m name 指定一個掛載文件系統上的文件或者被掛載的塊設備(名稱name)。
-u 在每個PID后面添加進程擁有者的用戶名稱
-v 詳細模式
-k 殺掉訪問文件的進程
-i 殺掉進程之前詢問用戶,如果沒有-k這個選項會被忽略
九、使用autofs按需掛載共享目錄
NFS文件系統具有動態性,即需要的時候才有必要掛載。我們怎么才可以做到僅在訪問時候才動態掛載共享目錄那,我們用autofs服務來實現。Autofs與Mount/Umount的不同之處在於,它是一種看守程序。如果它檢測到用戶正試圖訪問一個尚未掛載的文件系統,它就會自動檢測該文件系統,如果存在,那么Autofs會自動將其掛接。另一方面,如果它檢測到某個已掛接的文件系統在一段時間內沒有被使用,那么Autofs會自動將其卸載。因此一旦運行了Autofs后,用戶就不再需要手動完成文件系統的掛接和卸載。
1、安裝autofs軟件
------------------------------------
[root@CentOS ~]# yum install autofs
------------------------------------
2、啟動autofs服務
------------------------------------------------
[root@CentOS ~]# service autofs start
------------------------------------------------
3、設置autofs服務開機啟動
-----------------------------------------------
[root@CentOS ~]# chkconfig autofs on
-----------------------------------------------
4、通下面的命令產看上面的服務是否開機啟動
---------------------------------------------
[root@CentOS ~]# chkconfig --list autofs
---------------------------------------------
4、autofs配置文件設置
/etc/auto.master是autofs的主要配置文件,該文件的配置比較簡單,只需要設置掛載點的父目錄和映射文件即可,格式如下所示:
-------------------------------
掛載點父目錄 映射文件
------------------------------
掛載點父目錄:例如要把共享目錄掛載到本地的/media/nfsdd目錄下,那么這個掛載點父目錄就是/media,而子目錄nfsdd並不需要手工創建,他會由autofs服務管理,在需要掛載時動態創建,這個父目錄最好是空白的,因為如果不是空的那么當啟動這個服務時這個父目錄里的文件會全部不可見。
映射文件:該文件是由用戶自行制定並創建(一般設置為/etc/auto.nfs),在該文件中設置了NFS文件系統應該如何掛載。
映射文件格式如下:
-----------------------------------------------------
掛載點 掛載選項 NFS服務器IP或主機名:共享目錄
-----------------------------------------------------
其中掛載點為/etc/auto.master文件中設置的父目錄下的子目錄,子目錄為相對目錄,如上面的掛載點應該是nfsdd而不是/media/nfsdd ,掛載選項與mount命令中的選項一樣,但是選項前面需要加一個減號(-),配置文件更改后需要重啟autofs服務才能使配置生效。
5、舉例說明: 假設需要把NFS服務器192.168.1.102共享目錄/media自動掛載到本地目錄/media/nfsdd
先配置/etc/auto.master文件,內容如下:
-----------------------------------
/media /etc/auto.nfs
-----------------------------------
在配置映射文件/etc/auto.nfs,內容如下:
------------------------------------------------
nfsdd -rw,bg,retry=1 192.168.1.102:/media
------------------------------------------------
選項前面需要加一個減號(-)
配置完上面的文件重啟autofs服務
[root@CentOS ~]# systemctl restart autofs.service
在目錄/media下直接cd nfsdd就可以完成進入nfsdd目錄並且已經掛載成功
[root@CentOS media]# cd nfsdd
[root@CentOS nfsdd]#
十、NFS服務器防火牆配置
當NFS服務器上啟用了防火牆,客戶端通過命令showmount -e 192.168.1.102查看共享的目錄可能會出現clnt_create: RPC: Port mapper failure - Unable to receive: errno 0 (Success)這個錯誤,解決的辦法有兩種,一種是直接關閉防火牆,第二種是添加策略,添加策略比較麻煩因為除了固定的端口port 111和2049之外還有很多服務開啟不固定的端口,通過下面的方法處理:
1、查看NFS需要開啟的服務和對應的端口號
------------------------------------------------
[root@CentOS ~]# 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
100011 1 udp 875 rquotad
100011 2 udp 875 rquotad
100011 1 tcp 875 rquotad
100011 2 tcp 875 rquotad
100005 1 udp 32923 mountd
100005 1 tcp 33612 mountd
100005 2 udp 42439 mountd
100005 2 tcp 44098 mountd
100005 3 udp 60318 mountd
100005 3 tcp 45099 mountd
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 2 tcp 2049 nfs_acl
100227 3 tcp 2049 nfs_acl
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 2 udp 2049 nfs_acl
100227 3 udp 2049 nfs_acl
100021 1 udp 44604 nlockmgr
100021 3 udp 44604 nlockmgr
100021 4 udp 44604 nlockmgr
100021 1 tcp 32829 nlockmgr
100021 3 tcp 32829 nlockmgr
100021 4 tcp 32829 nlockmgr
[root@CentOS ~]#
-------------------------------------------------
通過上面的顯示可以看到NFS啟動了portmapper、rquotad、mountd、nfs、nlockmgr五個服務和對應的端口號, portmapper和nfs是固定端口,我們可以將剩下的三個服務的端口也固定下來。
2、CentOS 6.x提供了一個固定NFS服務的端口配置文件,那就是/etc/sysconfig/nfs這個文件。在這個文件里面就能夠指定特定的端口,這樣每次啟動NFS時,相關服務啟動的端口就會固定,這樣我們就能夠設置正確額防火牆了,這個配置文件的內容很多,我們只需要修改rquotad、nlockmgr、mountd三個服務對應的配置選項就可以,對應選項如下:
RQUOTAD_PORT=875
LOCKD_TCPPORT=32829
LOCKD_UDPPORT=44604
MOUNTD_PORT=32923
注意,要把選項前面對應注釋符#號刪掉,端口號就是等號后面的數字,可以自定義也可以用選項默認帶的。
修改上面的配置后需要重啟nfs服務
[root@CentOS ~]# service nfs restart
2、添加防火牆規則
[root@CentOS ~]# iptables -I INPUT -p tcp --dport 111 -j ACCEPT
[root@CentOS ~]# iptables -I INPUT -p udp --dport 111 -j ACCEPT
[root@CentOS ~]# iptables -I INPUT -p tcp --dport 2049 -j ACCEPT
[root@CentOS ~]# iptables -I INPUT -p udp --dport 2049 -j ACCEPT
[root@CentOS ~]# iptables -I INPUT -p tcp --dport 875 -j ACCEPT
[root@CentOS ~]# iptables -I INPUT -p udp --dport 875 -j ACCEPT
[root@CentOS ~]# iptables -I INPUT -p tcp --dport 32923 -j ACCEPT
[root@CentOS ~]# iptables -I INPUT -p udp --dport 32923 -j ACCEPT
[root@CentOS ~]# iptables -I INPUT -p tcp --dport 32829 -j ACCEPT
[root@CentOS ~]# iptables -I INPUT -p udp --dport 44604 -j ACCEPT
開放上面的端口,客戶端就可以正常用了,需要注意的是添加規則時候最好把規則添加到最前面用-I不要用-A要不然很可能被前面的規則屏蔽了。