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?
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?
Réponses:
$ 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.
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)
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.
RPCMOUNTDOPTS="--port 34567"
, puis redémarrez avec sysctl --system
et/etc/init.d/nfs-kernel-server restart
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:
gksudo gedit /etc/default/nfs-kernel-server
RPCMOUNTDOPTS=--manage-gids
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 )
(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.
sudo service nfs-config restart
avant de redémarrer le nfs-kernel-server
fera très bien.
systemctl
, c'est systemctl restart nfs-kernel-server.service
.
sudo nfs allow proto tcp from 10.0.0.1/20 to any port 111,2049,33333
suivie 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.
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
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 tcp
partie).
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.