Linuxのdhclientプロセスの概要

CentOS6.5ではデフォルトでdhclientというデーモンプロセスが実行されています。このプロセスの概要についてまとめました。

目次
(1)dhclientとは?
(2)dhclientの概要
(3)dhclient.confの概要
(4)dhclientのオプション
(5)dhclient-scriptの概要
 

(1)dhclientとは?


 
1)psコマンドの出力内容は?
 
$ ps -ef
root 1280 1199 0 Jun05 ? 00:00:00 /sbin/dhclient -d -4 -sf /usr/libexec/nm-dhcp-client.action -pf /var/run/dhclient-eth0.pid -lf /var/lib/dhclient/dhclient-xxx-eth0.lease -cf /var/run/nm-dhclient-eth0.conf eth0
 
2)どのパッケージに属する?
 
$ rpm -qf /sbin/dhclient
dhclient-4.1.1-38.P1.el6.centos.x86_64
 
3)ConsoleKitパッケージの文書ファイル一覧
 
$ rpm -qd dhclient
/usr/share/doc/dhclient-4.1.1/README.dhclient.d
/usr/share/doc/dhclient-4.1.1/dhclient.conf.sample
/usr/share/doc/dhclient-4.1.1/dhclient6.conf.sample
/usr/share/man/man5/dhclient.conf.5.gz
/usr/share/man/man5/dhclient.leases.5.gz
/usr/share/man/man8/dhclient-script.8.gz
/usr/share/man/man8/dhclient.8.gz
 
4)dhclientパッケージの概要
 
“yum info dhclient”コマンドでパッケージの概要を確認しました。
 
①サマリー
 
Provides the dhclient ISC DHCP client daemon and dhclient-script
 
②URL
 
http://isc.org/products/DHCP/
 
③説明
 
DHCPを使用するには、DHCPサービスまたはリレーエージェントをインストールし、クライアント上でDHCPクライアントデーモンを使用する必要がある。
 
このdhclientパッケージはISC DHCPのクライアントデーモンを提供する。
 

(2)dhclientの概要


 
dhclientの概要をmanを見て確認しました。
 
・DHCPプロトコル、BOOTPプロトコルを使ってネットワークインタフェースの設定を行う。上記プロトコルが使用できない場合は、静的にアドレスを割り当てる。
 
・IPアドレス以外にもデフォルトルーターやネームサーバーの情報も提供できる。
 
・起動時にdhclient.confを読んで、システムで使用しているすべてのネットワークインタフェースのリストを取得する。
 
そして各インタフェース毎にDHCPプロトコルを使ってネットワークの設定をする。
 
・リースされたIPアドレスは、dhclient.leasesファイル内で管理され、リブート後もこのファイル内のIPアドレスをリクエストして維持される。
 
・新しいリースIPアドレスが割り当てられるとdhclient.leasesファイルの最後に追加される。
 
このファイルのサイズが大きくなり過ぎないように、時々リースデータベースから新しいファイルを時々再作成する。
 
古いファイルは、次にdhclientがデータベースから書き換えるまでdhclient.leases~という名前で維持される。
 
古いファイルはDHCPサーバーが利用できない場合にも一時的に使用される。
 
 

(3)dhclient.confの概要


 
・dhclient.confは、dhclient用の設定情報を含む。
 
・dhclient.confは、フリーフォームのアスキーテキストファイル。
 
・設定例
 
$ more /usr/share/doc/dhclient-4.1.1/dhclient.conf.sample

send host-name "andare.fugue.com";
send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
send dhcp-lease-time 3600;
supersede domain-search "fugue.com", "home.vix.com";
prepend domain-name-servers 127.0.0.1;
request subnet-mask, broadcast-address, time-offset, routers,
        domain-search, domain-name, domain-name-servers, host-name;
require subnet-mask, domain-name-servers;
timeout 60;
retry 60;
reboot 10;
select-timeout 5;
initial-interval 2;
script "/etc/dhclient-script";
media "-link0 -link1 -link2", "link0 link1";
reject 192.33.137.209;

alias {
  interface "ep0";
  fixed-address 192.5.5.213;
  option subnet-mask 255.255.255.255;
}

lease {
  interface "ep0";
  fixed-address 192.33.137.200;
  medium "link0 link1";
  option host-name "andare.swiftmedia.com";
  option subnet-mask 255.255.255.0;
  option broadcast-address 192.33.137.255;
  option routers 192.33.137.250;
  option domain-name-servers 127.0.0.1;
  renew 2 2000/1/12 00:00:01;
  rebind 2 2000/1/12 00:00:01;
  expire 2 2000/1/12 00:00:01;
}

 
 

(4)dhclientのオプション


 
実際の環境で実行されているdhclientのオプション値を確認してみました。
 
psコマンドで確認するとdhclientは下記のように実行されていました。
 
root 1280 1199 0 Jun05 ? 00:00:00 /sbin/dhclient -d -4 -sf /usr/libexec/nm-dhcp-client.action -pf /var/run/dhclient-eth0.pid -lf /var/lib/dhclient/dhclient-xxx-eth0.lease -cf /var/run/nm-dhclient-eth0.conf eth0
 
●dhclientのオプション
 
[-d]
dhclientをフォアグラウンドプロセスとして実行するように強制。
 
[-4]
IPv4アドレスと設定値を取得するのにDHCPv4プロトコルを使用。
 
[-sf /usr/libexec/nm-dhcp-client.action]
リースを取得した際、dhclientによってinvokeされるネットワーク設定スクリプトのパス。
 
[-pf /var/run/dhclient-eth0.pid]
プロセスIDファイルのパス。
 
[-lf /var/lib/dhclient/dhclient-xxx-eth0.lease]
リースデータベースファイルのパス
 
[-cf /var/run/nm-dhclient-eth0.conf]
クライアント設定ファイルのパス
 
 

(5)dhclient-scriptの概要


 
dhclient-scriptの概要をmanで確認しました。
 
psコマンドでdhclientを見ると下記オプションが指定されていました。
-sf /usr/libexec/nm-dhcp-client.action
 
これは、dhclient-scriptのファイルを指定しています。このファイルが何を行っているのか分からなかったのでmanで確認してみました。
 
●dhclient-scriptの概要
 
・DHCPクライアントのネットワーク設定スクリプト。
 
・dhclientによって時々invokeされる。
 
・dhclientがアドレスをリクエストする前に各インタフェースの初期設定を設定するのに使用され、すでに発行されたアドレスをテストしたり、リースされた際にインタフェースの最後の設定をセットするのにも使用される。
 
リースが取得出来ない場合は、事前に定義されたリースをテストするのにも使用される。
 
・このスクリプトは、エンドユーザーによってカスタマイズされるようになっていない。
 
ローカル用にカスタマイズしたい場合は、提供されているHOOKSを使用する。
 
このフックによって/etc/resolv.confファイルを作成してデフォルトの振る舞いをオーバーライドすることが出来る。

関連記事の目次

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です