--- [管理番号 184] (最終更新 1999/02/17 23:58:45) Q. 時々 consoleに /kernel: arp info overwritten for 192.168.1.3 by 00:01:02:03:04:05 /kernel: arp info overwritten for 192.168.1.3 by 00:06:07:08:09:01 というメッセージが出ます。 A. 昔は「同じIPアドレスを使っているマシンが複数存在しませんか?」 というのが答えだったのですが、最近は「DHCPサーバを利用していませんか?」 という場合もあります。 LANボードにはMACアドレスという1枚1枚固有の識別番号が付いています。 メッセージの後半の : で区切られた6桁の数字がMACアドレスです。 FreeBSDに限らず多くのUNIX OSでは IPアドレスと このMACアドレスの対応を 覚えています。arp -a を実行すると その時点でそのマシンが知っているIPア ドレスと MACアドレスの対応が分かります。 このメッセージは「この対応が変更された」と報告しています。 IPアドレスを自動的に割り当てる機構、DHCPを使っているときにもこのメッセー ジが表示されます。一定のリース期間が過ぎたIPアドレスが新しく別のクライ アントに割り振られると「対応が変更された」ことになり、このメッセージが 表示されます。 --- [管理番号 189] (最終更新 2000/05/24 20:54:13) Q. resolv.conf 対応版の WIDE-DHCP を ports / packages でインストールしたの ですが、/etc/resolv.conf を書き換えてくれません。 A. まず注意として、3.2-RELEASE 以降では OS 標準で dhclient(8) をサポートし ているため、ifconfig_="DHCP" と設定しただけでは、dhclient が 使われます。 それでもなんらかの理由で WIDE 版を使いたい人は、/etc/rc.conf で以下の樣 に指定します。ポイントは dhcpc(8) のオプション -r ですが、もちろん、変数 network_interfaces も適切に設定する必要があります。ここでは例として ed0 を使用しますが、実際には使用するネットワークインタフェースに読み換えてく ださい。 ifconfig_ed0="DHCP" dhcp_program="/usr/local/sbin/dhcpc" dhcp_flags="-r" また、PC カードを使う場合は も参照してください。なお、以前の PAO では dhcp_program は不要でした。 それより古いリリースをお使いの場合では、/etc/start_if.ed0 に /usr/local/sbin/dhcpc -r ed0 の様に記述すれば良いでしょう。その際、/etc/rc.conf から ifconfig_ed0 などの余計なものは削除します。 --- [管理番号 190] (最終更新 1999/07/02 16:24:13) Q. resolv.conf 対応版の WIDE-dhcp を port でインストールしたのですが、 ホスト名を自動的に変更することはできないでしょうか? A. [管理番号 189] と同じく dhcp_flags に -n を指定して下さい。 --- [管理番号 387] (最終更新 1999/02/24 04:00:30) Q. DHCP を使うメリット・デメリットは何ですか? A. メリットは、限られた IP アドレスを有効に活用し、かつ/または設定を一元 管理できることです。 デメリットは、IPアドレスとそれが割り当てられた機器の対応状況を知るには、 DHCPサーバの記録を調べるといった手間が余計にかかりますので、障害や セキュリティ上の問題が発生したときに、原因追求の壁となるかもしれません。 また、第3者が勝手に機器を接続しやすくもなるでしょうから、障害を誘発したり、 セキュリティ破りが行いやすくなるかもしれません。 静的割り当ての場合は、IP アドレスの節約はできませんし、クライアントのMAC アドレスを調べるという手間がかかりますので、一元管理ができる以外のメリッ トがそもそも少ないです。 さらに DHCP サーバが倒れたときの対処の問題があります。複数の DHCP サーバ がネットワーク上にあっても直接は問題にならないのですが、互いに配布する情 報がかち合わないように気を付けなくてはなりません。特に動的割り当ての場合、 お互いに他のサーバが割り当てた IP アドレスを知ることができないので問題に なります。 とはいうものの、ある程度の数の DHCP クライアントがあれば、クライアント側 の設定が簡単になりますので、詳しくない人にも任すこともできますし、ネット ワークの構成が変化した場合でも、サーバ側の設定を変更するだけでクライアン トへ設定を反映させることができるので、採用するメリットはあるはずです。 また、Windows95 という OS を載せたパソコンは世の中にたくさん存在しますが、 この OS は、DHCP クライアントにしてやると、プラグ&プレイで接続したネット ワークに設定をあわせることができるものの、手動設定の場合は、どんな些細な 変更でもリブートを要求するという変な仕様になっています。これらのマシンを 多数管理しなければならない破目になったときには、ほとんど必須とも言えるか もしれません。 --- [管理番号 392] (最終更新 2002/10/21 05:19:40) Q. FreeBSD で動く DHCP サーバ、DHCP クライアントにはどんなものがありますか? A. FreeBSD 3.2-RELEASE 以降では、DHCP クライアントは標準で Internet Software Consortium (ISC) のものを採用しました。 また標準の GENERIC カーネルで Berkeley Packet Filter (bpf) が有効となり、 インストールフロッピーでもサポートしています。使用法は dhclient(8) をご 覧くだだい。 その他では ports 及び packages に、ISC と WIDE による実装があります。 どちらも、DHCP サーバ、リレーエージェント、クライアントの機能が含まれて います。また、MacTCP を使う古い MacOS (MacOS 7.5.3 以降では RARP/BOOTP/ DHCP/MacIP に対応) や X 端末などで必要になる BOOTP サーバの機能も合わせ 持っています。 ・WIDE-DHCP (ports/net/wide-dhcp) dhcps (サーバ), dhcpc (クライアント) WIDE-DHCP については以下の QandA も参照してください。 [管理番号 189] [管理番号 190] ・ISC-DHCP Version 2 (ports/net/isc-dhcp2) ISC-DHCP Version 3 (ports/net/isc-dhcp3) dhcpd (サーバ), dhclient (クライアント) 現在のところ Version 3 は開発中のものです。 それぞれの対応プラットフォームは、付属ドキュメントなどによると | WIDE 版 | ISC 版 ----------------------+-----------+---------- Sony NEWS-OS4 | ○ | BSD/386 1.1 | ○ | BSDI BSD/OS | ○(*1) | ○ FreeBSD | ○ | ○ NetBSD | ○ | ○ OpenBSD | ○(*4) | DEC Alpha OSF/1 | | ○ Ultrix | | ○ SunOS 4.1.4 | ○ | ○ Solaris 2.[567] | | ○ Linux | | ○ HPUX | | ○(*3) Mac OS X | | ○ NextStep | | ○ Rhapsody | | ○ bpf を持つ UNIX | ○(*2) | (*1): BSD/OS 3.0 標準添付 (*2): 付属ドキュメントに「bpf(Berkeley Packet Filter) を持つ OS への移植 は容易だと思われます。」との記述あり (*3): WWW に "Partial functionality: only systems with a single network interface are supported." との記述あり (*4): 上記 URL にパッチあり となっています。DHCP サーバとして使う場合で、WIDE 版が動かないシステムと 設定ファイルを併用したり、そういった OS を今後利用する可能性がある場合は、 ISC 版がいいかも知れません。 ISC 版には、MAC アドレスの集合にはある範囲の IP アドレスを割り当てるといっ た、多対多の割り当ての機能があります。WIDE 版にはありませんが、これを可 能にする非公式なパッチが存在するようです。その他、ISC 版の長所としては、 複数のネットワークインターフェイスを持つマシン上で動かした場合に、インタ フェースと対応するネットワークの設定を自動的に使用する、という点がありま す。加えて、定義ファイルが C ライクな文法を持ち、可読性に優れているとい うのもあげておきます。 ISC 版の設定例としては があります。ここで使われている OS は Solaris ですが、設定ファイルに違い はないので、参考になる筈です。 --- [管理番号 393] (最終更新 1999/02/17 23:58:45) Q. DHCPクライアントのホスト名やそのIPアドレスは、DNSではどう扱えばいい のでしょうか?また、DNSに登録するときに、どうデータベースを作ればいいの でしょうか? A. ここで問題となるのは、DHCPクライアントへIPアドレスが自動割り当てされ るのはありがたいが、次回割り当て時には違うIPアドレスが割り当てられるかも 知れない、ということです。同様の問題は、インターネットへのダイアルアップ 接続にPPPを使っている場合にも存在します。そして、DNS上での扱いには、次の ようなやり方があるでしょう。 A-1. DNSには登録しない: 通常、ファイル共有やメールなどのサーバに使うマシンをDHCPクライアントにす るということはないと考えられます。そこで、DHCPクライアントであるホストの 名前がネットワーク上で参照される(DNS検索の対象となる)ことはないとみなし てしまいましょう。この場合、DNSに登録せずとも特に困らないはずです。 A-2. お仕着せのホスト名であらかじめDNSに登録しておく: Anonymous FTPサーバには、接続してきたホストのIPアドレスからDNSを検索し、 正しい結果が返ってくるかどうかチェックするものがあります。このような場合、 クライアントとはいえ、一応正引き/逆引き出来ないと困ることになりますので、 ホスト名決め打ちであらかじめ登録しておけばいいでしょう。ここでは一例だけ 示します。つまり、正引きのデータベース(ここではdokosoko.zone)に、 ------------------------------------------------ dhcp17 IN A 17 dhcp18 IN A 18 dhcp19 IN A 19 ... ------------------------------------------------ その逆引きのデータベース(ここではdokosoko.rev)に ------------------------------------------------ 17 IN PTR dhcp17.dokosoko.domain. 18 IN PTR dhcp18.dokosoko.domain. 19 IN PTR dhcp19.dokosoko.domain. ... ------------------------------------------------ といったエントリを、DHCP用に割り当てられているIPアドレスに応じて作ってお くわけです。この場合、DHCPクライアントがどういうホスト名を名乗りたがって いるかを無視することになりますが、そのマシンでブラウザを動かしたりメール を読み書きしたりするには困らないはずです。インターネットプロバイダがPPP 用に確保しているアドレスでも、大抵これと同様のDNSデータベースが作られて いることを考えれば、感覚的にも納得できるでしょう。 A-3. DHCPクライアントが名乗る名前をダイナミックにDNSへ反映させる: 技術的に大変興味深いやり方です。ただ、インターネット上に公開するDNSで採 用するには、実装とその普及が不十分であると思われます。 A-4. IPアドレスを動的に割り当てるのをやめ、静的割り当てを採用する: DHCPでは、あらかじめクライアントのMACアドレスとIPアドレスを一対一で決め ておき、これを割り当てることもできます。この場合、MACアドレスが変らなけ ればIPアドレスも一定ですので、昔ながらのなじんだやり方が使えるようになり ます。 --- [管理番号 762] (最終更新 1999/02/17 23:58:45) 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) をどうぞ。 --- [管理番号 1446] (最終更新 2000/04/19 21:32:07) Q. 社内ネットワークで DHCP サーバーを構築しようと思っていますが、 Microsoft ネットワーククライアント向けに WINS サーバーの IP アドレス を DHCP で配布することはできますか? A. FreeBSD では、WIDE 版と ISC 版の両方の DHCP が利用できますが、それぞ れによって対応が違います。 1. WIDE 版の場合 dhcpdb.pool ファイルに、以下のオプションを指定します。()内は、DHCP オプションの番号です。 WINS Server(44): nnsv=IP Addressのリスト NetBIOS DD Server(45): ndsv=IP Addressのリスト Node Type(46): nbnt=ノードタイプ Scope ID(47): nbsc="パラメーターを指定" [設定例] nnsv=192.168.0.1, 192.168.1.1: nbnt=0x8: 詳しくは、man dhcpdb.pool をどうぞ。 なお、以上のオプションの動作は WIDE-DHCP 1.4.0、FreeBSD 2.2.8-RELEASE で確認しました。 2. ISC 版の場合 dhcpd.conf ファイルに、以下のオプションを指定します。()内は、DHCP オ プションの番号です。 WINS Server(44): option netbios-name-servers IP Addressのリスト NetBIOS DD Server(45): option netbios-dd-server IP Addressのリスト Node Type(46): option netbios-node-type ノードタイプ Scope ID(47): option netbios-scope "パラメーターを指定" [設定例] option netbios-name-servers 192.168.0.1, 192.168.1.1; option netbios-node-type 8; 詳しくは、man dhcp-options をどうぞ。 なお、以上のオプションの動作は ISC-DHCP version2、FreeBSD 3.2-RELEASE で確認しました。 --- [管理番号 2460] (最終更新 2004/04/09 05:04:55) Q. メディアタイプの自動認識がうまくいかない NIC の設定を、DHCP クライ アントで行いたいと思っています。 メディアタイプの手動設定をするには、/etc/rc.conf において、 ifconfig_de0="media 100baseTX mediaopt full-duplex" のように(通常はIPアドレスなども同時に設定しますが)、また DHCP クラ イアントを起動するには、 ifconfig_de0="DHCP" のように設定します。 これを両方同時に設定したいのですが、うまくいきません。 A. FreeBSDの起動時に実行されるネットワークインターフェース初期化スクリ プトは、/etc/rc.conf の ifconfig_${ifn} の内容によって、各インター フェースに対する処理内容を決定していますが、DHCP クライアントを起動 すのは、ifconfig_${ifn} が "[Dd][Hh][Cc][Pp]" である時だけです。 ですから、「DHCP クライアントを実行」しながら「 ifconfig(8) でメディ アタイプを指定」という処理をするには、rc.conf(5) の設定だけでは無理 で、少し工夫が必要です。 (注) 以下「de0」は、お使いの NIC に合わせて適宜「fxp0」などに 読み替えてください。 まず、 /etc/rc.conf で ifconfig_de0="DHCP" と指定しておき、DHCP クライアント(デフォルトでは dhclient(8) ) が 起動するようにしておきます。メディアタイプの指定については、次の 二通りの方法がありますが、例として 100BaseTX / 全二重に設定する場合 を挙げます。 (方法その1) メディアタイプを ifconfig(8) で手動設定する際のコマンドを、そのま ま /etc/start_if.de0 に ifconfig de0 media 100baseTX mediaopt full-duplex のように記述します。DHCP クライアントの起動前に、初期化スクリプト がこの内容を読み込んで実行してくれます。詳細は rc.conf(5) を参考 にしてください。 (方法その2) DHCPクライアントに dhclient(8) を用いる場合、/etc/dhclient.conf に interface "de0" { media "media 100baseTX mediaopt full-duplex"; } のように記述して、dhclient(8) 自身にメディアタイプを設定させます。 詳細は dhclient.conf(5) を参考にしてください。