Red de conocimiento informático - Consumibles informáticos - El proceso de configuración de un servidor NFS.

El proceso de configuración de un servidor NFS.

Antes de hablar del funcionamiento del SERVIDOR NFS, veamos algunas cosas relacionadas con el SERVIDOR NFS:

RPC (Llamada a procedimiento remoto)

NFS en sí no proporciona protocolos y funciones de transmisión de información, pero NFS nos permite compartir datos a través de la red. Esto se debe a que NFS utiliza algunos otros protocolos de transmisión. Estos guerreros del protocolo de transporte utilizan esta función RPC. Se puede decir que NFS en sí es un programa que utiliza RPC. En otras palabras, NFS también es un SERVIDOR RPC, por lo que siempre que se utilice NFS, se debe iniciar el servicio RPC, ya sea un SERVIDOR NFS o un CLIENTE NFS. De esta manera, el SERVIDOR y el CLIENTE pueden realizar la correspondencia del PUERTO DE PROGRAMA a través de RPC. La relación entre RPC y NFS se puede entender de esta manera: NFS es un sistema de archivos y RPC es responsable de la transmisión de información.

DEMONIOS que NFS necesita para iniciarse

pc.nfsd: principalmente detección de permisos de inicio de sesión complejos, etc.

rpc.mountd: Responsable del sistema de archivos de NFS Cuando el cliente inicia sesión en el SERVIDOR a través de rpc.nfsd, realiza una serie de gestión sobre los archivos del servidor de acceso clinet.

NFS SERVER está en El siguiente paso de la plataforma REDHAT LINUX requiere dos paquetes: nfs-utils y PORTMAP

nfs-utils: proporciona rpc.nfsd y rpc.mountd, dos paquetes NFS DAEMONS

portmap: NFS en realidad puede considerarse como un PROGRAMA DE SERVIDOR RPC. Para iniciar un PROGRAMA DE SERVIDOR RPC, debe realizar el trabajo correspondiente de PORT, y dicha tarea la completa PORTMAP. En términos sencillos, PortMap se utiliza para el mapeo de PUERTOS.

1: Configuración del lado del servidor (tomando LINUX como ejemplo)

La configuración del lado del servidor se establece en el archivo /etc/exports. El formato de configuración es el siguiente:

p>

El directorio que se compartirá es el nombre de host 1 o IP1 (parámetro 1, parámetro 2) el nombre de host 2 o IP2 (parámetro 3, parámetro 4)

El formato anterior indica que el mismo El directorio se comparte con dos hosts diferentes, pero los permisos y parámetros proporcionados a los dos hosts son diferentes, por lo que los permisos obtenidos por los dos hosts se configuran por separado.

Los parámetros que se pueden configurar incluyen principalmente los siguientes:

rw: permisos de lectura y escritura

ro: permisos de solo lectura

;

no_root_squash: si el usuario que inicia sesión en el host NFS es un usuario ROOT, tiene permisos ROOT. Este parámetro es muy inseguro y no se recomienda su uso.

root_squash: si el usuario que inicia sesión en el host NFS y usa el directorio compartido es root, entonces los permisos del usuario se comprimirán en un usuario anónimo y, por lo general, su UID y GID se convertirán en nadie. ;

all_squash: no importa qué usuario inicie sesión en el host NFS, se restablecerá a nadie.

anonuid: establece todos los usuarios que inician sesión en el host NFS con la identificación de usuario especificada. Esta identificación debe existir en /etc/passwd.

anongid: Igual que anonuid, ¡pero cambiado a ID de grupo!

sincronización: Los datos se escriben en la memoria de forma sincrónica.

async: los datos se almacenarán temporalmente en la memoria primero y no se escribirán directamente en el disco duro.

insecure permite el acceso no autorizado desde esta máquina.

Por ejemplo, puedes editar /etc/exports como:

/tmp   *(rw, no_root_squash)

/home/public 192.168.0.* (rw) *(ro)

/home/test 192.168.0.100(rw)

/home/linux  *.the9.com(rw, all_squash, anonuid=40, anongid =40)

Después de la configuración, puede utilizar el siguiente comando para iniciar NFS:

