快捷搜索:   nginx

Linux NFS服务器和防火墙配置

 NFS依赖portmap分配它监听的端口。这些端口是动态分配的,所以每次NFS重启后,端口都会改变。这使得在只允许访问系统指定端口的后运行一个NFS变得困难。

 解决:

 第一步是分配一个永久端口号给每个NFS服务(rquotad, mountd, statd, and lockd)。因为它们能使用任何高于1024的没有被使用的端口,建议你首先查看/etc/services文件来找到一个有效的没有使用的端口范围。下面的例子使用10000-10005。

 这些端口大部分在/etc/sysconfig/nfs文件里被。如果它不存在就创建它。它看起来像这样:

 # NFS port numbers

 STATD_PORT=10002

 STATD_OUTGOING_PORT=10003

 MOUNTD_PORT=10004

 RQUOTAD_PORT=10005

 lockd服务和其他服务配置不同,因为它是一个核心模块。要设置lockd使用的端口,在/etc/sysconfig/nfs文件里添加这些选项:

 LOCKD_UDPPORT=30001

 LOCKD_TCPPORT=30001

 这里"30001"可以被替换成任何可用并且可以被分配使用的端口。

 做完这些配置改变后,你可以用命令 rpcinfo -p <hostname> 来查看端口分配情况:

 # rpcinfo -p localhost

    program vers proto   port

     100000    2       111 portmapper

     100000    2   udp    111 portmapper

     100021    1   udp 10001 nlockmgr

     100021    3   udp 10001 nlockmgr

     100021    4   udp 10001 nlockmgr

     100021    1   tcp 10000 nlockmgr

     100021    3   tcp 10000 nlockmgr

     100021    4   tcp 10000 nlockmgr

     100024    1   udp 10002 status

     100024    1   tcp 10002 status

     100011    1   udp 10005 rquotad

     100011    2   udp 10005 rquotad

     100011    1   tcp 10005 rquotad

     100011    2   tcp 10005 rquotad

     100003    2   udp   2049 nfs

     100003    3   udp   2049 nfs

     100003    4   udp   2049 nfs

     100003    2   tcp   2049 nfs

     100003    3   tcp   2049 nfs

     100003    4   tcp   2049 nfs

     100005    1   udp 10004 mountd

     100005    1   tcp 10004 mountd

     100005    2   udp 10004 mountd

     100005    2   tcp 10004 mountd

     100005    3   udp 10004 mountd

     100005    3   tcp 10004 mountd

 这样,当NFS重启后端口将会保留。下面是在防火墙上需要被打开的端口列表:

    * 111: portmap (tcp/udp)

    * 2049: nfs (tcp/udp)

    * 10000: example lockd (tcp)

    * 10001: example lockd (udp)

    * 10002: example statd/status (tcp/udp)

    * 10003: example statd/status outgoing (tcp/udp)

    * 10004: example mountd (tcp/udp)

    * 10005: example rquotad (tcp/udp)

 你现在可以在防火墙上打开这些端口,来允许远方的客户端挂载服务器上的共享输出了。如果你使用,可以用下面的命令来增加输入/输出规则,来允许访问这些端口。注意这只是一个例子,你的防火墙规则可能不一样:

 # iptables -A INPUT -p tcp -m tcp --dport 111 -j ACCEPT

 # iptables -A INPUT -p udp -m udp --dport 111 -j ACCEPT

 # iptables -A INPUT -p tcp -m tcp --dport 2049 -j ACCEPT

 # iptables -A INPUT -p udp -m udp --dport 2049 -j ACCEPT

 # iptables -A INPUT -p tcp -m tcp --dport 10000 -j ACCEPT

 # iptables -A INPUT -p udp -m udp --dport 10001 -j ACCEPT

 # iptables -A INPUT -p tcp -m tcp --dport 10002:10005 -j ACCEPT

 # iptables -A INPUT -p udp -m udp --dport 10002:10005 -j ACCEPT

 # iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

 # iptables -A INPUT -j REJECT --reject-with icmp-port-unreachable

 # iptables -A OUTPUT -p tcp -m tcp --dport 111 -j ACCEPT

 # iptables -A OUTPUT -p udp -m udp --dport 111 -j ACCEPT

 # iptables -A OUTPUT -p tcp -m tcp --dport 2049 -j ACCEPT

 # iptables -A OUTPUT -p udp -m udp --dport 2049 -j ACCEPT

 # iptables -A OUTPUT -p tcp -m tcp --dport 10000 -j ACCEPT

 # iptables -A OUTPUT -p udp -m udp --dport 10001 -j ACCEPT

 # iptables -A OUTPUT -p tcp -m tcp --dport 10002:10005 -j ACCEPT

 # iptables -A OUTPUT -p udp -m udp --dport 10002:10005 -j ACCEPT

 # iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

 # iptables -A OUTPUT -j REJECT --reject-with icmp-port-unreachable

 注意:没有指明用tcp选项的挂载请求会缺省使用udp。

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论