ManjaroをアップデートしたらNFSが動かなくなった話
経緯
何ヶ月か前に自宅サーバのManjaroを更新した際にそれまで機能していたNFSでのファイルへのアクセスができなくなった。当時は原因がわからずsshfsで代用していたのだが、最近になって新たに購入したMacbookから手軽にアクセスするため、改めてNFSの復旧を試みた
状況
- 自宅サーバのOSは Manjaro Linux 4.19.208-1
- 数ヶ月前にそれまでできていたNFSへの接続ができなくなった
systemctl status nfs-server
やexportfs
ではとくにエラーは出ていない そのため当初はvpnやFWなどネットワーク関係の問題を疑っていた
結論
下記の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 denied
や Connection refuse
といった漠然としたエラーでクライアント側では原因が検討がつかなかった。
とはいえ、動かなくなったきっかけはサーバーのバージョンアップだったため、クライアントの問題ではないとは思っていたので、特に掘り下げずに先に進んだ。
サーバ側のエラーや設定の確認
前述のようにsystemctl
やexportfs
ではとくにエラーは出ていないため、この時点ではサービス自体の問題はないと判断。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
に必要な2049
と111
のポートをUDP
、TCP
それぞれで受け入れている)
念の為nftables
を止めて再度外部からのポートへの問い合わせをしたが結果は変わらず。
内部からのポートの確認
ここに来てとうとうサーバー自体が機能していないのではないかと疑い始める。 エラーも出てないのにそんなことはないだろうと思いつつ内部からポート確認
ss -atn | grep 2049
# 何も出力なし。
案の定ポート自体が開いていないという状態。
ここに来てようやく自分の設定の問題ではないと確信し、Manjaroの不具合報告を探して見つけたのが先に載せたページ。そこにあった通りカーネルを更新したら解消した。
反省
- バージョンアップに伴う不具合は他にも同じ事例が出ていないか早めにフォーラムを確認するべき
- Archwikiに頼りすぎない
- ManjaroはArch系なので大概のことはArchwiki通りでなんとかなるが、Manjaro固有の問題もあるので。
- エラーがないからといってちゃんと機能しているとは限らない
- 今回は流石にレアケースだと思うが、ポート確認など他の手段でも確認できるようにしておく
- 特に今回は設定ファイルを検証することに非常に時間をかけてしまっていたので、先にポートを確認しておけば設定の問題ではないことはすぐに分かったはず。
余談
結局Macbookの方でNFSへの接続はユーザーIDが違う問題があり、まだできていなかったりする。先は長そう。