/etc/rc.d/init.d/portmap start (PORTMAP se inicia de forma predeterminada en REDHAT)

p>

/etc/rc.d/init.d/nfs start

comando exportfs:

Si modificamos /etc/ exporta después de iniciar NFS. ¿Necesito reiniciar nfs? En este momento, podemos usar el comando exportfs para que los cambios surtan efecto inmediatamente. El formato del comando es el siguiente:

exportfs [-aruv]

-a: montar todo o. desmontar contenido de /etc/exports

-r: volver a montar el directorio compartido en /etc/exports

-u: desmontar directorio

-v: al exportar, Muestra información detallada en la pantalla.

Ejemplo específico:

[root @test root]# exportfs -rv

2. Cómo montar el directorio nfs:

mount -t nfs nombre de host(oIP):/directorio /montaje/punto

Ejemplo específico:

Linux: montaje -t nfs 192.168.0.1:/tmp /mnt/nfs

Solaris: montaje -F nfs 192.168.0.1:/tmp /mnt/nfs

BSD: montaje 192.168.0.1:/tmp /mnt/nfs

3. Otros parámetros opcionales para nfs:

Montaje DURO y MONTAJE SUAVE:

DIFÍCIL: EL CLIENTE NFS intentará conectarse continuamente al SERVIDOR (en segundo plano, no se mostrará ningún mensaje de aviso) , algunas versiones de LINUX seguirán dando algunos mensajes) hasta MONTAR.

SOFT: Intentará conectarse al SERVIDOR en primer plano, que es el método de conexión predeterminado. Cuando se recibe un mensaje de error, se finaliza el intento de montaje y se proporciona la información relevante.

Por ejemplo: mount -F nfs -o hard 192.168.0.10:/nfs /nfs

En cuanto a si usar duro o blando, depende principalmente de a qué información acceda. . Por ejemplo, si desea ejecutar el PROGRAMA X a través de NFS, definitivamente no desea que el sistema genere una gran cantidad de mensajes de error debido a circunstancias inesperadas (como que la velocidad de la red se vuelva muy lenta de repente, conectar y desconectar la red). tarjeta, etc.). Si está utilizando el modo HARD en este momento, el sistema esperará hasta que pueda restablecer una conexión con el SERVIDOR NFS para transmitir información.

Además, si se trata de datos no críticos, también puede utilizar el método SOFT, como datos FTP, etc., para que su sesión no se suspenda cuando la máquina remota no pueda conectarse temporalmente o se apague.

rsize y wsize:

Configuración del tamaño de transferencia de archivos: V3 no limita el tamaño de transferencia, V2 solo se puede configurar en 8k como máximo, puede usar -rsize y -wsize para configúrelo. La configuración de estos dos parámetros tiene un gran impacto en el rendimiento de ejecución de NFS

bg: si el montaje no se puede montar correctamente durante el montaje, el sistema transferirá la operación de montaje a un segundo plano y continuará intentando mount, hasta que el montaje sea exitoso. (Por lo general, se debe usar bg al configurar el archivo /etc/fstab para evitar posibles fallas de montaje que puedan afectar la velocidad de inicio)

fg: Justo lo contrario de bg, es el parámetro predeterminado

nfsvers=n: establece la versión de NFS que se utilizará. El valor predeterminado es usar 2. La configuración de esta opción también depende de si el servidor admite NFS VER 3

puerto de montaje: establece el puerto de montaje <. /p>

puerto: según la configuración del puerto exportada por el servidor. Por ejemplo, si el servidor usa el puerto 5555 para exportar NFS, el cliente debe usar este parámetro para realizar la misma configuración.

timeo= n: establece el tiempo de espera. Cuando la transmisión de datos encuentra un problema, se intentará la retransmisión según este parámetro. El valor predeterminado es 7/10 segundos (0,7 segundos). Si la conexión de red no es muy estable, debe aumentar este valor y se recomienda utilizar el método HARD MOUNT. También es mejor agregar el parámetro INTR para poder finalizar cualquier acceso a archivos pendientes.

