最新更新日  2003.04.16.

IPv6 で NFS しよう;-)。
  5-CURRENT の真ん中辺り(どの辺りだ?;-)くらいから NetBSD から持ってきたコードで NFS が IPv6 対応になりました。当初は /etc/exports に IPv6 アドレスが書けなかったりして「一体全体どうやって使うのだ?」とか思っていたのですが、その後は変更されたみたいで、今では NFS サーバが IPv6 で動く様になりました。

  では実際に設定を施してみましょう。それにしても 5.0-RELEASE からはようやっと世間一般の NFS と同様に rpc_lockd が動作する様になりした。今まではサーバ側の lockd は「ぶろーくん」状態だったのですがこれで NFS サーバの構築もおっけ〜でしょう。多分(^^;;。そもそも、本当にロックが効いているのか僕は確認していません;-P。

  /etc/rc.conf には以下の様に書いてみましょう。これはサーバ側の設定ですね。rpc_lockd や portmap を動かしましょう;-)。

nfs_server_enable="YES"
nfs_server_flags="-u -t -n 4"
single_mountd_enable="YES"
rpc_statd_enable="YES"
rpc_lockd_enable="YES"
portmap_enable="YES"

  クライアント側はこんな感じで良いでしょう。多分。

nfs_client_enable="YES"
portmap_enable="YES"
rpcbind_enable="YES"
rpc_lockd_enable="YES"

  さささ。続いてサーバ側で exports ファイルを書きます。ここには IPv6 アドレスが記述できる様になったので本当に嬉しいですね。以下はサンプルです。上は今まで通りの IPv4 の記述、そして下は IPv6 の記述ですね。

  まぁ、ホスト名を書いている方はそのままで OK でしょう。NFS クライアント側(mount_nfs(8))は先に IPv6 でアクセスしに行きます。NFS サーバ側が IPv6 対応していないと mount_nfs がひたすら待たされて mount できないですね。しゃーないので IPv4 アドレスで mount_nfs コマンドを叩いてたり(mount_nfs hostname:/usr と書くと IPv6 でアクセスしてまいダンマリに、しょーがないので mount_nfs 192.168.1.1:/usr と書くしかない。と言う事です)してましたが・・。

# IPv4 Access
/usr/ports      -maproot=root    -network 192.168.3
/cdrom          -mapall=takachan -network 192.168.3 -mask 255.255.255.0
/usr/local      -mapall=takachan -network 192.168.3 -mask 255.255.255.0
/home/takachan  -mapall=takachan -network 192.168.3 -mask 255.255.255.0
# IPv6 Access
/usr/ports      -maproot=root    -network 3ffe:505:2019:100::/64
/cdrom          -mapall=takachan -network 3ffe:505:2019:100::/64
/usr/local      -mapall=takachan -network 3ffe:505:2019:100::/64
/home/takachan  -mapall=takachan -network 3ffe:505:2019:100::/64

  で、今までの IPv4 での NFS の利用ならならこれでほとんど mount_nfs で mount できたのですが IPv6 で mount_nfs しようとするとマウント時に udp6 が通らないやんけ。とか文句を言われてしまいます。で、よぉく考えてみると rpcbind は libwrap の管理下にあるんですな。と、言う事は /etc/hosts.allow に追加の記述をしてあげる必要があると言う事ですね。rpcbind に対して IPv6 のネットワークから許可する記述を追加します。

rpcbind : 192.168.3.0/255.255.255.0 : allow
rpcbind : [3ffe:505:2019:100::]/64  : allow
rpcbind : [fe80::%rl1]/10           : allow
rpcbind : ALL : deny

  とまぁ、こんな感じで設定してから、/etc/rc.d/nfsserver restart とかしてあげると NFS mount が IPv6 でできる様になります。tcpdump で様子を見てみると確かに IPv6 で mount している様子が伺えます。うれぴー。

  皆さんも是非 IPv6 で NFS mount してみてください。「だからなんなんだ?」とは言わない様に(^^;;。先にも書きましたが、今までは mount_nfs した時にホスト名を書いていると全然ダメでよく IPv4 アドレスに指定し直してから接続していたのですが(この現象は NFS サーバが IPv4 にしか対応していない時に mount_nfs(8) した場合も一緒でした)、これからは NFS サーバ側を IPv6 対応にしてしまいましょう。



Copyright (c) 1997-2004 takachan@running-dog.net All Rights Reserved.