DHCPサーバの構築

  1. 概要
  2. サーバ側の設定
  3. クライアント側の設定

1.概要

aqua にDHCPサーバを構築して、各講義室でDHCPを使用できるようにします。

この作業の前に、IPマスカレードが正常に動くことを確認してください。 正常に動いていることが確認できたら以下の作業に移ります。


2.サーバ側の設定

[2.1] DHCPパッケージのインストール

まずはDHCPパッケージをインストールしてください。

# apt-get install dhcpEnter

(もちろん dselect など他の方法でインストールしてもらっても構いませんが)


[2.2]設定ファイルの編集

IPマスカレードでも行ったように、設定ファイルを編集することで DHCPを使用できるようにします。

[2.2.1] /etc/dhcpd.confのバックアップと編集

まず、/etc/dhcpd.conf の編集を行いますが、その前に、オリジナルの ファイルのバックアップとして /etc/dhcpd.conf.bk をとっておきましょう。

# cp /etc/dhcpd.conf /etc/dhcpd.conf.bkEnter

バックアップを取り終わったら、いったん /etc/dhcpd.conf ファイルの中身を 全部消して、以下のものを書き込んでください。

default-lease-time 6000;
max-lease-time 72000;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
option domain-name-servers 133.87.45.70, 133.87.45.66, 133.87.1.11;
option domain-name "ep.sci.hokudai.ac.jp";

subnet 192.168.0.0 netmask 255.255.255.0 {
   range 192.168.0.130 192.168.0.254;
}

各行の意味は次の通りです。

  1. 特にクライアントからの時間枠の要求がなければ,6000秒の間IPアドレスを貸す.
  2. 要求があった場合最大限許される貸し出し時間は72000秒
  3. サブネットマスクに255.255.255.0を指定
  4. ブロードキャストアドレスに192.168.0.255を指定
  5. ゲートウェイに192.168.0.1を指定
  6. DNSサーバに133.87.45.70 133.87.45.66 133.87.1.11を指定
  7. DNSサーバのあるドメインを指定

    最後の3行  192.168.0.130から192.168.0.254までのIPアドレスを貸し出す
    ※192.168.0.10 から 192.168.0.129 までのアドレスは固定の PC に割り当てます

[2.2.2] 固定のプライベートアドレスの割り当て

DHCP では動的にIPアドレスを振ることが出来ますが、 特定の PC に固定のIPアドレスを割り振ることも可能です。 情報実験機(電脳大飯店)などには固定のIPアドレスを割り振ります。 なお、PC を特定するのには MACアドレス(ネットワークカード固有の番号) を使用します。

なお、ここに書いてあることはあくまで参考なので、 この段階で固定プライベートアドレスを設定する必要はありません。

例:

00:90:cc:a2:f4:e8」という MACアドレスを持つ 情報実験機13番 に IPアドレス「192.168.0.113」 を割り振るためには以下の行を /etc/dhcpd.conf に書き加えます。

host joho13 {
   hardware ethernet 00:90:cc:a2:f4:e8;
   fixed-address 192.168.0.113;
}

書式は

host ホスト名 {
   hardware ethernet MACアドレス ;
   fixed-address IPアドレス ;
}

となっています。これは PC 一つ一つを個々に設定する必要があります。 また、動的アドレスと重ならないようにIPアドレスを設定してください。 (「ホスト名」に関しては、便宜上分かりやすいものをつけているだけで、 何を書き込んでも動作はします。)

[2.2.3] 再編集後の設定ファイルの反映

一度dhcpd(DHCPサーバとして機能するためのdaemon) を起動した後に 設定変更をするためには /etc/dhcpd.conf を書き換える必要があります。 しかし、書き換えただけでは設定は反映されません。 反映するためには dhcpd を再起動する必要があります。 再起動の方法は こちら を見てください。


[2.3] 実行ファイルの編集

[2.3.1] /etc/init.d/dhcp のバックアップ

/etc/init.d/dhcp の編集を行いますが、こちらもその前にオリジナルのファイルの バックアップを /etc/init.d/dhcp.bkとして取っておきます。

# cp /etc/init.d/dhcp /etc/init.d/dhcp.bkEnter

[2.3.2] /etc/init.d/dhcp の編集

バックアップを取り終わったら、いったん /etc/init.d/dhcp ファイルの中身を 全部消して、以下のものを書き込んでください。

#!/bin/sh
# Start or stop dhcpd daemon

test -x /usr/sbin/dhcpd || exit 0

DHCPDPID=/var/run/dhcpd.pid

 case "$1" in
   start)
       start-stop-daemon --start --verbose --pidfile $DHCPDPID \
               --exec /usr/sbin/dhcpd -- -cf /etc/dhcpd.conf eth1
     ;;
   stop)
       start-stop-daemon --stop --verbose --pidfile $DHCPDPID
     ;;
   restart)
       start-stop-daemon --stop --verbose --pidfile $DHCPDPID
       sleep 2
       start-stop-daemon --start --verbose --pidfile $DHCPDPID \
               --exec /usr/sbin/dhcpd -- -cf /etc/dhcpd.conf eth1
     ;;
   *)
     echo "Usage: /etc/init.d/dhcp {start|stop|restart}"
     exit 1
 esac

 exit 0

