しばらくopenbsdサーバー/FIN_WAIT_2を使用した後、NFSクライアント(Ubuntu)がハングします。

しばらくopenbsdサーバー/FIN_WAIT_2を使用した後、NFSクライアント(Ubuntu)がハングします。

NFSプロトコルを介してディレクトリを共有するopenbsdサーバーがあります。クライアントに新しいバージョンのUbuntuをインストールした後もNFSディレクトリをマウントしますが(任意の)時間が経過すると、nautilus、lsコマンドなどが完全に停止します。 NFSディレクトリをアンマウントするまでファイルシステムにアクセスできません。

情報を探しましたが、役に立ちませんでした。

私のサーバーはクリーンアップせずにpfを実行し、両側でNFSv3を使用し、rpcinfoなどはうまく機能します。情報のために、私のネットワークはwireguardを介して通信します。

誰かが私に何を探すべきか、どこを見なければならないのか教えてもらえますか?

ありがとうございます。

修正する

問題を発見したと思います。ある時点で、クライアントはフラグを含むパケットを送信します。Fサーバーへ(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

おすすめ記事