NFS-Server und Firewall


16

Ich habe kein Slam-Dunk-Dokument zu diesem Thema gefunden. Beginnen wir also mit einem.

Auf einem CentOS 7.1-Host habe ich das HOW-TO für linuxconfig einschließlich der firewall-cmdEinträge durchgearbeitet und besitze ein exportierbares Dateisystem.

[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

Wenn ich jedoch showmountvom Klienten komme, habe ich immer noch ein Problem.

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

Wie kann ich sicher sein, dass dies ein Firewall-Problem ist? Einfach. Schalten Sie die Firewall aus. Serverseite:

[root@<server> ~]# systemctl stop firewalld

Und clientseitig:

[root@<client> ~]# showmount -e <server>.localdomain
Export list for <server>.localdomain:
/export/home/<server> *.localdomain

Starten Sie die Firewall neu. Serverseite:

[root@<server> ~]# systemctl start firewalld

Und clientseitig:

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

Also, lasst uns in die Stadt gehen, indem wir die iptables-Befehle von einem RHEL 6 NFS-Server anpassen. 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: 

Dieses Mal erhalte ich eine etwas andere Fehlermeldung vom Client:

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

Ich weiß also, dass ich auf dem richtigen Weg bin. Warum kann ich trotzdem nirgendwo ein endgültiges Tutorial dazu finden? Ich kann nicht der erste gewesen sein, der das herausgefunden hat!

Welche firewall-cmdEinträge fehlen mir?

Oh, noch eine Notiz. Meine /etc/sysconfig/nfsDateien auf dem CentOS 6-Client und dem CentOS 7-Server wurden bisher nicht geändert. Ich würde es vorziehen, sie nicht ändern (und warten!) Zu müssen, wenn dies überhaupt möglich ist.

Antworten:


40

Das sollte reichen:

firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=mountd
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --reload

In meinem Fall nicht genug. Ich habe zwei NFS-Server, der erste sendet korrekt und wird von seinen Clients abonniert, der zweite sendet anscheinend in Ordnung, aber sein Client (der erste Server) kann nicht 'showmount' (rpc mount export: RPC: Unable to) receive; errno = Keine Route zum Host). Ich werde hier zurückkehren, wenn ich das löse.
Urhixidur

Es stellt sich heraus, dass der SERVER die drei Dienste (nfs, mountd, rpc-bind) benötigt, die zu seiner Firewall hinzugefügt wurden (keine Ahnung, wenn der Client auch alle drei benötigt; in meinem Fall hat er nur alle drei). In meinem Fall hatte der Client (erster NFS-Server) es aber dem Server (zweiter NFS-Server) fehlte mountd.
Urhixidur

@Urhixidur sollte der Client diese nicht benötigen, da Firewalld ausgehende Verbindungen zulässt.
T0xicCode

Beachten Sie die Schreibweise von rpc-bind. Obwohl ich es mit systemctl enable rpcbindund aktiviert habe systemctl start rpcbind, hat mir firewall-cmd gesagt Error: INVALID_SERVICE: rpcbind. Bald wurde mir klar, dass es in diesem Zusammenhang einen Strich braucht! Sind sie wirklich der gleiche Dienst?
Qwertie

5

Nach der Konfiguration des NFS-Servers sollten drei Dienste aktiviert und gestartet werden:

  1. nfs-server.service
  2. rpcbind.service
  3. nfs-mountd.service (nur der Start ist erforderlich)

Und erlauben Sie auch diese Dienste auf der Server-Firewall:

# firewall-cmd --permanent --add-service=nfs
# firewall-cmd --permanent --add-service=rpcbind
# firewall-cmd --permanent --add-service=mountd
# firewall-cmd --reload

4

Habe dies gerade gefunden - und es funktioniert, wenn SELinux das Lesen der ~ / .ssh / authorized_keys während der Anmeldung blockiert! Stellen Sie zunächst sicher, dass Ihre ~ / .ssh / authorized_keys-Datei ordnungsgemäß ausgefüllt ist und die Berechtigungen und die Berechtigungen des Ordners korrekt festgelegt sind. Wenn Sie dann "setenforce 0" auf dem SSH-Zielhost ausführen und sich ohne Eingabe eines Kennworts bei diesem Host anmelden können, dies jedoch nach Eingabe von "setenforce 1" auf demselben Zielhost nicht möglich ist, kann Folgendes Ihr Problem beheben:

setsebool -P use_nfs_home_dirs 1

Ref: https://cassjohnston.wordpress.com/2015/06/12/selinux-nfs-home-directories/


0

Ich benutze NFSV4 und funktioniert gut mit diesen Zeilen, vorausgesetzt, Ihre Zone ist "öffentlich" und Sie verwenden die Standard-Ports 2049 und 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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.