Quels ports dois-je ouvrir dans le pare-feu pour utiliser NFS?


73

J'utilise Ubuntu 11.10 - configuration de NFS pour partager un répertoire entre plusieurs autres serveurs. Quels ports doivent être ouverts sur le pare-feu?


6
Cela dépend de la version du protocole que vous souhaitez utiliser. NFS 4 ne nécessite que 2049 alors que les versions plus anciennes en demandent plus.
Lzap

Réponses:


97
$ rpcinfo -p | grep nfs

Port 111 (TCP et UDP) et 2049 (TCP et UDP) pour le serveur NFS.

Il existe également des ports pour l'état du cluster et du client (port 1110 TCP pour le premier et 1110 UDP pour le dernier), ainsi qu'un port pour le gestionnaire de verrous NFS (ports 4045 TCP et UDP). Vous seul pouvez déterminer les ports que vous devez autoriser en fonction des services requis entre passerelles.


4
Je ne connaissais pas rpcinfo, c'est très utile. Je n'ai pas vu le port 111 avec le grep nfs, mais j'ai quitté le grep pour apprendre que le 111 est pour portmapper. Aussi bon à savoir! (et comme vous l'avez mentionné, nécessaire)
kenny

@KennyYounger rpcinfo est également utile. Si cela répond à votre question, n'oubliez pas de la marquer comme la réponse pour le bénéfice des futurs téléspectateurs.
Wesley

6
Vous devez ouvrir mountd lorsque vous montez le système de fichiers pour la première fois. Il fonctionne sur un port dynamique, il ne sera donc pas toujours identique. Je mets un lien vers un guide dans ma réponse.
bonsaïiviking

1
Merci @bonsaiviking. Informations critiques pour ce processus. J'ai voté votre réponse!
Kenny

Pourriez-vous donner une brève description de ce que font ces services ("statut du cluster et du client", "gestionnaire de verrouillage NFS") et à quel moment ils pourraient être nécessaires? Si ces services sont bloqués par un pare-feu, les serveurs et les clients NFS se dégraderont-ils correctement ou se verrouillent-ils dans l'attente d'une réponse?
Nathan Craike

27

Outre 111 pour portmapper et 2049 pour nfs, vous devez autoriser le port mountd et éventuellement rquotad, lockd et statd, qui peuvent tous être dynamiques. Cet excellent guide de sécurité NFS vous recommande de modifier vos scripts de démarrage et vos configurations de module de noyau pour les forcer à utiliser des ports statiques.

Outre le guide ci-dessus, qui comporte une section sur les pare - feu , reportez -vous à ma réponse à une autre question sur le renforcement de NFS.


7
Nous préférons vraiment le contenu, pas les pointeurs vers le contenu. Un résumé du contenu avec un lien est également correct et préférable à un lien.
user9517 prend en charge GoFundMonica

2
Pas sûr de 2012, mais la recommandation dans les liens semble être complètement dépassée. NFS sur TCP est préféré pour diverses raisons et NFS sur UDP peut provoquer une corruption de données silencieuse sur une liaison rapide en raison de limitations de protocole. Le guide de sécurité ne mentionne pas Kerberos / GSS, etc.
Maciej Piechotka

En ce qui concerne mountd, la vie est beaucoup plus facile si vous reconfigurez pour vous assurer que le port de mountd est corrigé. Sur les systèmes Debian, modifiez la valeur RPCMOUNTDOPTS comme suit RPCMOUNTDOPTS="--port 34567", puis redémarrez avec sysctl --systemet/etc/init.d/nfs-kernel-server restart
user45793

14

J'ai trouvé des instructions utiles pour mon problème sur cette page, mais il n'était pas facile de suivre la recette. Alors voici ma recette.

TL; DR - nécessité d'autoriser les ports nfs (111, 2049) et le port mountd après l'avoir réparé.

Instructions:


Configurer un port fixe pour mountd

gksudo gedit /etc/default/nfs-kernel-server
  • commentez cette ligne: RPCMOUNTDOPTS=--manage-gids
  • ajoutez ceci à la place: RPCMOUNTDOPTS="--port 33333"

Ou tout autre numéro de port.

Maintenant, essayez de réinitialiser NFS en utilisant:

sudo service nfs-kernel-server restart

Et vérifiez si cela vous a aidé à utiliser:

rpcinfo -p | grep "tcp.*mountd"

Pour moi, cela ne suffisait pas, mais un redémarrage complet a résolu le problème.

( crédit )


Mise en place du pare-feu

(1) supprimez les anciennes règles, faites-le manuellement ou réinitialisez-le si c'est la seule utilisation du pare-feu:

sudo ufw reset
sudo ufw enable

(2) ajouter des ports nfs et mountd

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

(Passez à votre adresse IP locale ou à " any" au lieu de 10.0.0.1/20)

C'est tout ce qu'il y a à dire.


3
Vous n'avez pas besoin de redémarrer toute la boîte. Un simple sudo service nfs-config restartavant de redémarrer le nfs-kernel-serverfera très bien.
showp1984

@ showp1984 merci, je vais essayer ça la prochaine fois
Amir Uval le

Ou si votre système utilise systemctl, c'est systemctl restart nfs-kernel-server.service.
fbicknel

Vous pouvez aussi tout faire en une seule étape: sudo nfs allow proto tcp from 10.0.0.1/20 to any port 111,2049,33333suivie de (ok, deux étapes) sudo nfs allow proto udp from 10.0.0.1/20 to any port 111,2049,33333. Remarque Le port 33333 correspond à l'exemple ci-dessus. Vous pouvez utiliser un autre port comme l'indique la réponse.
fbicknel

5

Cela donnera une liste de tous les ports utilisés par tous les programmes liés à NFS:

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

3

Avec FERM, vous pouvez utiliser Backticks pour obtenir les ports de rpcinfo, par exemple:

Serveur:

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
}}

Client:

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

(Si vous n'utilisez que le protocole TCP, vous n'avez besoin que de la proto tcppartie).


1

Pour les enregistrements, j'ai dû ajouter des autorisations pour les ports 111, 2049 et 1048 pour une configuration dans laquelle un partage NFS est exporté par un serveur Windows 2008 R2 et les clients sont Ubuntu 12.04.4.

J'espère que ça aidera quelqu'un.


2
Cela pourrait aider d’expliquer pourquoi vous avez besoin du port 1048 et comment vous en êtes arrivé à ce résultat.
HBruijn

3
Franchement, je n'ai aucune idée de la raison pour laquelle j'ai dû ajouter une autorisation pour 1048, mais cela a résolu mon problème. Je voulais juste partager si cela pouvait faire gagner du temps à quelqu'un d'autre à l'avenir. Je suis désolé de ne pas pouvoir répondre à la question.
Erdem KAYA
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.