showmount -e 从一个节点失败

showmount -e 从一个节点失败

当我跑步时:

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

相关内容