한동안 openbsd 서버/FIN_WAIT_2를 사용한 후 NFS 클라이언트(우분투)가 정지됩니다.

한동안 openbsd 서버/FIN_WAIT_2를 사용한 후 NFS 클라이언트(우분투)가 정지됩니다.

NFS 프로토콜을 통해 디렉토리를 공유하는 openbsd 서버가 있습니다. 클라이언트에 새 버전의 우분투를 설치한 후에도 여전히 NFS 디렉토리를 마운트하지만 (임의의) 시간이 지나면 nautilus, ls 명령 등이 완전히 정지됩니다. NFS 디렉터리를 마운트 해제할 때까지 파일 시스템에 액세스할 수 없습니다.

정보를 찾아봤지만 도움이 되지 않았습니다.

내 서버는 정리 없이 pf를 실행하고 양쪽에서 NFSv3을 사용하며 rpcinfo 등은 잘 작동합니다. 정보를 위해 내 네트워크는 wireguard를 통해 통신합니다.

누군가 나에게 무엇을 찾아야 할지, 어디를 봐야 할지 말해 줄 수 있나요?

감사해요.

고쳐 쓰다

문제를 발견한 것 같아요. 어느 시점에서 클라이언트는 플래그가 포함된 패킷을 보냅니다.에프서버로(tcpdump 결과):

12:16:45.022393 192.168.100.2.998 > 192.168.100.1.2049: F 141:141(0) ack 117 win 1284 <nop,nop,timestamp 3929122361 2338823414> (DF)

다음 패킷 때문에 막혔습니다.

12:16:45.022470 192.168.100.1.2049 > 192.168.100.2.998: . ack 142 win 1030 <nop,nop,timestamp 2338823422 3929122361>
12:17:45.187125 192.168.100.2.998 > 192.168.100.1.2049: . ack 117 win 1284 <nop,nop,timestamp 3929182521 2338823422> (DF)
12:17:45.187153 192.168.100.1.2049 > 192.168.100.2.998: . ack 142 win 1030 <nop,nop,timestamp 2338823542 3929182521>
12:18:45.849519 192.168.100.2.998 > 192.168.100.1.2049: . ack 117 win 1284 <nop,nop,timestamp 3929243193 2338823542> (DF)
12:18:45.849548 192.168.100.1.2049 > 192.168.100.2.998: . ack 142 win 1030 <nop,nop,timestamp 2338823664 3929243193>
12:19:47.294335 192.168.100.2.998 > 192.168.100.1.2049: . ack 117 win 1284 <nop,nop,timestamp 3929304637 2338823664> (DF)
12:19:47.294359 192.168.100.1.2049 > 192.168.100.2.998: . ack 142 win 1030 <nop,nop,timestamp 2338823786 3929304637>

이런 줄이 무한정 나오네요...

실제로 연결은 계속 유지됩니다.FIN_WAIT_2. 클라이언트 측에서:

client$ netstat -an | grep 2049
tcp        0      0 192.168.100.2:998       192.168.100.1:2049      FIN_WAIT2 

그리고 서버에서:

vps$ doas pfctl -s states | grep 2049 
all tcp 192.168.100.1:2049 <- 192.168.100.2:998       ESTABLISHED:FIN_WAIT_2

답변1

차단된 항목이 있는지 확인하는 것은 pf쉽습니다. 규칙을 log(모두?) 추가하고 사용하여 무슨 일이 일어나는지 확인하기만 하면 됩니다.blocktcpdump -neti pflog0

그런 다음 서버의 모든 NFS 관련 포트( rpcinfo -p목록이 제공됨)를 클라이언트(예: nc -z <server_ip> 2049)에서 액세스할 수 있는지 확인하십시오.

셋째, Linux가 서버와 동일한 프로토콜을 사용하고 있는지 확인하십시오(OpenBSD는 기본적으로 UDP를 사용하지만 이는 -t런타임에 * 플래그를 추가하여 변경할 수 있음 nfsd) 및 예약된 포트(예: < 1024)를 사용하지 않습니다.생각하다이는 기본적으로 그렇습니다.

내 상황

클라이언트에서 다음 설정을 사용하여 방화벽을 넘어 OpenBSD 서버와 Linux 클라이언트(Debian 11.6) 간에 NFS를 성공적으로 사용했습니다.

/etc/auto.master:

+auto.master
/nfs    /etc/auto.nfs

/etc/auto.nfs:

music    -fstype=nfs,vers=3,rw,soft,rsize=32768,wsize=32768,noatime,timeo=1200,retrans=10,proto=tcp,resvport,nolock,noacl 10.17.18.10:/shared/media/music

방화벽에는 pass나열된 대로 서버가 수신하는 모든 포트에 대한 규칙이 있습니다.tcpudprpcinfo -p

관련 정보