Chinaunix

标题: 关于NFS设置防火墙的问题 [打印本页]

作者: wyp2001    时间: 2007-08-06 15:30
标题: 关于NFS设置防火墙的问题
大家好,我配置好了NFS伺服器,

# vi /etc/exports
/tmp *(ro,all_squash)
/var/ftp/pub 192.168.0.210(ro,all_squash)
/home/upload 192.168.0.210(rw,all_squash,anonuid=210,anongid=210)

但在防火牆的設定上遇到了一些麻煩,希望知道的能指點一二,我的iptable如下:

Iptables –L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain RH-Firewall-1-INPUT (2 references)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 255
ACCEPT     esp  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     ah   --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     udp  --  0.0.0.0/0            224.0.0.251         udp dpt:5353
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:631
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:631
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:21
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           state NEW udp dpt:2049
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           state NEW udp dpt:137
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           state NEW udp dpt:138
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:139
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:445
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:23
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:80
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:111
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           state NEW udp dpt:111
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

在用戶端執行如下操作出現以下情況:
# mount -t nfs 192.168.0.204:/home/upload/ /tmp
mount: mount to NFS server '192.168.0.204' failed: System Error: No route to host.

# showmount -e 192.168.0.204
rpc mount export: RPC: Unable to receive; errno = No route to host

有哪位兄弟知道原因吗?
作者: wyp2001    时间: 2007-08-07 17:11
停止防火墙,在客户端是可以挂载的,问题就在防火墙,NFS在启动时除了2049和111两个固定端口外,还会产生很多随机端口,参照网上一位前辈的指点,如果把mountd, statd, lockd 三个固定在某个port上,方法如下:

# vi /etc/sysconfig/nfs
MOUNTD_PORT="4002"
STATD_PORT="4003"
LOCKD_TCPPORT="4004"
LOCKD_UDPPORT="4004"
# service nfs restart

并在防火墙中开放相应端口,发现还是不能挂载,CU上有知道原因的朋友吗,麻烦指点一下,多谢了!
作者: wyp2001    时间: 2007-08-08 08:45
CU没有人知道么???
作者: mxbao    时间: 2007-08-08 10:32
不知道nfs用的什么端口
你要不直接就认证源地址,不设置端口,试试看
作者: wyp2001    时间: 2007-08-09 09:27
不知道nfs用的什么端口
你要不直接就认证源地址,不设置端口,试试看


谢谢!
你的方法肯定是没有问题的,这样做就开放了源地址的所有端口吧,这样似乎不是很安全!
作者: lihualoveyou    时间: 2008-06-02 11:49
在设置了防火墙的环境中使用NFS,需要在防火墙上打开如下端口:

1. portmap 端口 111 udp/tcp;Fz4Linux联盟
2. nfsd 端口 2049 udp/tcp;Fz4Linux联盟
3. mountd 端口 "xxx" udp/tcpFz4Linux联盟
系统 RPC服务在 nfs服务启动时默认会为 mountd动态选取一个随机端口(32768--65535)来进行通讯,我们可以通过编辑/etc/services 文件为 mountd指定一个固定端口:Fz4Linux联盟
# vi /etc/servicesFz4Linux联盟
在末尾添加 Fz4Linux联盟
mountd 1011/udpFz4Linux联盟
mountd 1011/tcpFz4Linux联盟
保存该文件Fz4Linux联盟
# stopsrc -s rpc.mountdFz4Linux联盟
# startsrc -s rpc.mountdFz4Linux联盟
# exportfs -aFz4Linux联盟
# rpcinfo -p HostnameFz4Linux联盟
现在我们会发现 mountd已经和端口 1011绑定了。

另外,nfs中需要通讯的服务还有 rpc.lockd和 rpc.statd,其中对lockd我们可以用类似的方法来指定固定端口,Fz4Linux联盟
# vi /etc/servicesFz4Linux联盟
添加Fz4Linux联盟
lockd 35000/ucpFz4Linux联盟
lockd 35000/tdpFz4Linux联盟
# stopsrc -s rpc.lockdFz4Linux联盟
# startsrc -s rpc.lockdFz4Linux联盟
# exportfs -aFz4Linux联盟
nfs客户端mount文件系统Fz4Linux联盟
# rpcinfo -p Hostname

但 rpc.statd无法通过该方法来指定端口,它只能使用随机端口,如有必要,在防火墙上要根据下面命令的显示来开放随机端口:

# no -a |grep ephemeralFz4Linux联盟
tcp_ephemeral_high = 65535Fz4Linux联盟
tcpp_ephemeral_low = 32768Fz4Linux联盟
udp_ephemeral_high = 65535Fz4Linux联盟
udp_ephemeral_low = 32768

当然也可以不开放 rpc.statd需要的随机端口,带来的影响就是如果 nfs连接中断(比如server或client宕掉了),系统将无法通过statd来恢复连接中断前的状态,而必须重新 mount该nfs文件系统。


我试过,这样做可以解决大部分问题
作者: joy167270    时间: 2008-06-04 15:13
看了写的好麻烦,楼主直接又iptables 写ACL不就行了吗,何必开Firewall
iptables -P INPUT DROP
iptables -A INPUT -m state --state ESTAHLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

首先开启portmap 服务
service portmap start

iptables -A INPUT -p TCP --dport 111 -m state --state NEW -j ACCEPT
iptables -A INPUT -p UDP --dport 111 -m state --state NEW -j ACCEPT

编辑# vi /etc/sysconfig/nfs
MOUNTD_PORT="4002"
STATD_PORT="4003"
LOCKD_TCPPORT="4004"
LOCKD_UDPPORT="4004"

service nfs start

iptables -A INPUT -p TCP --dport 2049 -m state --state NEW -j ACCEPT
iptables -A INPUT -p UDP --dport 2049 -m state --state NEW -j ACCEPT
iptables -A INPUT -p TCP --dport 4002:4004 -m state --state NEW -j ACCEPT
iptables -A INPUT -p UDP --dport 4004 -m sate --state NEW -j ACCEPT

[ 本帖最后由 joy167270 于 2008-6-4 15:14 编辑 ]




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2