[2.3.3] /etc/init.d/dhcp の解説

先ほど編集した、/etc/init.d/dhcpの各行の意味は次の通りです。 (空白行は飛ばして数えています)

  1. シェルスクリプトの行頭につけるおまじない
  2. このファイルが「dhcpd」というdaemonを動かす ファイルであることを示すコメント
  3. /usr/sbin/dhcpd というファイルが無ければ、 この段階で実行中止
  4. DHCPDPIDという変数に/var/run/dhcp.pid の中身を引用する。 (/var/run/dhcp.pid にはdhcpのdaemonの プロセス番号が書き込まれている)
  5. 引数による場合分け
  6. 引数が「start」の場合
  7. プロセス番号DHCPDPIDのプロセスがあることを確認し、 詳しい参考情報を出力する。(→次の行へ続く)
  8. (→前の行からの続き)/usr/sbin/dhcpdを実行する。 なお、実行の際には、設定ファイルの/etc/dhcpd.conf を読み込む。また、 内部ネット用のネットワークカード(eth1)でdhcpdを動かす。
  9. 「start」の部分の終了
  10. 引数が「stop」の場合
  11. プロセス番号DHCPDPIDのプロセスを停止させる。 詳細な参考情報も出力される。
  12. 「stop」の部分の終了
  13. 引数が「restart」の場合
  14. 11行目と同じ
  15. 2秒間お休み
  16. 7行目と同じ
  17. 8行目と同じ
  18. 「restart」の部分の終了
  19. 「*」(以上の3つ以外)の場合
  20. Usage: /etc/init.d/dhcp {start|stop|restart}」と出力
  21. 終了
  22. 場合分け「case」を閉じる
  23. 終了

なお、このファイルに書いてある内容の詳細については start-stop-daemon や dhcpd の man を見るか、 関連書籍を参考にするなどして下さい。

$ man start-stop-daemonEnter
$ man dhcpdEnter

[2.3.4] 実行権限の取捨

今編集した /etc/init.d/dhcp は実行ファイルです。 これは、dhcpdというDHCPサーバとしての役割を果たす daemon を動かすのに使用するファイルなので、 パーミッションを調べて実行権限があるかどうか調べてください。 もしなければ、実行権限を付けてください。 また、/etc/init.d/dhcp.bk はバックアップファイルなので このファイルの実行権限ははずしておいてください。

# chmod 755 /etc/init.d/dhcpEnter
# chmod 644 /etc/init.d/dhcp.bkEnter

[2.4] ネットワークの設定ファイルの編集

[2.4.1] /etc/network/interfaces の編集

/etc/network/interfaces に次の一行を追加してください

route add -host 255.255.255.255 dev eth1

[2.5] dhcpdの起動・停止方法

[2.5.1] /etc/init.d/dhcp を使用しない方法

