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?
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?
Respostas:
$ 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.
grep nfs
, mas deixei o grep para saber que 111 é para portmapper
. Também é bom saber! (e como você mencionou, necessário)
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.
RPCMOUNTDOPTS="--port 34567"
e, em seguida, reinicie com sysctl --system
e/etc/init.d/nfs-kernel-server restart
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:
gksudo gedit /etc/default/nfs-kernel-server
RPCMOUNTDOPTS=--manage-gids
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 )
(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.
sudo service nfs-config restart
antes de reiniciar o nfs-kernel-server
fará muito bem.
systemctl
, é systemctl restart nfs-kernel-server.service
.
sudo nfs allow proto tcp from 10.0.0.1/20 to any port 111,2049,33333
seguido 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.
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
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 tcp
parte).
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.