Quali porte devo aprire nel firewall per utilizzare NFS?


73

Sto eseguendo Ubuntu 11.10 - sto configurando NFS per condividere una directory tra molti altri server. Quali porte devono essere aperte sul firewall?


6
Dipende dalla versione del protocollo che si intende utilizzare. NFS 4 richiede solo 2049 mentre le versioni precedenti richiedono di più.
lzap,

Risposte:


97
$ 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.


4
Non sapevo di rpcinfo, è abbastanza utile. Non ho visto la porta 111 con il grep nfs, ma ho lasciato fuori il grep per sapere che 111 è per portmapper. Buono anche a sapersi! (e come hai già detto, necessario)
kenny

@KennyYounger è utile anche rpcinfo. Se questo ha risposto alla tua domanda, non dimenticare di contrassegnarlo come risposta a beneficio dei futuri spettatori.
Wesley,

6
È necessario mountd open quando si monta per la prima volta il filesystem. Funziona su una porta dinamica, quindi non sarà sempre la stessa. Ho inserito un link a una guida nella mia risposta.
bonsaiviking,

1
Grazie @bonsaiviking. Informazioni critiche per questo processo. Ho votato a favore della tua risposta!
kenny,

Potresti fornire una breve descrizione di ciò che fanno quei servizi ("stato cluster e client", "gestore blocco NFS") e quando potrebbero essere necessari? Se tali servizi sono bloccati da un firewall, i server e i client NFS si degraderanno con grazia o si bloccheranno semplicemente in attesa di una risposta?
Nathan Craike,

27

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.


7
Preferiamo davvero il contenuto, non i puntatori al contenuto. Anche una scelta del contenuto con un collegamento è ok e preferisce un collegamento.
user9517 supporta GoFundMonica il

2
Non sono sicuro del 2012, ma la raccomandazione nei link sembra essere decisamente obsoleta. NFS su TCP è preferito per una varietà di motivi e NFS su UDP può causare il danneggiamento silenzioso dei dati sul collegamento rapido a causa delle limitazioni del protocollo. La guida alla sicurezza non menziona Kerberos / GSS ecc.
Maciej Piechotka,

Rispetto a mountd, la vita è molto più semplice se si riconfigura per assicurarsi che la porta mountd sia fissa. Sui sistemi Debian, modifica il valore RPCMOUNTDOPTS su qualcosa di simile RPCMOUNTDOPTS="--port 34567"e poi riavvia con sysctl --systeme/etc/init.d/nfs-kernel-server restart
user45793

14

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:


Impostazione di una porta fissa per mountd

gksudo gedit /etc/default/nfs-kernel-server
  • commenta questa riga: RPCMOUNTDOPTS=--manage-gids
  • aggiungi questo invece: 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 )


Impostazione del firewall

(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.


3
Non è necessario riavviare l'intera casella. Un semplice sudo service nfs-config restartprima di riavviare nfs-kernel-serverandrà bene.
showp1984,

@ showp1984 grazie, ci proverò la prossima volta
Amir Uval,

O se il tuo sistema lo utilizza systemctl, lo è systemctl restart nfs-kernel-server.service.
fbicknel

Puoi anche fare tutto in un colpo di rigonfiamento: sudo nfs allow proto tcp from 10.0.0.1/20 to any port 111,2049,33333seguito 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.
fbicknel

5

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

3

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 tcpparte).


1

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.


2
Potrebbe aiutare a spiegare perché avevi bisogno della porta 1048 e come l'hai determinata.
HBruijn,

3
Francamente, non ho idea del perché avessi bisogno di aggiungere un'autorizzazione per il 1048, ma l'aggiunta di questo ha risolto il mio problema. Volevo solo condividere se ciò potesse far risparmiare tempo a qualcun altro in futuro. Mi dispiace per non essere stato in grado di rispondere alla domanda.
Erdem KAYA,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.