設定した dhcp を起動・停止させる方法はいくつかありますが、 まずは、先ほどの実行ファイルを使わずにそれを行ってみます。

  • 起動

    まず、起動させるには以下のコマンドを入力します。 すると、その下の文字群が出てきて、dhcpdが起動されます。

    # /usr/sbin/dhcpd -cf /etc/dhcpd.conf eth1Enter
    
    
    Internet Software Consortium DHCP Server 2.0pl4
    Copyright 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium.
    All rights reserved.
    
    Please contribute if you find this software useful.
    For info, please visit http://www.isc.org/dhcp-contrib.html
    
    Listening on LPF/eth1/00:90:cc:a2:f7:ba/192.168.0.0
    Sending on   LPF/eth1/00:90:cc:a2:f7:ba/192.168.0.0
    Sending on   Socket/fallback/fallback-net
    

    後ろの「-cf /etc/dhcpd.conf」は設定ファイルを参照 することを指定しています。 また「eth1」は、このDHCPサーバの機能を内部ネット用の ネットワークカード(eth1)で稼動させることを指定しています。

  • 停止

    停止させるには、まずdhcpdのプロセス番号を調べ、そのプロセスを 「kill」コマンドで停止させます。

    # ps aux | grep dhcpEnter
    root     xxx  0.0  1.2  1596  808 ?        S    Jul13   0:00 /usr/sbin/dhcpd-2.2.x -cf /etc/dhcpd.conf eth1
    # kill xxxEnter   (xxxはdhcpdのプロセス番号)
    

    これで、dhcpdは停止されます。

  • パソコン自体の再起動

    他にも、パソコン自体を再起動してしまう方法もあります。 ただし、少々時間はかかります。

    # rebootEnter

    こうすると、自動的にdhcpdは停止、そして再起動されます。

    [2.5.2] /etc/init.d/dhcp を使用した方法

    今度は少々賢く、/etc/init.d/dhcp を使用して起動・停止を行ってみます。

  • 起動

    まず、起動させるには以下のコマンドを入力します。 すると、その下の文字群が出てきて、dhcpdが起動されます。

    # /etc/init.d/dhcp startEnter
    
    
    Internet Software Consortium DHCP Server 2.0pl4
    Copyright 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium.
    All rights reserved.
    
    Please contribute if you find this software useful.
    For info, please visit http://www.isc.org/dhcp-contrib.html
    
    Listening on LPF/eth1/00:90:cc:a2:f7:ba/192.168.0.0
    Sending on   LPF/eth1/00:90:cc:a2:f7:ba/192.168.0.0
    Sending on   Socket/fallback/fallback-net
    

    コマンドが何を意味するのかは /etc/init.d/dhcp の解説 を参照してください。 (実際にはさきほどの起動方法と変わらないことをやっています。)

  • 停止

    /etc/init.d/dhcp でdhcpd のプロセス番号を自動的に探し出してくれるので 以下のコマンドでdhcpdを停止できます。

    # /etc/init.d/dhcp stopEnter
    
    Stopped process in pidfile `/var/run/dhcpd.pid' (pid xxx).     (xxxはdhcpdのプロセス番号)
    

    これで、dhcpdは停止されます。

  • 再起動

    起動・停止をいっぺんに行うこともできます。

    # /etc/init.d/dhcp restartEnter
    
    
    Stopped process in pidfile `/var/run/dhcpd.pid' (pid xxx).
    Starting /usr/sbin/dhcpd...
    Internet Software Consortium DHCP Server 2.0pl4
    Copyright 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium.
    All rights reserved.
    
    Please contribute if you find this software useful.
    For info, please visit http://www.isc.org/dhcp-contrib.html
    
    Listening on LPF/eth1/00:90:cc:a2:f7:ba/192.168.0.0
    Sending on   LPF/eth1/00:90:cc:a2:f7:ba/192.168.0.0
    Sending on   Socket/fallback/fallback-net
    

    こうして、自動的にdhcpdは停止、そして再起動されます。

    以上のどれかの方法を用い、dhcpdを起動させてください。 起動したらサーバ側の準備はOKです。次はクライアント側の 設定に移ります。


  • 3. クライアント側の設定

    [3.1] Debian GNU/Linux における設定

    Debian GNU/Linux でDHCPを使用する際には、 クライアント側もそれに応じたパッケージをインストールする必要があります。

    [3.1.1] dhcpcd パッケージをインストール

    DHCPのクライアントになるにはクライアント側もそのための パッケージ dhcpcd をインストールする必要があります。

    # apt-get install dhcpcdEnter

    [3.1.2] 再起動

    このパッケージはインストールと同時に設定もしてくれるはずなので、 インストールが終了したらケーブルを接続して再起動してください。 (ケーブルの接続はIPマスカレードのときと同じで構いません。)

    [3.1.3] 確認

    再起動を確認したらちゃんとDHCPで動いているのか確認してみましょう。

    $ /sbin/ifconfig -aEnter

    こうすると、

    eth0      Link encap:Ethernet  HWaddr 00:90:CC:A2:F7:BA
              inet addr:192.168.0.130  Bcast:192.168.0.255  Mask:255.255.255.0
    ・・・・・
    

    上のような表示がずらずら出てくると思います。 この中で問題なのが「 inet addr 」です。これはそのパソコンに割り振られた IPアドレスです。これが「 192.168.0.130 〜 192.168.0.254」のいずれかとなっていればOKです。 ルータ側の /etc/dhcpd.conf の編集 で 「192.168.0.130から192.168.0.254までのIPアドレスを貸し出す 」としましたよね?

    以上でDHCPの設定は終了です。



    [3.2] Windows98 における設定

    Windows では Linux のように新たにインストールする必要はありません。 こちらの設定はIPマスカレードでおこなったのと同じ場所を書き換える事になります。

    [3.2.1] IPアドレスなどの設定

    こんどはDHCP用に以下のように設定値を書き換えてください。

    aqua に接続するローカル機のDHCPでの設定
    設定タグ 詳細項目 答え方
    IP アドレス IP アドレス 「IPアドレスを自動的に取得」にチェックをつけてください。
    ネットマスク
    ゲートウェイ ゲートウェイ 不要です。
    DNS設定 ホスト名 「DNSを使わない」にチェックをつけてください。
    ドメイン名
    DNS サーバ

    [3.2.2] 確認

    こちらでもDHCPでネットワークに接続できているのか、確認します。

    「ファイル名を指定して実行」を選び, winipcfg と打鍵してください。

    IPアドレスの欄の所に「 192.168.0.130 〜 192.168.0.254」 のいずれかであれば、DHCPでの接続ができています。

    以上でDHCPの設定は終了です。




    >>aqua(内部ネット用サーバ)の基本部分構築ガイド のインデックスに戻る


    最終更新日: 2001/09/02(森川靖大) Copyright © 2001 EPnetFan