NFS 服务器和 firewalld

daf*_*ydd 19 rhel file-server centos nfs firewalld

我还没有找到有关此的灌篮文档,所以让我们开始吧。

在 CentOS 7.1 主机上,我已经阅读了 linuxconfig HOW-TO,包括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
Run Code Online (Sandbox Code Playgroud)

但是,如果我showmount从客户端,我仍然有问题。

[root@<client> ~]# showmount -e <server>.localdomain
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
Run Code Online (Sandbox Code Playgroud)

现在,我如何确定这是防火墙问题?简单。关闭防火墙。服务器端:

[root@<server> ~]# systemctl stop firewalld
Run Code Online (Sandbox Code Playgroud)

和客户端:

[root@<client> ~]# showmount -e <server>.localdomain
Export list for <server>.localdomain:
/export/home/<server> *.localdomain
Run Code Online (Sandbox Code Playgroud)

重启firewalld。服务器端:

[root@<server> ~]# systemctl start firewalld
Run Code Online (Sandbox Code Playgroud)

和客户端:

[root@<client> ~]# showmount -e <server>.localdomain
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
Run Code Online (Sandbox Code Playgroud)

所以,让我们去镇上,通过调整来自 RHEL 6 NFS 服务器iptables 命令 HOW-TO ...

[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: 
Run Code Online (Sandbox Code Playgroud)

这一次,我从客户端收到了稍微不同的错误消息:

[root@<client> ~]# showmount -e <server>.localdomain
rpc mount export: RPC: Unable to receive; errno = No route to host
Run Code Online (Sandbox Code Playgroud)

所以,我知道我在正确的轨道上。话虽如此,为什么我在任何地方都找不到关于此的权威教程?我不可能是第一个解决这个问题的人!

firewall-cmd我缺少哪些条目?

哦,还有一张纸条。/etc/sysconfig/nfs到目前为止,我在 CentOS 6 客户端和 CentOS 7 服务器上的文件未修改。如果可能的话,我宁愿不必更改(和维护!)它们。

小智 47

这应该足够了:

firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=mountd
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --reload
Run Code Online (Sandbox Code Playgroud)


小智 6

配置 NFS 服务器后,我们应该启用并启动三个服务:

  1. nfs-server.service
  2. rpcbind.service
  3. nfs-mountd.service(只需要启动)

并在服务器防火墙上允许这些服务:

# firewall-cmd --permanent --add-service=nfs
# firewall-cmd --permanent --add-service=rpcbind
# firewall-cmd --permanent --add-service=mountd
# firewall-cmd --reload
Run Code Online (Sandbox Code Playgroud)