De forma predeterminada, algunos servicios NFS (lado del servidor) usan puertos conocidos, pero otros normalmente solo usan puertos aleatorios. El uso de puertos aleatorios no funciona tan bien con reglas estrictas de firewall que bloquean puertos aleatorios aún desconocidos. Por lo tanto, a veces es mejor modificar manualmente o especificar puertos estáticos para que los usen los servicios NFS (lado del servidor).
Esta publicación describe cómo configurar los servicios NFS (del lado del servidor) para que se ejecuten en puertos estáticos como alternativa.
Resumen
Los servicios NFS (del lado del servidor) incluyen:
- NLM (administrador de bloqueo NFS o bloqueo en el núcleo)
- rpc.mountd
- rpc.nfsd
- rpc.rquotad
- rpc.estado
Tenga en cuenta que lockd y rpc.statd también se ejecutan en clientes NFS. Además, rpc.rquotad no es estrictamente parte de la familia NFS, pero se usa para verificar cuotas en sistemas de archivos compartidos por el servidor NFS y montados por uno o más clientes NFS.
Con NFSv3, rpc.nfsd interactúa con LOCKD/NLM, rpc.mountd y rpc.statd. Sin embargo, con NFSv4, todas estas interacciones ahora están incorporadas/consolidadas.
Para CentOS/RHEL 7, el RPM nfs-utils ahora incluye /etc/modprobe.d/lockd.conf, /etc/sysconfig/nfs y /etc/sysconfig/rpc-rquotad como la configuración principal de NFS (lado del servidor). archivos Además, también está /etc/nfs.conf, que, en un futuro cercano, puede dejar obsoletos otros archivos de configuración.
Para CentOS/RHEL 7, los puertos estáticos para rpc.mountd, rpc.nfsd y rpc.rquotad tienen como valor predeterminado 20048, 2049 y 875, respectivamente, ya que se consideran puertos conocidos. Otros servicios NFS (del lado del servidor), como LOCKD/NLM y rpc.statd, normalmente solo usan puertos aleatorios, pero /etc/modprobe.d/lockd.conf y /etc/sysconfig/nfs ofrecen valores de puerto de ejemplo como referencia. Los valores de puerto de ejemplo son lo suficientemente buenos para la mayoría de los escenarios.
# cat /etc/services mountd 20048/tcp # NFS mount protocol mountd 20048/udp # NFS mount protocol nfs 2049/tcp nfsd shilp # Network File System nfs 2049/udp nfsd shilp # Network File System rquotad 875/tcp # rquota daemon rquotad 875/udp # rquota daemon
# cat /etc/modprobe.d/lockd.conf # Set the TCP port that the NFS lock manager should use. # port must be a valid TCP port value (1-65535). #options lockd nlm_tcpport # # Set the UDP port that the NFS lock manager should use. # port must be a valid UDP port value (1-65535). #options lockd nlm_udpport
# cat /etc/sysconfig/nfs # Port rpc.mountd should listen on. #MOUNTD_PORT=892 # Port rpc.statd should listen on. #STATD_PORT=662 # Outgoing port statd should used. The default is port # is random #STATD_OUTGOING_PORT=2020
# cat /etc/sysconfig/rpc-rquotad # -I, --autofs Ignore autofs mount points # -p port, --port port Listen on alternative port # -s, --no-setquota Don't allow setting quotas with RPC (default) # -S, --setquota Allow setting quotas with RPC # -x path, --xtab path Use alternative NFSD export table RPCRQUOTADOPTS=""
Ejemplos de configuración de /etc/modprobe.d/lockd.conf
Para especificar LOCKD/NLM para usar puertos estáticos libres, simplemente descomente nlm_tcpport y nlm_udpport para establecer los nuevos valores de puerto, luego vuelva a cargar el módulo del kernel lockd o simplemente reinicie.
options lockd nlm_tcpport=32803 options lockd nlm_udpport=32769
Ejemplos de configuración de /etc/sysconfig/nfs
Para especificar rpc.mountd para usar un puerto estático libre que no sea 20048, simplemente descomente MOUNTD_PORT para establecer el nuevo valor de puerto, luego reinicie el servicio nfs-mountd o el servicio nfs-server.
MOUNTD_PORT=892
Para especificar rpc.nfsd para usar un puerto estático libre que no sea 2049, simplemente descomente RPCNFSDARGS para agregar el nuevo valor de puerto, luego reinicie el servicio del servidor nfs.
RPCNFSDARGS="-p 20499"
Para especificar que rpc.statd use puertos estáticos libres, simplemente descomente STATD_PORT y STATD_OUTGOING_PORT para establecer los nuevos valores de puerto, luego reinicie el servicio rpc-statd.
STATD_PORT=662 STATD_OUTGOING_PORT=2020
Ejemplos de configuración de /etc/sysconfig/rpc-rquotad
Para especificar que rpc.rquotad use un puerto estático libre que no sea 875, simplemente elimine el comentario de RPCRQUOTADOPTS para agregar el nuevo valor de puerto y luego reinicie el servicio rpc-rquotad.
RPCRQUOTADOPTS="-p 8755"
Control de servicios
Reinicie el servicio nfs-mountd:
# systemctl restart nfs-mountd.service
Reinicie el servicio del servidor nfs:
# systemctl restart nfs-server.service
Reinicie el servicio rpc-rquotad:
# systemctl restart rpc-rquotad.service
Reinicie el servicio rpc-statd:
# systemctl restart rpc-statd.service
Verificación:
# rpcinfo -p