ManjaroをアップデートしたらNFSが動かなくなった話

経緯

何ヶ月か前に自宅サーバのManjaroを更新した際にそれまで機能していたNFSでのファイルへのアクセスができなくなった。当時は原因がわからずsshfsで代用していたのだが、最近になって新たに購入したMacbookから手軽にアクセスするため、改めてNFSの復旧を試みた

状況

結論

下記のManjaroのフォーラムに上がっており、この通りにカーネルを5.4にアップデートしたら治った。 My nfs-server not working since last update - Support / Network - Manjaro Linux Forum

原因究明(?)までの道のり

試したことは以下の通り 結局解決につながったわけではないが、半日かかって何も進歩がないというのも癪だったのでせめてもの自己満足としてここにアウトプットしておく。

なお、以降の例ではDNSサーバーのipを192.168.1.2、ドメイン名をnfs.home.example.netとしている。

クライアント側のエラーの確認

$ sudo mount -t nfs4 nfs.home.example.com:/srv/nfs /mnt/nfs  -v                      

Permission deniedConnection refuseといった漠然としたエラーでクライアント側では原因が検討がつかなかった。

とはいえ、動かなくなったきっかけはサーバーのバージョンアップだったため、クライアントの問題ではないとは思っていたので、特に掘り下げずに先に進んだ。

サーバ側のエラーや設定の確認

前述のようにsystemctlexportfsではとくにエラーは出ていないため、この時点ではサービス自体の問題はないと判断。VPNやDNS,FWなど、ネットワーク関係のの設定ミスにあたりをつける。

ネットワークの経路の確認

sshは通じているのでルーティングには問題ないはずだが念の為Pingで確認。

$ping nfs.home.example.com
$ping 192.168.1.2

ipでもドメインでも問題なく通じた。

クライアントからポートの確認

ここでやっとポートの確認をした。

nmap -p 2049 192.168.1.2
Starting Nmap 7.92 ( https://nmap.org ) at 2021-10-16 15:44 JST
Nmap scan report for 192.168.1.2
Host is up (0.00027s latency).

PORT     STATE  SERVICE
2049/tcp closed nfs

Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds

ポートへはアクセスできない。 ということでFWの設定ミスと判断し、FWの設定を確認した

ファイヤーウォール(nftables)の確認

#!/usr/bin/nft -f
# 中略
table inet filter {
  chain input {
    type filter hook input priority filter
    policy drop
    # 中略
    tcp dport { 111, 2049 }  accept
    udp dport { 111, 2049 }  accept
    # 中略
  }
  chain forward {
    type filter hook forward priority filter
    policy drop
  }
}
~

FWは設定を見た限り問題ないように見える(nfsに必要な2049111のポートをUDPTCPそれぞれで受け入れている) 念の為nftablesを止めて再度外部からのポートへの問い合わせをしたが結果は変わらず。

内部からのポートの確認

ここに来てとうとうサーバー自体が機能していないのではないかと疑い始める。 エラーも出てないのにそんなことはないだろうと思いつつ内部からポート確認

ss -atn | grep 2049 
# 何も出力なし。

案の定ポート自体が開いていないという状態。

ここに来てようやく自分の設定の問題ではないと確信し、Manjaroの不具合報告を探して見つけたのが先に載せたページ。そこにあった通りカーネルを更新したら解消した。

反省

余談

結局Macbookの方でNFSへの接続はユーザーIDが違う問題があり、まだできていなかったりする。先は長そう。