Existem configurações em sysctl
que definem intervalos de porta NFS disponíveis para conexões.
sunrpc.max_resvport = 1023
sunrpc.min_resvport = 650
Essas configurações definem as portas mais alta e mais baixa a serem usadas para fazer conexões RPC (NFS)
Você pode abrir essas portas ou definir um intervalo diferente, dependendo do seu sistema. Você receberá negações se tentar usar uma porta bloqueada por um firewall ou outro serviço usando essa porta.
Editar:
Você também pode aumentar / diminuir esse intervalo. Eu tenho um servidor que tinha 460 montagens NFS definidas em fstab
e iria falhar depois de 372 ou mais. E quando eu montaria manualmente um dos que falharam, ele montaria, mas desmontaria uma das montagens de trabalho. Eu aumentei esse range em 150 e todos eles montaram. Esta não é a melhor maneira de fazer isso. automounter
vem à mente, mas funciona.
Para fazer a modificação, edite sua /etc/sysctl.conf
e adicione uma linha como:
sunrpc.min_resvport = 900
Para tornar a alteração permanente se você precisar alterá-las. Lembre-se, se você for acima de 1024, que essas portas são "não-privilegiadas" e os usuários normais do sistema terão acesso a elas vs. -1024.
Editar 2:
No seu comando NFS mount você pode adicionar o seguinte.
proto=tcp
- força a montagem a usar TCP / IP
public
- ignora portmapper
completamente e entra em contato com o servidor NFS na porta 2049, a menos que especificado de outra forma
Então, mount nfs.test.com:/export /test
torna-se
mount -o proto=tcp ,public nfs.test.com:/export /test
EDIT 3
OK - aqui vamos nós !!! root@pressyrluck # ./nowhammies > /dev/please
Essas informações eram lifted
copied
swiped
borrowed
de NFS da Sourceforge
Alguns daemons envolvidos no compartilhamento de dados via nfs já estão vinculados a uma porta. O portmap está sempre na porta 111 tcp e udp. O nfsd está sempre na porta 2049 TCP e UDP (no entanto, a partir do kernel 2.4.17, o NFS sobre TCP é considerado experimental e não é para uso em máquinas de produção).
Os outros daemons, statd, mountd, lockd e rquotad normalmente se moverão para a primeira porta disponível da qual são informados pelo portmapper.
Para forçar o statd a se ligar a uma porta específica, use a opção -p portnum. Para forçar o statd a responder em uma porta específica, use adicionalmente a opção -o portnum ao iniciá-lo.
Para forçar o mountd a se ligar a uma porta específica, use a opção -p portnum.
Por exemplo, para transmitir statd da porta 32765 e escutar na porta 32766 e mountd listen na porta 32767, digite:
# statd -p 32765 -o 32766
# mountd -p 3276
O lockd é iniciado pelo kernel quando é necessário. Portanto, você precisa passar as opções do módulo (se você tiver construído como um módulo) ou as opções do kernel para forçar o lockd a escutar e responder apenas em certas portas.
Se você está usando módulos carregáveis e gostaria de especificar essas opções em seu arquivo /etc/modules.conf, adicione uma linha como esta no arquivo:
options lockd nlm_udpport=32768 nlm_tcpport=32768
Por uma questão de discussão, vamos descrever uma rede e configurar um firewall para proteger nosso servidor nfs. Nosso servidor nfs é 192.168.0.42 nosso cliente é 192.168.0.45 somente. Como no exemplo acima, o statd foi iniciado de forma que ele só se vincule à porta 32765 para solicitações recebidas e ele deve responder na porta 32766. mountd é forçado a ligar à porta 32767. Os parâmetros do módulo de lockd foram configurados para ligar a 32768. nfsd é, obviamente, na porta 2049 e o portmapper está na porta 111.
Não estamos usando cotas.
iptables -A INPUT -f -j ACCEPT -s 192.168.0.45
iptables -A INPUT -s 192.168.0.45 -d 0/0 32765:32768 -p 6 -j ACCEPT
iptables -A INPUT -s 192.168.0.45 -d 0/0 32765:32768 -p 17 -j ACCEPT
iptables -A INPUT -s 192.168.0.45 -d 0/0 2049 -p 17 -j ACCEPT
iptables -A INPUT -s 192.168.0.45 -d 0/0 2049 -p 6 -j ACCEPT
iptables -A INPUT -s 192.168.0.45 -d 0/0 111 -p 6 -j ACCEPT
iptables -A INPUT -s 192.168.0.45 -d 0/0 111 -p 17 -j ACCEPT
iptables -A INPUT -s 0/0 -d 0/0 -p 6 -j DENY --syn --log-level 5
iptables -A INPUT -s 0/0 -d 0/0 -p 17 -j DENY --log-level 5
A primeira linha diz para aceitar todos os fragmentos de pacote (exceto o primeiro fragmento de pacote que será tratado como um pacote normal). Em teoria, nenhum pacote passará até que seja remontado, e não será remontado a menos que o primeiro fragmento de pacote seja passado. Claro que existem ataques que podem ser gerados sobrecarregando uma máquina com fragmentos de pacotes. Mas o NFS não funcionará corretamente, a menos que você deixe os fragmentos passarem. Veja a Seção 7, “Solução de problemas” para detalhes.
As outras linhas permitem conexões específicas de qualquer porta em nosso host cliente para as portas específicas que disponibilizamos em nosso servidor. Isso significa que se, por exemplo, 192.158.0.46 tentar entrar em contato com o servidor NFS, ele não poderá montar ou ver quais montagens estão disponíveis.
Com os novos recursos de fixação de portas, é obviamente muito mais fácil controlar quais hosts podem montar seus compartilhamentos NFS. Vale ressaltar que o NFS não é um protocolo criptografado e qualquer pessoa na mesma rede física poderia farejar o tráfego e remontar as informações que estão sendo transmitidas de um lado para outro.