No final, não foi tão complicado, seguindo as dicas em Protegendo o NFS . Eu modifiquei os arquivos /etc/default/nfs-common
e /etc/default/nfs-kernel-server
de acordo:
nfs-common:
.
.
# Options for rpc.statd.
# Should rpc.statd listen on a specific port? This is especially useful
# when you have a port-based firewall. To use a fixed port, set this
# this variable to a statd argument like: "--port 4000 --outgoing-port 4001".
# For more information, see rpc.statd(8) or http://wiki.debian.org/SecuringNFS
STATDOPTS="--port 32765 --outgoing-port 32766"
.
.
nfs-kernel-server:
.
.
# Options for rpc.mountd.
# If you have a port-based firewall, you might want to set up
# a fixed port here using the --port option. For more information,
# see rpc.mountd(8) or http://wiki.debian.org/SecuringNFS
# To disable NFSv4 on the server, specify '--no-nfs-version 4' here
RPCMOUNTDOPTS="--manage-gids --port 32767"
.
.
Por que esses portos? Como 32767
é o maior número de 15 bits, é muito improvável que essas portas já estejam sendo usadas por outra coisa.
Não estou usando cotas, por isso não modifiquei /etc/default/quota
como sugerido. E eu tive que reiniciar depois que fiz essas alterações. Então eu vi o resultado com
$ sudo netstat -nalp | grep rpc
tcp 0 0 0.0.0.0:32767 0.0.0.0:* LISTEN 1018/rpc.mountd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 735/rpcbind
tcp 0 0 0.0.0.0:32765 0.0.0.0:* LISTEN 806/rpc.statd
tcp6 0 0 :::32767 :::* LISTEN 1018/rpc.mountd
tcp6 0 0 :::111 :::* LISTEN 735/rpcbind
tcp6 0 0 :::32765 :::* LISTEN 806/rpc.statd
udp 0 0 0.0.0.0:875 0.0.0.0:* 735/rpcbind
udp 0 0 127.0.0.1:982 0.0.0.0:* 806/rpc.statd
udp 0 0 0.0.0.0:32765 0.0.0.0:* 806/rpc.statd
udp 0 0 0.0.0.0:32767 0.0.0.0:* 1018/rpc.mountd
udp 0 0 0.0.0.0:111 0.0.0.0:* 735/rpcbind
udp6 0 0 :::875 :::* 735/rpcbind
udp6 0 0 :::32765 :::* 806/rpc.statd
udp6 0 0 :::32767 :::* 1018/rpc.mountd
udp6 0 0 :::111 :::* 735/rpcbind
unix 2 [ ACC ] STREAM LISTENING 11412 735/rpcbind /run/rpcbind.sock
unix 2 [ ] DGRAM 9521 806/rpc.statd
unix 2 [ ] DGRAM 9614 1018/rpc.mountd
unix 3 [ ] STREAM CONNECTED 11721 862/rpc.idmapd
unix 3 [ ] STREAM CONNECTED 11722 862/rpc.idmapd
Como você pode ver, as portas rpc.mountd
e rpc.statd
estão ouvindo agora são estáticas.
Ao inserir showmount
no cliente (aqui 192.168.192.20), o Wireshark mostra a comunicação (o servidor é 192.168.192.111). Importante aqui: O GETPORT Call
e o GETPORT reply
, que retorna Port:32767
. A comunicação então usa essa porta.
Agoravocêdevepodermodificarasregrasdofirewalldeacordoeusarshowmount
eautofs
atravésdofirewall.
Apenaspararegistro
Seguindoasdicasnoscomentárioseminhaprópriaexperiência,encontreiumcomportamentodiferenteemdiferentesdistribuições:
- Noatual
raspbianjessie
(combaseemdebian
),háumserviçonfs-common
(arquivo/etc/init.d/nfs-common
),quequandoativadoinicia,p.rpc.statd
nainicialização,respeitandoasconfiguraçõesdaportaem/etc/default/nfs-common
. - Noatual
Ubuntu16.04
nãoexisteesseserviço.rpc.statd
nãoéiniciadonainicialização,poisnãoénecessáriocomoNFSV4.Porém,assimquemount....-onfsvers=3
forconcluído,rpc.statd
seráiniciado,respeitandoasconfiguraçõesdeportaem/etc/default/nfs-common
.
Eunãoencontreiumadocumentaçãoconsistentesobreisso;em Como configurar NFS o arquivo /etc/init.d/nfs-common
é explicitamente mencionado, embora seja não no pacote. Se alguém tiver dicas / links sobre isso, seria merecidamente merecido.
Mais uma observação: man rpc.mountd
e man rpc.statd
say (para a opção --port
):
"Se esta opção não for especificada, o rpc.statd tentará consultar o / etc / services, se obtiver êxito na porta, definir a mesma porta para todos os soquetes do listener, caso contrário, escolhe uma porta efêmera aleatória para cada soquete do listener." / p>
Mesmo ao definir as portas em /etc/services
(como sugerido no wiki mencionado acima), isso não funcionou. Portanto, modificar os arquivos em /etc/default
parece obrigatório - as páginas man não estão corretas nesse ponto.