我还没有找到关于此的灌篮文档,所以让我们开始一个。
在 CentOS 7.1 主机上,我经历过linuxconfig 操作方法,包括firewall-cmd
条目,并且我有一个可导出的文件系统。
[root@<server> ~]# firewall-cmd --list-all
internal (default, active)
interfaces: enp5s0
sources: 192.168.10.0/24
services: dhcpv6-client ipp-client mdns ssh
ports: 2049/tcp
masquerade: no
forward-ports:
rich rules:
[root@<server> ~]# showmount -e localhost
Export list for localhost:
/export/home/<user> *.localdomain
但是,如果我showmount
来自客户端,我仍然有问题。
[root@<client> ~]# showmount -e <server>.localdomain
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
现在,我如何确定这是防火墙问题?简单的。关闭防火墙。服务器端:
[root@<server> ~]# systemctl stop firewalld
和客户端:
[root@<client> ~]# showmount -e <server>.localdomain
Export list for <server>.localdomain:
/export/home/<server> *.localdomain
重新启动防火墙。服务器端:
[root@<server> ~]# systemctl start firewalld
和客户端:
[root@<client> ~]# showmount -e <server>.localdomain
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
那么,让我们进城吧,通过调整来自 RHEL 6 NFS 服务器的 iptables 命令操作方法...
[root@ ~]# firewall-cmd \
> --add-port=111/tcp \
> --add-port=111/udp \
> --add-port=892/tcp \
> --add-port=892/udp \
> --add-port=875/tcp \
> --add-port=875/udp \
> --add-port=662/tcp \
> --add-port=662/udp \
> --add-port=32769/udp \
> --add-port=32803/tcp
success
[root@<server> ~]# firewall-cmd \
> --add-port=111/tcp \
> --add-port=111/udp \
> --add-port=892/tcp \
> --add-port=892/udp \
> --add-port=875/tcp \
> --add-port=875/udp \
> --add-port=662/tcp \
> --add-port=662/udp \
> --add-port=32769/udp \
> --add-port=32803/tcp \
> --permanent
success
[root@<server> ~]# firewall-cmd --list-all
internal (default, active)
interfaces: enp5s0
sources: 192.168.0.0/24
services: dhcpv6-client ipp-client mdns ssh
ports: 32803/tcp 662/udp 662/tcp 111/udp 875/udp 32769/udp 875/tcp 892/udp 2049/tcp 892/tcp 111/tcp
masquerade: no
forward-ports:
rich rules:
这次,我从客户端收到了略有不同的错误消息:
[root@<client> ~]# showmount -e <server>.localdomain
rpc mount export: RPC: Unable to receive; errno = No route to host
所以,我知道我走在正确的道路上。话虽如此,为什么我在任何地方都找不到这方面的权威教程呢?我不可能是第一个必须弄清楚这一点的人!
firewall-cmd
我缺少哪些条目?
哦,还有一个注释。/etc/sysconfig/nfs
到目前为止,我在CentOS 6客户端和CentOS 7服务器上的文件没有被修改。如果可能的话,我宁愿不必更改(和维护!)它们。
答案1
这应该足够了:
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=mountd
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --reload
答案2
配置 NFS 服务器后,我们应该启用并启动三个服务:
- nfs-服务器.service
- rpcbind服务
- nfs-mountd.service(只需启动)
并且还允许服务器防火墙上的这些服务:
# firewall-cmd --permanent --add-service=nfs
# firewall-cmd --permanent --add-service=rpcbind
# firewall-cmd --permanent --add-service=mountd
# firewall-cmd --reload
答案3
刚刚发现这个 - 当问题是 SELinux 在登录期间阻止读取 ~/.ssh/authorized_keys 时它就可以工作了!首先,请确保您的 ~/.ssh/authorized_keys 文件已正确填充,并且其权限及其文件夹的权限已正确设置。如果您随后在 SSH 目标主机上运行“setenforce 0”并且能够在不输入密码的情况下登录该主机,但在同一目标主机上输入“setenforce 1”后无法登录,则以下操作可能会解决您的问题:
setebool -P use_nfs_home_dirs 1
参考:https://cassjohnston.wordpress.com/2015/06/12/selinux-nfs-home-directories/
答案4
我使用 nfsv4 并且可以很好地处理这些线路,假设您的区域是“公共”并且您使用默认端口 2049 和 4001
firewall-cmd --permanent --add-service=nfs --zone=public
firewall-cmd --permanent --add-service=mountd --zone=public
firewall-cmd --permanent --add-service=rpc-bind --zone=public
firewall-cmd --permanent --add-port=4001/udp --zone=public
firewall-cmd --permanent --add-port=4001/tcp --zone=public
firewall-cmd --permanent --add-port=2049/tcp --zone=public
firewall-cmd --permanent --add-port=2049/udp --zone=public
firewall-cmd --reload
我忘记了一件重要的事情:为 mountd 设置静态端口很有用,这样您就可以用来showmount -e
查看共享。我个人使用34777
root 1873 1 0 21:11 ? 00:00:00 /usr/sbin/rpc.mountd -p 34777
所以你将在防火墙上打开端口
firewall-cmd --permanent --add-port=34777/udp --zone=public
firewall-cmd --permanent --add-port=34777/tcp --zone=public
挂载端口的配置与发行版不同,有些使用 /etc/sysconfig,有些使用 /etc/default,有些需要编辑脚本。检查您的发行版的文档。