这两天在做服务器上的iptables,后来做到一台有NFS服务器的时候发现一个问题NFS共享挂载磁盘的时候有随机端口,这个就有点坑了,要做iptables就是要对端口和ip的访问做控制,结果端口还是随机的这怎么办,于是就上网去恶补了下NFS的知识也去查阅了大量的资料,最后总算是找到方法,好了废话不多说直接进入正题。

    1、首先你要先检查下服务器上是否有安装过NFS、portmap,一般服务器上默认都有,不过还是要检查下,这里NFS服务是192.168.168.253,需要使用共享文件夹的服务器是192.168.168.254

[root@test ~]# rpm -qa | grep nfs
nfs-utils-lib-1.0.8-7.6.el5
nfs-utils-1.0.9-50.el5
[root@test ~]# rpm -qa | grep portmap
portmap-4.0-65.2.2.1

    2、修改NFS的主要配置,共享挂载磁盘最主要就是靠这个文件了

[root@test ~]# vim /etc/exports
/data/  192.168.168.254(rw,no_root_squash,no_all_squash,sync)

这里前面的路径是本地要共享的文件夹 后面是是需要使用共享文件夹的服务器IP和一些配置参数

这些的参数可以参考此图自鸟哥的网站:

wKioL1ebG9bwWSoYAAByiBf5boc286.png

[root@test ~]# service portmap start
启动 portmap:                                             [确定]
[root@test ~]# service nfs start
启动 NFS 服务:                                            [确定]
关掉 NFS 配额:                                            [确定]
启动 NFS 守护进程:                                        [确定]
启动 NFS mountd:                                          [确定]

启动后在另外一台服务器上也开启以上2个服务后,用mount挂载共享磁盘

[root@test ~]#mount 192.168.168.253:/data/ /data/253_data/

好了文件挂载上2台服务上的文件实现共享,使用很方便,但是现在NFS服务端口还有随机的,一共有用到5个端口其中 portmapper nfs 的服务端口是固定的 111 2049,另外 rquotad nlockmgr mountd 这3个服务端口是随机的,这样让我们的iptables无法设置,所以这时就要配置/etc/sysconfig/nfs文件使rquotad nlockmgr mountd这3个服务端口固定

[root@test ~]# vim /etc/sysconfig/nfs
# Port rquotad should listen on.
RQUOTAD_PORT=875
# TCP port rpc.lockd should listen on.
LOCKD_TCPPORT=32803
# UDP port rpc.lockd should listen on.
LOCKD_UDPPORT=32769
# Port rpc.mountd should listen on.
MOUNTD_PORT=892

以上4项,把#注释去掉来固定4个端口号,最后在重启下nfs服务

[root@test ~]# service nfs restart

ok,如此NFS服务器的端口就被固定了,可以通过查看程序的协议连接

[root@test ~]# rpcinfo -p localhost
   程序 版本 协议   端口    
   100000    2   tcp    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    
   100003    2   udp   2049  nfs    
   100003    3   udp   2049  nfs    
   100003    4   udp   2049  nfs    
   100021    1   udp  32769  nlockmgr    
   100021    3   udp  32769  nlockmgr    
   100021    4   udp  32769  nlockmgr    
   100021    1   tcp  32803  nlockmgr    
   100021    3   tcp  32803  nlockmgr    
   100021    4   tcp  32803  nlockmgr    
   100003    2   tcp   2049  nfs    
   100003    3   tcp   2049  nfs    
   100003    4   tcp   2049  nfs    
   100005    1   udp    892  mountd    
   100005    1   tcp    892  mountd    
   100005    2   udp    892  mountd    
   100005    2   tcp    892  mountd    
   100005    3   udp    892  mountd    
   100005    3   tcp    892  mountd

如此就固定了NFS服务器的端口

    3、需要在iptables上开放的端口

[root@test ~]# vim /etc/sysconfig/iptables
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -s 192.168.168.0/24 -d 192.168.168.253 -p icmp -j ACCEPT
-A INPUT -s 192.168.168.0/24 -d 192.168.168.253 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp -m multiport --dports 111,875,892,2049,32769,32803 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp -m multiport --dports 111,875,892,2049,32769,32803 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

开启111、875、892、2049、3269、32803这几个端口

[root@test ~]# service iptables restart

ok就搞定了