Ich verwende Ubuntu 11.10 - richte NFS ein, um ein Verzeichnis für viele andere Server freizugeben. Welche Ports müssen in der Firewall geöffnet sein?
Ich verwende Ubuntu 11.10 - richte NFS ein, um ein Verzeichnis für viele andere Server freizugeben. Welche Ports müssen in der Firewall geöffnet sein?
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 Clientstatus (Port 1110 TCP für den ersteren und 1110 UDP für den letzteren) sowie einen Port für den NFS-Sperrmanager (Port 4045 TCP und UDP). Nur Sie können bestimmen, welche Ports Sie zulassen müssen, je nachdem, welche Dienste über das Gateway hinweg benötigt werden.
grep nfs
, aber ich habe das grep weggelassen, um zu erfahren, dass 111 für ist portmapper
. Auch gut zu wissen! (und wie du schon erwähnt hast, notwendig)
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. In diesem hervorragenden NFS-Sicherheitshandbuch wird empfohlen, die Startskripts und Kernelmodulkonfigurationen so zu ändern, dass sie statische Ports verwenden.
Zusätzlich zu der obigen Anleitung, die einen Abschnitt über Firewalls enthält , finden Sie meine Antwort auf eine andere Frage zum Härten von NFS.
RPCMOUNTDOPTS="--port 34567"
und starten Sie dann mit sysctl --system
und neu/etc/init.d/nfs-kernel-server restart
Auf dieser Seite habe ich nützliche Anweisungen für mein Problem gefunden, aber es gab kein leicht zu befolgendes Rezept. Also hier ist mein Rezept.
TL; DR - müssen beide nfs-Ports (111, 2049) und mountd-Port nach der Korrektur zulassen.
Anleitung:
gksudo gedit /etc/default/nfs-kernel-server
RPCMOUNTDOPTS=--manage-gids
RPCMOUNTDOPTS="--port 33333"
Oder eine andere Portnummer.
versuche nun nfs zurückzusetzen mit:
sudo service nfs-kernel-server restart
Und testen Sie, ob es geholfen hat mit:
rpcinfo -p | grep "tcp.*mountd"
Für mich war es nicht genug, aber ein vollständiger Neustart behebt das Problem.
( Kredit )
(1) alte Regeln löschen, manuell ausführen oder zurücksetzen, 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 Ihrer lokalen IP-Adresse oder zu " any
" anstelle von 10.0.0.1/20
)
Das ist alles, was dazu gehört.
sudo service nfs-config restart
vor dem Neustart der nfs-kernel-server
wird gut tun.
systemctl
, ist es systemctl restart nfs-kernel-server.service
.
sudo nfs allow proto tcp from 10.0.0.1/20 to any port 111,2049,33333
gefolgt von (ok, zwei Wellengänge) sudo nfs allow proto udp from 10.0.0.1/20 to any port 111,2049,33333
. Beachten Sie, dass Port 33333 dem obigen Beispiel entspricht. Sie können einen anderen Port verwenden, wie in der Antwort angegeben.
Dies gibt eine Liste aller Ports, die von allen NFS-bezogenen Programmen verwendet werden:
rpcinfo -p | awk '{print $3" "$4}' | sort -k2n | uniq
Mit FERM kann man Backticks verwenden , um die Ports von rpcinfo abzurufen, 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 verwenden möchten, benötigen Sie nur den proto tcp
Teil).
Für die Datensätze musste ich Berechtigungen für die Ports 111, 2049 UND 1048 für eine Konfiguration hinzufügen, 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.