Sto eseguendo Ubuntu 11.10 - sto configurando NFS per condividere una directory tra molti altri server. Quali porte devono essere aperte sul firewall?
Sto eseguendo Ubuntu 11.10 - sto configurando NFS per condividere una directory tra molti altri server. Quali porte devono essere aperte sul firewall?
Risposte:
$ rpcinfo -p | grep nfs
Porta 111 (TCP e UDP) e 2049 (TCP e UDP) per il server NFS.
Esistono anche porte per lo stato del cluster e del client (Porta 1110 TCP per il primo e 1110 UDP per il secondo) nonché una porta per il gestore dei blocchi NFS (Porta 4045 TCP e UDP). Solo tu puoi determinare quali porte devi consentire in base ai servizi necessari tra i gateway.
grep nfs
, ma ho lasciato fuori il grep per sapere che 111 è per portmapper
. Buono anche a sapersi! (e come hai già detto, necessario)
Oltre a 111 per portmapper e 2049 per nfs, sarà necessario consentire la porta mountd e possibilmente rquotad, lockd e statd, che possono essere tutti dinamici. Questa eccellente guida alla sicurezza di NFS consiglia di modificare gli script di avvio e le configurazioni dei moduli del kernel per forzarli a utilizzare porte statiche.
Oltre alla guida sopra, che contiene una sezione sui firewall , vedere la mia risposta a un'altra domanda sull'indurimento di NFS.
RPCMOUNTDOPTS="--port 34567"
e poi riavvia con sysctl --system
e/etc/init.d/nfs-kernel-server restart
Ho trovato indicazioni utili per il mio problema in questa pagina, ma non c'era una ricetta facile da seguire. Quindi ecco la mia ricetta.
TL; DR: è necessario consentire entrambe le porte nfs (111, 2049) e la porta mountd dopo averla riparata.
Istruzioni:
gksudo gedit /etc/default/nfs-kernel-server
RPCMOUNTDOPTS=--manage-gids
RPCMOUNTDOPTS="--port 33333"
O qualsiasi altro numero di porta.
ora prova a ripristinare nfs usando:
sudo service nfs-kernel-server restart
E prova se ha aiutato a usare:
rpcinfo -p | grep "tcp.*mountd"
Per me non è stato sufficiente, ma un riavvio completo ha risolto il problema.
( credito )
(1) elimina le vecchie regole, fallo manualmente o ripristina se questo è l'unico uso per il firewall:
sudo ufw reset
sudo ufw enable
(2) aggiungi porte nfs e 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
(Passa al tuo IP locale o a " any
" invece di 10.0.0.1/20
)
Questo è tutto.
sudo service nfs-config restart
prima di riavviare nfs-kernel-server
andrà bene.
systemctl
, lo è systemctl restart nfs-kernel-server.service
.
sudo nfs allow proto tcp from 10.0.0.1/20 to any port 111,2049,33333
seguito da (ok, due colpi di rigonfiamento) sudo nfs allow proto udp from 10.0.0.1/20 to any port 111,2049,33333
. Nota la porta 33333 è per l'esempio sopra. È possibile utilizzare un'altra porta come indicato dalla risposta.
Questo fornirà un elenco di tutte le porte utilizzate da tutti i programmi relativi a NFS:
rpcinfo -p | awk '{print $3" "$4}' | sort -k2n | uniq
Con FERM è possibile utilizzare Backtick per ottenere le porte da rpcinfo, ad esempio:
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
}}
Cliente:
proto udp {saddr ($SERVER) {ACCEPT;}} # NFS
(Se utilizzerai solo il TCP, allora avrai bisogno solo della proto tcp
parte).
Per la cronaca, ho dovuto aggiungere le autorizzazioni per le porte 111, 2049 E 1048 per una configurazione in cui una condivisione NFS viene esportata da un server Windows 2008 R2 e i client sono Ubuntu 12.04.4.
Spero che questo aiuti qualcuno.