Frage Welche Ports muss ich in der Firewall öffnen, um NFS zu verwenden?


Ich benutze Ubuntu 11.10 - Einrichten von NFS, um ein Verzeichnis unter vielen anderen Servern zu teilen. Welche Ports müssen auf der Firewall geöffnet sein?


55
2018-04-05 21:01


Ursprung


Es hängt von der Version des Protokolls ab, das Sie verwenden möchten. NFS 4 benötigt nur 2049, während ältere Versionen mehr benötigen. - lzap


Antworten:


rpcinfo -p | grep nfs

Port 111 (TCP und UDP) und 2049 (TCP und UDP) für den NFS-Server.

Es gibt auch Ports für den Cluster- und Client-Status (Port 1110 TCP für den ersten und 1110 UDP für den letzteren) sowie einen Port für den NFS-Lock-Manager (Port 4045 TCP und UDP). Nur Sie können bestimmen, welche Ports Sie zulassen müssen, abhängig davon, welche Dienste über das Gateway hinweg benötigt werden.


80
2018-04-05 21:03



Ich wusste nichts über rpcinfo, das ist ziemlich nützlich. Ich habe den Port 111 nicht mit der grep nfs, aber ich habe den Grep verlassen, um zu erfahren, dass 111 dafür ist portmapper. Auch gut zu wissen! (und wie du erwähnt hast, notwendig) - kenny
@KennyYounger rpcinfo ist auch nützlich. Wenn dies Ihre Frage beantwortet, vergessen Sie nicht, sie als die Antwort für zukünftige Zuschauer zu markieren. - Wesley
Sie benötigen mountd open, wenn Sie das Dateisystem zum ersten Mal mounten. Es läuft auf einem dynamischen Port, daher wird es nicht immer derselbe sein. Ich habe in meiner Antwort einen Link zu einem Leitfaden eingefügt. - bonsaiviking
@bonsaiviking Ausgezeichnet! Vielen Dank. - Wesley
Danke @bonsaiviking. Wichtige Informationen für diesen Prozess. Ich habe deine Antwort erneuert! - kenny


Zusätzlich zu 111 für Portmapper und 2049 für Nfs müssen Sie den mountd-Port und möglicherweise rquotad, lockd und statd zulassen, die alle dynamisch sein können. Dieser ausgezeichnete NFS Sicherheitsleitfaden empfiehlt, die Startskripts und Kernelmodulkonfigurationen so zu ändern, dass sie statische Ports verwenden.

Zusätzlich zu der obigen Anleitung, die hat ein Abschnitt über Firewalls, sehen meine Antwort zu einer anderen Frage über das Verhärten von NFS.


21
2018-04-05 21:22



Wir bevorzugen wirklich Inhalte, keine Hinweise auf Inhalte. Eine Précis des Inhalts mit einem Link ist ebenfalls in Ordnung und wird einem Link vorgezogen. - Iain
Ich bin mir nicht sicher über 2012, aber die Empfehlung in Links scheint völlig veraltet zu sein. NFS über TCP wird aus verschiedenen Gründen bevorzugt, und NFS über UDP kann aufgrund von Protokolleinschränkungen zu stummen Datenbeschädigungen bei schnellen Verbindungen führen. Sicherheitsleitfaden hat Kerberos / GSS etc. nicht erwähnt - Maciej Piechotka


Ich fand auf dieser Seite nützliche Anweisungen für mein Problem, aber es gab kein einfach zu befolgendes Rezept. Also hier ist mein Rezept.

TL; DR - müssen beide NFS-Ports (111, 2049) und Mount-Port nach der Fixierung zulassen.

Anleitung:


Einrichten eines festen Ports für Mountd

gksudo gedit /etc/default/nfs-kernel-server
  • Kommentiere diese Zeile aus: RPCMOUNTDOPTS=--manage-gids
  • Füge das stattdessen hinzu: RPCMOUNTDOPTS="--port 33333"

Oder eine andere Portnummer.

Versuchen Sie nun, nfs wie folgt zurückzusetzen:

sudo service nfs-kernel-server restart

Und testen Sie, ob es geholfen hat:

rpcinfo -p | grep tcp.*mountd

Für mich war es nicht genug, aber ein vollständiger Neustart behob das Problem.

(Kredit)


Einrichten der Firewall

(1) lösche alte Regeln, mache das manuell oder setze sie zurück, wenn dies die einzige Verwendung für die Firewall ist:

sudo ufw reset
sudo ufw enable

(2) nfs & mountd ports hinzufügen

sudo ufw allow in from 10.0.0.1/20 to any port 111 
sudo ufw allow in from 10.0.0.1/20 to any port 2049
sudo ufw allow in from 10.0.0.1/20 to any port 33333

(Wechseln Sie zu Ihren lokalen IPs oder zu "any" anstatt 10.0.0.1/20)

Das ist alles.


7
2017-12-29 16:47



Sie müssen die gesamte Box nicht neu starten. Eine einfache sudo service nfs-config restart vor dem Neustart der nfs-kernel-server geht es gut. - showp1984
@ showp1984 danke, ich werde das nächste Mal versuchen - auval


Mit FERM kann man verwenden Backticks um die Ports von rpcinfo zu erhalten, zum Beispiel:

Server:

proto tcp {saddr ($CLIENT) {
  dport (`rpcinfo -p | perl -e 'while(<>){/\s+\d+\s+\d\s+(?:tcp)\s+(\d+)/ and $ports{$1}=1}; $, = " "; print sort(keys(%ports)),"\n"'`) ACCEPT; # NFS
}}
proto udp {saddr ($CLIENT) {
  dport (`rpcinfo -p | perl -e 'while(<>){/\s+\d+\s+\d\s+(?:udp)\s+(\d+)/ and $ports{$1}=1}; $, = " "; print sort(keys(%ports)),"\n"'`) ACCEPT; # NFS
}}

Klient:

proto udp {saddr ($SERVER) {ACCEPT;}}  # NFS

(Wenn Sie nur TCP benutzen, brauchen Sie nur die proto tcp Teil).


3
2017-08-13 21:39





Dadurch wird eine Liste aller Ports angezeigt, die von allen NFS-bezogenen Programmen verwendet werden:

rpcinfo -p | awk '{print $3" "$4}' | sort -k2n | uniq

2
2017-07-02 13:54





Für die Datensätze musste ich Berechtigungen für die Ports 111, 2049 hinzufügen UND 1048 für eine Konfiguration, bei der eine NFS-Freigabe von einem Windows 2008 R2-Server exportiert wird und die Clients Ubuntu 12.04.4 sind.

Ich hoffe, das hilft jemandem.


1
2017-12-16 08:13



Es könnte helfen zu erklären, warum Sie Port 1048 benötigt haben und wie Sie das bestimmt haben. - HBruijn
Ehrlich gesagt, ich habe keine Ahnung, warum ich eine Erlaubnis für 1048 hinzufügen musste, aber das fügte mein Problem hinzu. Ich wollte nur teilen, wenn das jemand anderen in der Zukunft Zeit sparen kann. Es tut mir leid, dass ich die Frage nicht beantworten konnte. - Erdem KAYA