OpenSuse Tumbleweed에서 NFS 서버의 방화벽을 여는 방법은 무엇입니까?

OpenSuse Tumbleweed에서 NFS 서버의 방화벽을 여는 방법은 무엇입니까?

서버 방화벽을 비활성화하면 내보낸 디렉터리가 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작동하려면 "보조 서비스"여야 합니다.

관련 정보