FreeBSD QandA 2460
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) を参考にしてください。
間違い・追加情報を見付けた場合は、
修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで
お知らせください。