FreeBSD QandA 2460

FreeBSD QandA

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 まで お知らせください。