intr Permite que una notificación interrumpa una llamada NFS. Útil cuando el servidor no tiene respuesta y necesita darse por vencido.

udp: use udp como protocolo de transmisión de nfs (NFS V2 solo admite UDP)

tcp: use tcp como protocolo de transmisión de nfs

namlen= n: establece el nombre de archivo más largo permitido por el servidor remoto. El valor predeterminado de este valor es 255

acregmin=n: establece el tiempo mínimo de caché antes de que se actualice el archivo. El valor predeterminado es 3

acregmax=n: establece el tiempo máximo de caché antes. el archivo se actualiza. tiempo de caché, el valor predeterminado es 60

acdirmin=n: establece el tiempo mínimo de caché antes de la actualización del directorio, el valor predeterminado es 30

acdirmax=n: establece el máximo tiempo de caché antes de la actualización del directorio Tiempo de caché, el valor predeterminado es 60

actimeo=n: establezca acregmin, acregmax, acdirmin y acdirmax en el mismo valor. El valor predeterminado no está habilitado.

retry=n: establece cuánto tiempo se debe intentar volver a conectar antes de dejar de intentarlo cuando falla la transmisión de la red. El valor predeterminado es 10000 minutos

noac: desactiva el mecanismo de caché.

Método para utilizar múltiples parámetros al mismo tiempo: mount -t nfs -o timeo=3, udp, hard 192.168.0.30:/tmp /nfs

Tenga en cuenta que el NFS Las opciones de cliente y servidor no son necesariamente exactamente iguales y, a veces, entran en conflicto. Por ejemplo, si el servidor exporta en modo de solo lectura, pero el cliente se monta en modo de escritura, aunque se puede montar correctamente, se producirá un error al intentar escribir. Generalmente, cuando hay un conflicto entre las configuraciones del servidor y del cliente, prevalecerá la configuración del servidor.

4. Cómo configurar /etc/fstab

El formato de /etc/fstab es el siguiente:

fs_spec fs_file fs_type fs_options fs_dump fs_pass 

fs_spec: este campo define el dispositivo o sistema de archivos remoto donde se encuentra el sistema de archivos que desea cargar. Para nfs, este parámetro generalmente se establece así: 192.168.0.1:/NFS

. fs_file: punto de montaje local

fs_type: para NFS, este campo solo debe configurarse en nfs

fs_options: parámetros de montaje para conocer los parámetros que se pueden utilizar, consulte el montaje. parámetros anteriores.

fs_dump: el comando "dump" utiliza esta opción para verificar con qué frecuencia se debe volcar un sistema de archivos. Si no es necesario realizar el volcado, establezca este campo en 0

fs_pass - El comando fsck utiliza este campo para determinar el orden de los sistemas de archivos que deben analizarse al inicio. El valor de este campo para el sistema de archivos raíz "/" debe ser 1 y para otros sistemas de archivos debe ser 2. Establezca este campo en 0 si no es necesario escanear el sistema de archivos al inicio.

5. Introducción a algunos comandos relacionados con NFS

nfsstat:

Ver el estado de ejecución de NFS es muy útil para ajustar el funcionamiento de NFS

rpcinfo:

Ver información de ejecución de rpc, una herramienta que se puede utilizar para detectar las condiciones de ejecución de rpc.

4. Ajuste de NFS

Pasos de ajuste:

1. Mida la eficiencia de ejecución de la red actual, el servidor y cada cliente.

2. Analizar los datos recopilados y dibujar gráficos. Encuentre situaciones especiales, como un uso elevado del disco y de la CPU, o un uso ya elevado del disco.

3. Ajuste el servidor

4. Repita los pasos del uno al tres hasta alcanzar el rendimiento deseado.

Hay muchos problemas relacionados con el rendimiento de NFS. Generalmente, se deben considerar las siguientes opciones:

WSIZE, parámetros RSIZE para optimizar el rendimiento de ejecución de NFS

WSIZE y RSIZE. tienen un gran impacto en el rendimiento de NFS.

wsize y rsize establecen el tamaño de los bloques de datos entre el SERVIDOR y el CLIENTE. La configuración razonable de estos dos parámetros está relacionada con muchos aspectos. No solo los factores de software sino también de hardware afectarán la configuración de estos dos parámetros. como LINUX KERNEL, tarjeta de red, conmutador, etc.).

