Debian(서버)에서 NFSv4를 비활성화하고 NFSv3을 허용합니다.

Debian(서버)에서 NFSv4를 비활성화하고 NFSv3을 허용합니다.

Debian 8 시스템의 NFS 서버를 NFSv3으로 제한하는 방법은 무엇입니까?

기본적으로 vers=3 및 vers=4를 사용하여 공유를 마운트할 수 있습니다.

/etc/default/nfs-커널-서버:

# To disable NFSv4 on the server, specify '--no-nfs-version 4' here
#RPCMOUNTDOPTS="--manage-gids"
RPCMOUNTDOPTS="--manage-gids --no-nfs-version 4"

이 옵션은 아무런 효과가 없는 것 같습니다(rpcinfo에는 여전히 nfs가 버전 4를 허용하는 것으로 표시됩니다).

답변1

RPCMOUNTDOPTS에 설명된 대로 변수를 수정하면 /etc/default/nfs-kernel-server작동하지 않으며 버그 보고서가 있는 것으로 나타났습니다 .#738063

이 변수는 다음 용도로 사용됩니다.rpc.마운트부르다:

# systemctl status nfs-kernel-server
● nfs-kernel-server.service - LSB: Kernel NFS server support
   Loaded: loaded (/etc/init.d/nfs-kernel-server)
   Active: active (running) since Sun 2016-06-12 19:46:01 CEST; 6s ago
  Process: 15110 ExecStop=/etc/init.d/nfs-kernel-server stop (code=exited, status=0/SUCCESS)
  Process: 15119 ExecStart=/etc/init.d/nfs-kernel-server start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/nfs-kernel-server.service
           └─15167 /usr/sbin/rpc.mountd --manage-gids --port 2048 --no-nfs-version 4

그러나 클라이언트는 계속 사용할 수 있습니다 -o vers=4.

대신 이 옵션을 전달해야 합니다.rpc.nfsd. init 스크립트를 보면 /etc/init.d/nfs-kernel-server이 변수가 RPCNFSDCOUNTrpc.nfsd에 전달된 유일한 변수인 것으로 보입니다. 이런 목적으로 의도된 것은 아니지만 작동하며, init 스크립트를 편집하는 것 외에는 유일한 옵션인 것 같습니다.

해결책:

에서는 대신 옵션을 /etc/default/nfs-kernel-server추가하십시오 .--no-nfs-version 4RPCNFSDCOUNTRPCMOUNTDOPTS

# Number of servers to start up
#RPCNFSDCOUNT=8
RPCNFSDCOUNT="8 --no-nfs-version 4"

NFS 서비스를 다시 시작합니다.

# systemctl restart nfs-kernel-server

테스트를 받아보세요:

# mount -t nfs -o vers=4 SERVER:/data/public /mnt
mount.nfs: Protocol not supported

버전 3은 여전히 ​​유효합니다.

# mount -t nfs -o vers=3 SERVER:/data/public /mnt

답변2

@basic6의 답변과 관련하여 CentOS 7 시스템에서 환경 파일이 저장된 위치를 알아내야 했습니다.

긴 이야기 짧게

.NET에서 RPCNFSDARGS 변수를 변경했습니다 /etc/sysconfig/nfs.

구성 파일은 어디에 있나요?

시스템 서비스는 다음과 같습니다.

sudo systemctl status nfs-server.service        
● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)
  Drop-In: /run/systemd/generator/nfs-server.service.d
           └─order-with-mounts.conf
   Active: active (exited) since Tue 2019-06-25 13:12:19 CEST; 7min ago
 Main PID: 44563 (code=exited, status=0/SUCCESS)
    Tasks: 0
   Memory: 0B
   CGroup: /system.slice/nfs-server.service

/usr/lib/systemd/system/nfs-server.serviceExecStart, EnvironmentFile 및 Wants/After 서비스가 있습니다 .

[Unit]
...
Wants=nfs-config.service
After=nfs-config.service

[Service]
EnvironmentFile=-/run/sysconfig/nfs-utils
...
ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS

따라서 "--no-nfs-version 4"를 포함하도록 RPCNFSDARGS 변수를 변경할 수 있습니다. 환경 파일은~에 대한nfs-config 서비스에 의해 생성됩니다. 우리에게 보여줘 /usr/lib/systemd/system/nfs-config.service:

[Service]
...
ExecStart=/usr/lib/systemd/scripts/nfs-utils_env.sh

/etc/sysconfig/nfs이 스크립트는 환경 파일을 생성하고 스크립트 상단에서 초기 변수를 가져옵니다.

#!/bin/sh

#
# Extract configuration from /etc/sysconfig/nfs and write
# environment variables to /run/sysconfig/nfs-utils to be 
# used by the systemd nfs-config service
#

nfs_config=/etc/sysconfig/nfs
if test -r $nfs_config; then
    . $nfs_config
fi

@basic6이 언급되었는데 /etc/default/nfs-kernel-server, 우리의 경우에는 입니다 /etc/sysconfig/nfs.

--no-nfs-version옵션 추가

/etc/sysconfig/nfs다음으로, 더 깔끔해 보이기 때문에 RPCNFSDCOUNT 대신 RPCNFSDARGS 변수를 변경하기로 선택합니다 .

diff --git a/etc/sysconfig/nfs b/var/tmp/nfs.XXS8L74E
index 74104d3..82bc1b4 100644
--- a/etc/sysconfig/nfs
+++ b/var/tmp/nfs.XXS8L74E
@@ -11,7 +11,7 @@
 #LOCKD_UDPPORT=32769
 #
 # Optional arguments passed to rpc.nfsd. See rpc.nfsd(8)
-RPCNFSDARGS=
+RPCNFSDARGS="--no-nfs-version 4"
 # Number of nfs server processes to be started.
 # The default is 8. 
 RPCNFSDCOUNT=32

답변3

당신이 원하는 것 같아요

RPCMOUNTDOPTS="--manage-gids -V 3"

-V 3호환성 문제는 없는 것 같은데 --manage-gids테스트는 해보지 않았습니다.

답변4

편집 후 nfs-kernel-server를 다시 시작합니다. 다른 Linux 배포판에서는 /etc/nfsmount.conf를 편집하는 다른 방법을 사용합니다.

# Protocol Version [2,3,4]
# This defines the default protocol version which will
# be used to start the negotiation with the server.
Defaultvers=3

그런 다음 nfs를 다시 시작하면 nfs3만 활성화됩니다.

관련 정보