dhclientコマンドは、端末のネットワークを設定する際にDHCPサーバーとやりとりをする役割を担います。
本連載では、ネットワーク管理の基本コマンドを順を追って紹介していきます。基本書式と用法、主要なオプション、用例サンプルを示しますので、manやhelp代わりに通読し、各コマンドでできることを順次おさらいしてみてください。今回は、端末のネットワーク設定を行う際に利用する「dhclient」コマンドを紹介します。
なお、本連載では、執筆時点の最新版「Red Hat Enterprise Linux(RHEL)」および「CentOS」環境で動作を確認しています。また、用法事例はIPv4(Internet Protocol version 4)ネットワークを前提にしています。コマンドのサンプルなどで一部環境に依存した出力例となる場合がありますので、その際には適宜ご自身の環境に合わせて読み替えてください。
ノートPCなどをクライアントとして運用する場合、必要に応じて「DHCP(Dynamic Host Configuration Protocol)」サーバーから借り受ける形でIP(Internet Protocol)アドレスを設定することが一般的です。多くのLinuxディストリビューションでは、システム起動時に「dhclient」などのコマンドを実行し、DHCPサーバーと通信することで、IPアドレスの借り受けと「NIC(Network Interface Card)」への設定を行っています。
dhclientコマンドは、DHCPプロトコル(およびBOOTPプロトコル*)を利用し、NICにIPアドレスを設定します。IPアドレスの設定以外にも、借り受けたIPアドレスの解放や、デフォルトルーターやネームサーバーの情報を確認する目的にも利用します。
*BOOTPプロトコル Bootstrap Protocol(ブートストラッププロトコル)。ネットワークデバイスにIPアドレスを割り当てる目的で定義されたプロトコルですが、現在はBOOTPの上位互換プロトコルであるDHCPが主流であるため、あまり使われていません。dhclientコマンドではこのプロトコルにも対応しています。
DHCPサーバーから借り受けたIPアドレスに関する情報は、CentOSの場合「/var/lib/dhclient」ディレクトリ以下に、「dhclient-eth0.leases」などとネットワークデバイス名を含む形のテキストファイルで書き出されます。同様に、dhclientのPID(プロセスID)ファイル*は「/var/run/dhclient-<デバイス名>.pid」として、デバイスごとに作成されます。CentOS 7以降のデフォルト環境では、個別のデバイスについての設定ファイル(*.confファイル)は作成されませんので、必要に応じて「/etc/dhcp/dhclient-<デバイス名>.conf」として作成します。
*PIDファイル Linux系OSではプログラム(プロセス)にID番号を割り振り、それぞれをファイルとして保存します。これをPIDファイルと呼びます。dhclientもデバイスごとにプロセスが動作しますので、それぞれにPIDファイルが作成されます。
なお、DHCPサーバーからIPアドレスを借り受けると、「/etc/resolv.conf」に記述されているDNS(Domain Name System)サーバーのアドレス情報も更新されます。DHCPサーバーから指定されたものではなく任意のDNSサーバーを使用したい場合には、NICの設定ファイル(CentOS 7以降は「/etc/sysconfig/network-scripts/ifcfg-<デバイス名>」)に「PEERDNS=no」を追加します。
dhclientコマンドの主なオプションは次の通りです。
オプション | 意味 |
---|---|
-1 | 1回の借り受けに対し一度だけIPアドレスの取得を試みる |
-4 | IPv4アドレスと設定値を取得するときにDHCPv4プロトコルを使用する |
-6 | IPv6アドレスと設定値を取得するときにDHCPv6プロトコルを使用する |
-F | FQDN(Fully Qualified Domain Name:完全修飾ドメイン名)を指定する(-Hオプションとの同時使用は不可) |
-H | ホスト名を指定する(-Fオプションとの同時使用は不可) |
-d | 常にフォアグラウンドプロセスとして実行するよう強制する |
-e | 環境変数を定義する |
-p | 任意のポート番号(UDP)を指定する |
-q | エラー以外のメッセージを標準エラー出力へ書き出さない |
-r | 現在借り受けているIPアドレスを開放する |
-s | DHCPサーバーのアドレスを指定する |
-cf | 設定ファイルのパスを指定する |
-lf | リース(借り受け)ファイルのパスを指定する |
-pf | PIDファイルのパスを指定する |
Linux端末をクライアントとする場合、システムの起動時にDHCPサーバーからIPアドレスを借り受け、ネットワークに接続します。通常はそのIPアドレスでネットワーク機能を利用しますが、ネットワーク設定の見直しなどで、割り当てられたIPアドレスを解放したい場合があります。
この場合は下の実行例のように、dhclientコマンドに「-r」オプションを付けて実行すると、DHCPサーバーから借り受けている全てのIPアドレスを開放することができます。
なお、引数にNICのデバイス名(eth0、wlan0など)を指定すると、そのデバイスに割り当てられたIPアドレスのみを開放できます。
$ sudo dhclient -r Reloading /etc/samba/smb.conf: smbd.
dhclientコマンドは、任意のNICにIPアドレスを割り当てることもできます。
下のコマンド実行例では、IPアドレス未設定の無線LANデバイス「wlan0」に対し、DHCPサーバーから借り受けたIPアドレスを設定しています。ここでは、dhclientが起動したときに「<デバイス名>.leases」に期限が切れていないリース情報(IPアドレスの借り受け情報)があるかどうかチェックし、まだ有効な場合はその期限が切れるまで、記述された情報を使う場合のものです。
実行例の一つ目のコマンドではifconfigコマンドを使い、wlan0のネットワーク設定の状況を確認しています。出力を見ると「inet6 addr:」で始まる行はありますが、「inet addr:」で始まる行がありません。これは、IPv6アドレスは割り当てられているものの、IPv4のアドレスが割り当てられていないことを意味します。そこで、二つ目のコマンドではdhclientコマンドを使い、wlan0にIPv4アドレスを割り当てています。
三つ目のコマンドであらためてifconfigコマンドを使ってwlan0を確認すると、IPv4アドレスが割り当てられていることが分かります(「inet addr:」の行)。
なお、dhclientではシステムのシャットダウン/再起動後も同じIPアドレスを使用できるよう、DHCPサーバーから割り当てられた情報を「dhclient-<デバイス名>.leases(dhclient-eth0.leasesなど)」の名称でネットワークデバイス名を含む形のテキストファイルに保存しています(CentOSの場合は「/var/lib/dhclient」ディレクトリ以下に保存)。
$ ifconfig wlan0 wlan0 Link encap:Ethernet HWaddr 00:66:a9:e4:3d:37 inet6 addr: fe80::222:cfff:fef4:1d0d/64 Scope:Link ・ (中略) ・ $ sudo dhclient wlan0 $ ifconfig wlan0 wlan0 Link encap:Ethernet HWaddr 00:66:a9:e4:3d:37 inet addr:192.168.12.29 Bcast:192.168.12.255 Mask:255.255.255.0 ・ (中略) ・
Copyright © ITmedia, Inc. All Rights Reserved.