El siguiente comando puede probar el rendimiento de ejecución de NFS. El rendimiento de lectura y escritura se puede probar por separado para encontrar los parámetros adecuados. Para probar la lectura y escritura de grandes cantidades de datos dispersos, puede probarlo escribiendo scripts. Es mejor ejecutar MONTAR y desmontar repetidamente durante cada prueba.

time dd if=/dev/zero of=/mnt/home/testfile bs=16k count=16384

WSIZE para pruebas, RSIZE es preferiblemente un múltiplo de 1024, para NFS V2, 8192 es el valor máximo de RSIZE y WSIZE. Si está utilizando NFS V3, el valor máximo que puede probar es 32768.

Si el valor establecido es relativamente grande, es mejor ingresar al directorio en el montaje del CLIENTE y realizar algunas operaciones regulares (LS, VI, etc.) para ver si aparece algún mensaje de error. Los problemas típicos que pueden ocurrir incluyen que los archivos no se puedan enumerar completamente o que aparezca un mensaje de error durante LS. Los diferentes sistemas operativos tienen diferentes valores óptimos, por lo que se deben probar diferentes sistemas operativos.

Establezca el número óptimo de COPIAS para NFSD.

El número de COPIAS para NFSD en Linux se establece en el archivo de inicio /etc/rc.d/init.d/nfs. El valor predeterminado es 8 NFSD. La configuración de este parámetro generalmente se basa en él. se establece por el número de CLIENTES posibles. Al igual que WSIZE y RSIZE, es necesario encontrar el valor más cercano mediante pruebas.

UDP y TCP

Se pueden configurar manualmente o seleccionar automáticamente.

mount -t nfs -o sync, tcp, noatime, rsize=1024, wsize=1024 EXPORT_MACHINE:/EXPORTED_DIR /DIR

UDP tiene la conveniencia de una transmisión rápida y sin conexión transmisión Sin embargo, UDP no es tan estable como TCP en la transmisión. Cuando la red es inestable o está pirateada, es fácil reducir significativamente el rendimiento de NFS o incluso paralizar la red. Por lo tanto, los protocolos de transmisión deben seleccionarse adecuadamente para diferentes redes. nfs sobre tcp es relativamente estable y nfs sobre udp es más rápido. El uso del protocolo UDP puede brindar un mejor rendimiento cuando hay pocas máquinas y buenas condiciones de red. Cuando hay muchas máquinas y las condiciones de la red son complejas, se recomienda usar el protocolo TCP (V2 solo admite el protocolo UDP). Es mejor usar el protocolo UDP en la LAN, porque la LAN tiene una garantía de red relativamente estable. El uso de UDP puede brindar un mejor rendimiento. Se recomienda usar el protocolo TCP en la WAN. El protocolo TCP permite que NFS mantenga su mejor rendimiento. Rendimiento en un entorno de red complejo y estabilidad de transmisión. Puede consultar este artículo: .tw/ssn/unix/0212/unix021204.asp

Selección de versión

V3 es la opción predeterminada (RED HAT 8 usa V2 de forma predeterminada, SOLARIS 8 Lo anterior usa V3 de forma predeterminada), que se puede seleccionar a través de la opción vers= mount.

LINUX selecciona mediante nfsvers=n la opción de montaje.

5. Solución de problemas de NFS

1. NFSD no se inicia

Primero, confirme que la lista de salida de NFS existe; de ​​lo contrario, nfsd no se iniciará. Puede usar el comando exportfs para verificar. Si el comando exportfs no arroja resultados o arroja resultados incorrectos, debe verificar el archivo /etc/exports.

2. El proceso mountd no se inicia

El proceso mountd es una llamada a procedimiento remoto (RPC) y su función es responder a la solicitud del cliente para montar el sistema de archivos. El proceso mountd busca el archivo /etc/xtab para saber qué sistemas de archivos pueden utilizar los clientes remotos. Además, a través del proceso mountd, los usuarios pueden saber qué sistemas de archivos están actualmente montados por el sistema de archivos remoto y conocer la lista de clientes remotos. Para verificar si mountd se inicia normalmente, puede usar el comando rpcinfo. En circunstancias normales, la lista de salida debería verse así:

