加载中…
个人资料
_src
_src
  • 博客等级:
  • 博客积分:0
  • 博客访问:2,065
  • 关注人气:30
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

NFS挂载timeout与iptables问题

(2014-10-22 18:28:07)
标签:

nfs

挂载

time

out

iptables

分类: Ubuntu/Debian

NFS挂载timeout与iptables问题

问题

一台机器A上搭建NFS作为server,在另外一台机器B上进行挂载

iptables规则加上了加上了portmap(111)nfsd(2049)对应的端口,然后将其他的禁用

开启iptables时,在机器B上挂载显示 mount.nfs: Connection timed out

关闭iptables就可以正常挂载

系统:debian7 64bit


分析

机器A ip:192.168.1.10
机器B ip:192.168.1.11

在机器A上查看端口监听情况:


# netstat -ltnp 
tcp    0      0 0.0.0.0:111         0.0.0.0:*      LISTEN      913/portmap
tcp    0      0 0.0.0.0:59827       0.0.0.0:*      LISTEN      19162/rpc.statd
tcp    0      0 0.0.0.0:36733       0.0.0.0:*      LISTEN      -
tcp    0      0 0.0.0.0:45861       0.0.0.0:*      LISTEN      11638/rpc.mountd
tcp    0      0 0.0.0.0:2049        0.0.0.0:*      LISTEN      -

在机器B上检查服务端状态:


# rpcinfo -p 192.168.1.10
  program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100021    1   udp  47777  nlockmgr
    100021    4   tcp  36733  nlockmgr
    100024    1   udp  44089  status
    100024    1   tcp  59827  status
    100003    2   tcp   2049  nfs
    100003    4   udp   2049  nfs
    100005    3   udp  45861  mountd
    100005    3   tcp  45861  mountd
# showmount -e 192.168.1.10
rpc mount export: RPC: Unable to receive; errno = Connection refused

可以看出,iptables确实开放少了端口主要是mountd的端口

因为设置的iptables规则需求是严格的,只开放需要开放的端口,其他全部关掉

但由于这个端口是随机开放的,没法在iptables指定好端口。


解决

找到了官方相关的文档 https://wiki.debian.org/SecuringNFS

发现是可以指定固定的监听端口,于是开始动手

主要是修改nfs的相关配置,具体文件位于/etc/default目录下

修改内容如下:

1、指定statd运行端口


# /etc/default/nfs-common  
STATDOPTS="--port 32765 --outgoing-port 32766"

2、指定mountd运行端口(将原来的参数值删掉)


# /etc/default/nfs-kernel-server
RPCMOUNTDOPTS="-p 32767"

3、指定quotad运行端口(我的系统没有这个文件,直接新建一个)


# /etc/default/quota
RPCRQUOTADOPTS="-p 32769"

4、重启nfs服务


/etc/init.d/nfs-kernel-server restart

开放iptables端口


 # Allow nfs mounts to local network
 ACCEPT          fw      loc             udp     111
 ACCEPT          fw      loc             tcp     111
 ACCEPT          fw      loc             tcp     2049
 ACCEPT          fw      loc             udp     2049
 ACCEPT          fw      loc             tcp     32764:32769
 ACCEPT          fw      loc             udp     32764:32769

检查
在机器B上分别执行


# rpcinfo -p 192.168.1.10
  program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100021    1   udp  49346  nlockmgr
    100021    4   tcp  39414  nlockmgr
    100024    1   udp  51473  status
    100024    1   tcp  57346  status
    100003    2   tcp   2049  nfs
    100003    4   udp   2049  nfs
    100005    3   udp  32767  mountd
    100005    3   tcp  32767  mountd

可以看出 mountd已经在我们指定的端口32767上运行


# showmount -e 192.168.1.10
Export list for 192.168.1.10:
/home/user/project1 192.168.1.11
/home/user/project2 192.168.1.11

showmount命令也能正常显示远程系统可以被挂载的目录

执行挂载


mount -t nfs 192.168.1.10:/home/user/project1 /tmp/project1
mount -t nfs 192.168.1.10:/home/user/project2 /tmp/project2

正常挂载,至此,问题解决。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有