当我跑步时:
showmount -e <IP>
rpc mount export: RPC: Unable to receive; errno = Connection reset by peer
mount <IP>:/path /mnt
mount.nfs: Connection reset by peer
但
mount -t nfs -c vers=3 <IP>:/path /mnt
作品
客户端和服务器(freenas 9.3)位于同一子网。如何解决这个问题?
答案1
确保数据包没有被防火墙阻止。我建议iptables -L -v
在发出showmount
命令之前和之后发出。如果您看到左侧的计数器因 DROP 规则而增加,则很可能需要插入一条规则以允许 NFS 客户端连接。以下是来自http://www.cyberciti.biz/faq/centos-fedora-rhel-iptables-open-nfs-server-ports/:
端口映射器在服务启动时动态地为每个 NFS 服务分配一个端口。如何允许合法的 NFS 客户端使用 RHEL / Fedora / CentOS Linux 5.x iptables 防火墙访问 NFS 服务器?
您需要打开以下端口:a] TCP/UDP 111 - RPC 4.0 端口映射器
b] TCP/UDP 2049 - NFSD(nfs 服务器)
c] Portmap 静态端口 - /etc/sysconfig/nfs 文件中定义的各种 TCP/UDP 端口。配置 NFS 服务以使用固定端口
但是,NFS 和端口映射是相当复杂的协议。应该在每个主机和边界防火墙上设置防火墙,以保护 NFS 守护进程免受远程访问,因为 NFS 服务器永远不能从组织外部访问。但是,默认情况下,端口映射器会在服务启动时动态地将每个 NFS 服务分配给一个端口。
动态端口无法通过 iptables 等端口过滤防火墙进行保护。首先,您需要配置 NFS 服务以使用固定端口。打开 /etc/sysconfig/nfs,输入:
# vi /etc/sysconfig/nfs
修改配置指令如下,以设置 TCP/UDP 未使用的端口:
# TCP port rpc.lockd should listen on. LOCKD_TCPPORT=lockd-port-number # UDP port rpc.lockd should listen on. LOCKD_UDPPORT=lockd-port-number # Port rpc.mountd should listen on. MOUNTD_PORT=mountd-port-number # Port rquotad should listen on. RQUOTAD_PORT=rquotad-port-number # Port rpc.statd should listen on. STATD_PORT=statd-port-number # Outgoing port statd should used. The default is port is random STATD_OUTGOING_PORT=statd-outgoing-port-numbe
下面是我的一个生产 NFS 服务器的示例列表:
LOCKD_TCPPORT=32803 LOCKD_UDPPORT=32769 MOUNTD_PORT=892 RQUOTAD_PORT=875 STATD_PORT=662 STATD_OUTGOING_PORT=2020
保存并关闭文件。重新启动 NFS 和 portmap 服务:
# service portmap restart # service nfs restart # service rpcsvcgssd restart Update /etc/sysconfig/iptables files
打开/etc/sysconfig/iptables,输入:
# vi /etc/sysconfig/iptables
添加以下行,确保它们出现在 RH-Firewall-1-INPUT 链的最终 LOG 和 DROP 行之前:
-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 111 -j ACCEPT -A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 111 -j ACCEPT -A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 2049 -j ACCEPT -A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 32803 -j ACCEPT -A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 32769 -j ACCEPT -A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 892 -j ACCEPT -A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 892 -j ACCEPT -A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 875 -j ACCEPT -A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 875 -j ACCEPT -A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 662 -j ACCEPT -A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 662 -j ACCEP
保存并关闭文件。将 192.168.1.0/24 替换为您的实际 LAN 子网/掩码组合。您需要使用 /etc/sysconfig/nfs 配置文件定义的静态端口值。重新启动 iptables 服务:
# service iptables restart