第864回 レコード登録なしに名前解決を行える、ワイルドカードDNS「nip.io」をセルフホストする
https://gihyo.jp/admin/serial/01/ubuntu-recipe/0864?utm_source=feed
#gihyo #技術評論社 #gihyo_jp #技術動向 #OS #ネットワーク技術 #Ubuntu #DNS #名前解決 #nips_io #hosts
今回はSMBサーバーの別実装、KSMBDを紹介します。 SambaとKSMBD UbuntuでSMB(Server Message Block)サーバーを仕立てる場合は、通常はSambaを使用します。なんならUbuntu誕生前からそうです。 SMBはMicrosoftが策定しているプロトコルで、仕様書が公開されています。したがって、Sambaのような実装の開発が可能となります。 ご存知のとおりSambaは大きくsmbdとnmbdから構成されており、smbdはシングルスレッドで動作しています。また、ユーザースペースで動作するデーモンであり、SMBの仕様書にある内容をすべて実装するのが困難です。 そんな中登場したのがKSMBDです。こちらはカーネルスペースで動作しており、Sambaが抱えるいくつかの問題を解決します。そのうちの1つはマルチスレッド化による高速化です。ただしSambaを置き換えることを目標に開発されているわけではありません。 KSMBDはUbuntu 22.04 LTSで採用されたカーネルのバージョンである5.15からメインラインにマージされました。その後カーネル6.6で安定版とされました。24.04 LTSのカーネルは6.8以降なので、KSMBDを使用するにはちょうどいいタイミングです。なお、少なくとも24.04 LTSではKSMBDはカーネルモジュールとしてビルドされています。 KSMBDを動作させるには、ユーザースペースで動作するユーティリティであるksmbd-toolsも必要です。カーネルモジュールについては特に気にする必要はなく、使用するのはもっぱらこちらです。 動作環境 前述のとおり、カーネル6.6から安定版とされたことにより、使用するUbuntuのバージョンは24.04.2 LTSです。カーネルのバージョンは6.11で、ksmbd-toolsのバージョンは3.5.1です。 なお、特徴上Sambaとは同居できず排他利用です。したがって、Sambaが動作していない24.04 LTSを用意するのがおすすめです。 インストールと初期設定 では進めていきましょう。まずインストールですが、前述のとおりksmbd-toolsが対象です。 $ sudo apt install ksmbd-tools 次に設定ファイルを編集します。Sambaだと/etc/samba/smb.confですが、KSMBDでは/etc/ksmbd/ksmbd.confです。ただしデフォルトでは存在せず、/etc/ksmbd/ksmbd.conf.exampleがあるので、これをコピーします。 $ sudo cp /etc/ksmbd/ksmbd.conf.example /etc/ksmbd/ksmbd.conf あとはksmbd.confを編集していきます。 ksmbd.confは、中身を見るとわかるのですが、smb.confと書式が似ています。 もちろん違いもあって、SambaとKSMBDでは機能が違うのでセクションの項目には違いがあります。また、変数は使用できません。具体的には、smb.confでは%hはホスト名を表す変数ですが、ksmbd.confにはこの機能はありません。したがってnetbios nameはデフォルトではKSMBD SERVERですが、ここはホスト名に変えておくといいでしょう。 共有設定に関しては、よほど凝ったことをしていなければそのままコピー&ペーストすると動きます。 Sambaにはsmb.confの設定を確認するtestparmコマンドがありますが、KSMBDにはこれに類するものはありません。 設定を書き換えたら、適用します。 $ sudo systemctl restart ksmbd.service エラーが出なければ成功です。 Windowsはデフォルトの設定だとユーザーアカウントなしでのログインはできないため、ログインユーザーを作成します。 $ sudo ksmbd.adduser --add $USER 名前解決 これで共有フォルダーとしては使用できるようになりましたが、Ubuntuの「ファイル」やWindowsのエクスプローラーなどからは共有フォルダーとしては見えません。Sambaにあるnmbdに相当するものがKSMBDにはないため、他の方法を用意します。 avahi Ubuntuで見えるようにするためには、Avahiに設定を追加します。Ubuntu Serverにはインストールされないので、avahi-daemonパッケージをインストールしてください。そして/etc/avahi/services/smb.serviceを次の内容で作成します。