Fedora 38의 NFSv2

Fedora 38의 NFSv2

NFS 파일 시스템에 문제가 있습니다. 클라이언트는 서버에 연결할 수 없지만 서버는 요청을 수신하고 클라이언트 액세스 권한을 부여합니다. 구성은 다음과 같습니다.

NFS 서버

  • 페도라리눅스 38
  • /home/user/nfs/모드 0777이 포함된 폴더
  • IP 주소는 다음과 같습니다.193.232.173.2
  • /etc/export콘텐츠:
    /home/user/nfs 193.232.173.251(rw,sync,no_acl,insecure,no_root_squash)
    

NFS 클라이언트

  • UNIX 기반의 디스크 없는 운영 체제(oc2000, RT OS BAGET이라고도 함, UNIX 자체가 아니라 UNIX 기반)
  • IP 주소는 다음과 같습니다.193.232.173.251
  • 다음 명령줄을 사용하여 프로그램 코드를 통해 NFS 마운트:
    mount -t nfs -o rsize=4096,wsize=4096 193.232.173.2:/home/user/nfs /nfs
    

다른 명령줄 옵션을 사용할 수 없습니다.

결과

NFS가 마운트되었지만 클라이언트에서(프로그램 코드로도) 읽고 쓸 수 없습니다. NFS 서버는 NFS 버전 2를 지원하지 않고 클라이언트는 NFSv2에서만 작동한다는 것을 발견했습니다.

NFSv2를 지원하는 Linux 커널(버전 6.6.8)을 구축했지만 연결되지 않습니다. 클라이언트는 위의 명령을 전송하고 아무 일도 일어나지 않습니다.

시스템 로그에는 다음 로그가 포함됩니다.

rpc.mountd authenticated mount request from 193.232.173.251:1023 for /home/user/nfs (/home/user/nfs)
rpc.mountd granted access to /home/user/nfs for 193.232.173.251
rpc.mountd nfsd_fh: found 0x55f566742490 path /home/user/nfs
rpc.mountd nfsd_fh: inbuf '193.232.173.251 4 \x408a0300938534b9'
  • 클라이언트 옵션 조합을 시도했지만 /etc/export도움이 되지 않았습니다.
  • 설정 전환을 시도했지만 /etc/nfs.conf도움이 되지 않았습니다.
  • [nfsd]부품은 /etc/nfs.conf다음과 같습니다.
    debug=1
    udp=on
    tcp=on
    vers2=y
    vers3=y
    vers4=n
    vers4.0=n
    vers4.1=n
    vers4.2=n
    rdma=y
    rdma-port=20049
    

위에 주어진 메시지를 찾기 위해 Linux 소스 코드를 살펴보았지만 아무 소용이 없었습니다.

저 좀 도와 주 시겠어요? NFS를 통해 클라이언트와 서버가 작동하도록 하려면 또 무엇을 해야 합니까?

UPD. 다음은 rpcinfo -p의 출력입니다.

    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100005    1   udp  20048  mountd
    100005    1   tcp  20048  mountd
    100024    1   udp  44697  status
    100024    1   tcp  37411  status
    100005    2   udp  20048  mountd
    100005    2   tcp  20048  mountd
    100005    3   udp  20048  mountd
    100005    3   tcp  20048  mountd
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100227    2   tcp   2049  nfs_acl
    100227    3   tcp   2049  nfs_acl
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100227    2   udp   2049  nfs_acl
    100227    3   udp   2049  nfs_acl
    100021    1   udp  60925  nlockmgr
    100021    3   udp  60925  nlockmgr
    100021    4   udp  60925  nlockmgr
    100021    1   tcp  46315  nlockmgr
    100021    3   tcp  46315  nlockmgr
    100021    4   tcp  46315  nlockmgr

답변1

다들 감사합니다. 문제가 원래 방식으로 해결되었습니다. 이 클라이언트 컴퓨터의 문서에 따라 Fedora 22로 다운그레이드하고 RPC 및 NFS를 구성했는데... 작동합니다! 클라이언트는 서버에 연결하고 파일을 읽고 쓰기도 합니다!

답변2

NFS 서버에서 (Fedora 38에 대해 이야기하고 있습니다)문제 해결을 위해당신은 원할 것이다

  • SELINUX를 끄거나, 시작할 때마다 수동으로 끄거나, setenforce 0수정하여 /etc/selinux/config다음으로 설정하세요.permissive
  • 방화벽 끄기
  • /etc/nfs.conf구문이 모든 곳에서 올바른지 실제로 확인하십시오 .vers<num> = y

가장 먼저 떠오르는 것은 최신 NFSv4가 모두 하나의 포트(2049)에 있다는 것입니다. NFSv3은 mountd, statd, lockd및 에 대한 nfsd다른 포트 와 함께 포트 111에 있습니다 sm-notify. /etc/nfs.confFedora38의 nfsv4에서 (현재) 주석 처리된 내용을 볼 수 있습니다 . 우선, 기본적으로 NFSv4로 설정된 현재 Linux 배포판이 NFSv2로 폴백되도록 허용하려면 nfs 서버가 올바른 포트(방화벽 대신)에서 수신 대기하고 있는지 확인하여 nfsv2 클라이언트가 다음과 같은지 확인해야 합니다. .

관련 정보