100005 1 udp 1039 mountd

100005 1 tcp 1113 mountd.

100005 2 udp 1039 montado

100005 2 tcp 1113 montado

100005 3 udp 1039 montado

100005 3 tcp 1113 montado

100005 3 tcp 1113 montado

p>

Si no aparece, puede verificar si el componente PORTMAP está instalado.

rpm -qa|grep portmap

3. fs tipo nfs no soportado por el kernel

El kernel no soporta el sistema de archivos nfs Recompile KERNEL para resolver. el problema.

4. No puedo contactar con portmapper: RPC: Error del sistema remoto - Conexión rechazada

Este mensaje de error se produce porque el PORTMAP en el lado del SEVER no se ha iniciado.

5. mount clntudp_create: RPC: Programa no registrado

NFS no se ha iniciado. Puede utilizar el comando showmout -e host para comprobar si el SERVIDOR NFS se inicia normalmente.

6. montaje: localhost:/home/test falló, motivo dado por el servidor: Permiso denegado

Este mensaje es un mensaje que puede aparecer cuando el cliente desea montar el servidor nfs. lo que significa que dice que esta máquina no tiene permiso para montar el directorio en el servidor nfs. La solución es, por supuesto, modificar el SERVIDOR NFS.

7. Ser bloqueado por el firewall

Muchas personas han ignorado este motivo. En un entorno de red con requisitos estrictos, generalmente cerramos todos los puertos cuando necesitamos usarlos. El puerto se abrirá solo cuando se abra el puerto. NFS usa el puerto 111 de forma predeterminada, por lo que primero debemos verificar si este puerto está abierto y también verificar la configuración de TCP_Wrappers.

6. Seguridad de NFS

La inseguridad de NFS se refleja principalmente en los siguientes cuatro aspectos:

1. Es difícil para los principiantes implementar el control de acceso. El mecanismo de NFS es fácil de usar, pero la precisión del objetivo de control es difícil de lograr

2. NFS no tiene un mecanismo de autenticación de usuario real, sino solo un mecanismo de autenticación de proceso para RPC/Mount. solicitudes

3. NFS anterior puede permitir que usuarios no autorizados obtengan identificadores de archivos válidos

4 En las llamadas remotas RPC, un programa SUID tiene privilegios de superusuario

Métodos. para fortalecer la seguridad de NFS:

1. Configure correctamente el directorio compartido en /etc/exports. Es mejor usar anonuid y anongid para que el CLIENTE de MOUNT a NFS SERVER tenga solo los permisos mínimos. Es mejor no usar root_squash.

2. Utilice el firewall IPTABLE para limitar el rango de máquinas que pueden conectarse al SERVIDOR NFS

iptables -A INPUT -i eth0 -p TCP -s 192.168.0.0/24 -- dport 111 - j ACEPTAR

iptables -A ENTRADA -i eth0 -p UDP -s 192.168.0.0/24 --dport 111 -j ACEPTAR

iptables -A ENTRADA -i eth0 -p TCP -s 140.0.0.0/8 --dport 111 -j ACEPTAR

iptables -A ENTRADA -i eth0 -p UDP -s 140.0.0.0/8 --dport 111 -j ACEPTAR

3 Para evitar posibles ataques DoS, el número de COPIAS de NFSD debe configurarse adecuadamente.

4. Modifique /etc/hosts.allow y /etc/hosts.deny para limitar CLIENTE

/etc/hosts.allow

portmap: 192.168. 0.0/255.255.255.0: permitir

portmap: 140.116.44.125: permitir

/etc/hosts.deny

portmap: TODOS: denegar

p>

5. Cambie el puerto NFS predeterminado

NFS usa el puerto 111 de forma predeterminada, pero también puede usar el parámetro de puerto para cambiar este puerto, lo que puede mejorar la seguridad hasta cierto punto.

6. Utilice Kerberos V5 como sistema de verificación de inicio de sesión