FreeBSD QandA 762
Q. DHCP クライアントにするために wide-dhcp をインストールしたのですが、
dhcpc を実行すると 以下のエラーメッセージが出て IP アドレス等を取得で
きません。
Can't open bpf to read the dhcp message : No such file or directory.
A. カーネルに bpfilter (Berkeley Packet Filter) の組み込みと /dev/bpf?
のデバイスがないと Q の様な現象になります。カーネルの構成の見直しと
/dev/bpf? のデバイスがあるか確認します。
1) カーネル再構築
カーネルコンフィグファイルに下記の様な記述があるか確認します。
なければ書き足して再構築してください。
pseudo-device bpfilter 4
数字の部分は組み込むフィルタの数です。この数字の分だけ同時にフィ
ルタを使うことが出来ます。
2) デバイス作成
/dev ディレクトリに bpf? のデバイスがあるか確認します。 なければ
/dev/MAKEDEV bpf0 という具合にして作成します。 数字の部分は カーネ
ルで用意したフィルタの数と同じだけ 作成すれば良いでしょう。数字は
0 から始まります。 例の場合だと bpf0 〜 bpf3 まで作成します。
(少なすぎると 折角カーネルに組み込んだフィルタが使えなくなり、多す
ぎるとそのデバイスは使われることがありません)
これで使えるはずです。
この bpf (Berkeley Packet Filter) とは、ネットワークインターフェースが
拾ってくるパケットをユーザプロセスに渡したり、ユーザプロセスからネット
ワークインターフェースへパケットを投げたりすることが出来る仮想デバイス
です。
カーネルが持っていないプロトコルは、bpf を通してユーザプロセスで扱う
ことが出来るようになります。
詳しくは bpf(4) をどうぞ。
間違い・追加情報を見付けた場合は、
修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで
お知らせください。