서버 방화벽을 비활성화하면 내보낸 디렉터리가 NFS 클라이언트에 나타납니다. 그렇지 않으면 그렇지 않습니다.
유선 인터페이스 방화벽의 "공용" 및 "내부" 영역("ssh"가 명시적으로 허용되고 취약점을 통과함)에서 "nfs" 서비스를 허용하려고 시도했지만 소용이 없었습니다. 아이디어가 부족해요.
편집: 서버 방화벽을 중지하고 내보낸 디렉터리를 마운트하면 서버에 다음 출력이 표시됩니다.
$ ss -o state established '( dport = :nfs or sport = :nfs )'
Netid Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp 0 0 192.168.1.66:nfs 192.168.1.68:vacdsm-app
편집: 상황을 복잡하게 만들기 위해 클라이언트가 서버에서 내보낸 디렉터리 목록을 수신하는 데 필요한 포트는 해당 디렉터리의 내용을 실제로 보는 데 필요한 포트와 다릅니다. 따라서 간단히 방화벽을 끄고 내보내기 디렉터리 목록으로 클라이언트를 구성한 다음 방화벽을 다시 켜고 클라이언트에서 사용할 수 있는지 확인할 수 있습니다. 정말 엉망입니다.
답변1
나열된 결과는 ss
네트워크에서 NFS를 작동시키는 데 필요한 단서를 제공합니다. 로컬 서비스는 으로 표시되지만 nfs
피어의 서비스는 입니다 vacdsm-app
. 서버의 서비스 목록을 보니 vacdsm
. 방화벽의 허용된 서비스 목록에 이를 추가하면 내보낸 디렉터리를 클라이언트 시스템에 설치할 수 있습니다.
내보내기 디렉터리를 나열하는 클라이언트에 여전히 문제가 있는 것 같습니다. 그래서 다른 포트도 열어야 하고 서비스도 허용해야 한다고 생각합니다.
편집: 클라이언트에 내보내기 목록을 표시하려면 다음을 통해 사용 중인 포트를 찾아야 합니다 mountd
.
$ rpcinfo -p | grep mountd
100005 1 udp 48008 mountd
100005 1 tcp 48008 mountd
mountd
그러다가 . 따라서 설정할 필요가 없습니다.MOUNTD_PORT
/etc/sysconfig/nfs
그런 다음 공용 인터페이스에서 허용되는 포트 목록에 포트 번호 자체를 추가했습니다.
$ sudo firewall-cmd --zone=public --add-port=48008/udp --permanent
$ sudo firewall-cmd --zone=public --add-port=48008/tcp --permanent
마지막으로 111을 명시적으로 지정해야 한다는 것을 알았으므로 이에 대해 위 명령을 반복했습니다.
$ sudo firewall-cmd --zone=public --add-port=111/udp --permanent
$ sudo firewall-cmd --zone=public --add-port=111/tcp --permanent
111은 표준 NFS 포트인데 왜 지정해야 하는지 모르겠습니다. 서버와 클라이언트가 서로 다른 버전의 OpenSUSE를 사용하고 있기 때문에 뭔가 누락되었을 수 있다고 생각됩니다.
답변2
Mac에서 연결을 시도할 때 포트 20048(해당 포트)도 열어야 한다는 것을 알았습니다 mountd
.
Mac은 NFSv4를 지원하지 않으며 NFSv3이 mountd
작동하려면 "보조 서비스"여야 합니다.