Quais portas eu preciso abrir no firewall para usar o NFS?

73

Estou executando o Ubuntu 11.10 - configurando o NFS para compartilhar um diretório entre muitos outros servidores. Quais portas precisam ser abertas no firewall?

kenny
fonte
6
Depende da versão do protocolo que você pretende usar. O NFS 4 requer apenas 2049, enquanto as versões mais antigas exigem mais.
Lzap 11/09/2015

Respostas:

97
$ rpcinfo -p | grep nfs

Porta 111 (TCP e UDP) e 2049 (TCP e UDP) para o servidor NFS.

Também existem portas para o status de Cluster e cliente (porta 1110 TCP para a primeira e 1110 UDP para a última), bem como uma porta para o gerenciador de bloqueios NFS (porta 4045 TCP e UDP). Somente você pode determinar quais portas você precisa permitir, dependendo de quais serviços são necessários entre o gateway.

Wesley
fonte
4
Eu não sabia sobre o rpcinfo, isso é bastante útil. Eu não vi a porta 111 com o grep nfs, mas deixei o grep para saber que 111 é para portmapper. Também é bom saber! (e como você mencionou, necessário)
Kenny
@KennyYounger rpcinfo também é útil. Se isso respondeu à sua pergunta, não esqueça de marcá-la como a resposta para o benefício de futuros espectadores.
Wesley #
6
Você precisa do mountd aberto quando montar o sistema de arquivos pela primeira vez. Ele roda em uma porta dinâmica, portanto nem sempre será o mesmo. Coloquei um link para um guia na minha resposta.
precisa saber é o seguinte
11
Obrigado @bonsaiviking. Informações críticas para este processo. Eu votei na sua resposta!
Kenny #
Você poderia fornecer uma breve descrição do que esses serviços ("status do cluster e do cliente", "gerenciador de bloqueio do NFS") fazem e quando podem ser necessários? Se esses serviços forem bloqueados por um firewall, os servidores e clientes do NFS serão degradados normalmente ou apenas ficarão aguardando uma resposta?
Nathan Craike
27

Além de 111 para portmapper e 2049 para nfs, você precisará permitir a porta mountd e, possivelmente, rquotad, lockd e statd, os quais podem ser dinâmicos. Este excelente guia de segurança NFS recomenda alterar os scripts de inicialização e as configurações dos módulos do kernel para forçá-los a usar portas estáticas.

Além do guia acima, que possui uma seção sobre firewalls , veja minha resposta para outra pergunta sobre o fortalecimento do NFS.

bonsaiviking
fonte
7
Nós realmente preferimos conteúdo, não ponteiros para o conteúdo. Uma amostra do conteúdo com um link também é aceitável e preferível a um link.
usar o seguinte comando
2
Não tenho certeza sobre 2012, mas a recomendação nos links parece estar desatualizada. O NFS sobre TCP é preferido por vários motivos e o NFS sobre UDP pode causar corrupção de dados silenciosos no link rápido devido a limitações de protocolo. O guia de segurança não menciona o Kerberos / GSS etc.
Maciej Piechotka
Com relação ao mountd, a vida é muito mais fácil se você reconfigurar para garantir que a porta mountd seja fixa. Nos sistemas debian, edite o valor RPCMOUNTDOPTS para algo como RPCMOUNTDOPTS="--port 34567"e, em seguida, reinicie com sysctl --systeme/etc/init.d/nfs-kernel-server restart
user45793
14

Encontrei instruções úteis para o meu problema nesta página, mas não foi fácil seguir a receita. Então aqui está a minha receita.

TL; DR - precisa permitir as portas nfs (111, 2049) e a porta mountd após corrigi-la.

Instruções:


Configurando uma porta fixa para mountd

gksudo gedit /etc/default/nfs-kernel-server
  • comente esta linha: RPCMOUNTDOPTS=--manage-gids
  • adicione isto: RPCMOUNTDOPTS="--port 33333"

Ou qualquer outro número de porta.

Agora tente redefinir o nfs usando:

sudo service nfs-kernel-server restart

E teste se ajudou a usar:

rpcinfo -p | grep "tcp.*mountd"

Para mim, não foi suficiente, mas uma reinicialização completa corrigiu o problema.

( crédito )


Configurando o firewall

(1) exclua regras antigas, faça isso manualmente ou redefina se esse for o único uso para o firewall:

sudo ufw reset
sudo ufw enable

(2) adicione portas 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

(Altere para os IPs locais ou para " any" em vez de 10.0.0.1/20)

É só isso.

Amir Uval
fonte
3
Você não precisa reiniciar a caixa inteira. Um simples sudo service nfs-config restartantes de reiniciar o nfs-kernel-serverfará muito bem.
showp1984
@ showp1984 graças, vou tentar que da próxima vez
Amir Uval
Ou se o seu sistema usa systemctl, é systemctl restart nfs-kernel-server.service.
fbicknel
Você também pode fazer tudo isso de uma só vez: sudo nfs allow proto tcp from 10.0.0.1/20 to any port 111,2049,33333seguido de (ok, duas entradas) sudo nfs allow proto udp from 10.0.0.1/20 to any port 111,2049,33333. Observe que a porta 33333 é conforme o exemplo acima. Você pode usar outra porta como a resposta indica.
fbicknel
5

Isso fornecerá uma lista de todas as portas usadas por todos os programas relacionados ao NFS:

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

Com o FERM, é possível usar o Backticks para obter as portas do rpcinfo, por exemplo:

Servidor:

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 você só usar o TCP, precisará apenas da proto tcpparte).

Artem
fonte
1

Para os registros, tive que adicionar permissões para as portas 111, 2049 E 1048 para uma configuração em que um compartilhamento NFS é exportado por um servidor Windows 2008 R2 e os clientes são o Ubuntu 12.04.4.

Espero que isso ajude alguém.

Erdem KAYA
fonte
2
Pode ajudar a explicar por que você precisava da porta 1048 e como determinou isso.
HBruijn
3
Francamente, não tenho idéia de por que eu precisava adicionar uma permissão para 1048, mas adicionar isso resolveu meu problema. Eu só queria compartilhar se isso pode economizar tempo para outra pessoa no futuro. Lamento não poder responder à pergunta.
Erdem KAYA