スポンサーサイト
投稿日時 : -------- --:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
-------- --:-- | スポンサー広告
UbuntuでDHCPサーバを稼働させてみる
投稿日時 : 2007-12-14 13:29
Ubuntu7.10でDHCPサーバを動かしてみた。インストールは
$ sudo apt-get install dhcp3-server
だけで完了。
 

■DHCPサーバの設定

設定は以下のような感じ。最低限これだけ書いておけば動くみたいです。LAN環境は最も一般的な192.168.0.0/24の単一サブネット。
/etc/dhcp3/dhcpd.conf
ddns-update-style none;

subnet 192.168.0.0 netmask 255.255.255.0{
	option routers			192.168.0.1;
	option subnet-mask		255.255.255.0;
	
	option domain-name		lan;
	option domain-name-servers	192.168.0.1;
	
	range dynamic-bootp		192.168.0.33 192.168.0.48;
	default-lease-time		21600;
	max-lease-time			43200;
}
1行目の「ddns-update-style none;」はBINDと連系してDHCPでのIP割り当てをDNSに反映させるDynamicDNSの機能を使用するかを設定している。ここではnoneなのでOFFにしてある。この記述はグローバル領域になければならない。個別のsubnetブロック内に書いても無効。ということはサブネット別にDDNSを使用するかしないかは選べないということだろうか?
 
設定項目の意味は以下。
routersデフォルトゲートウェイのIPアドレス
subnet-maskサブネットマスク
domain-nameドメイン名
domain-name-serversDNSサーバのIPアドレス(カンマ区切りで複数可)
range dynamic-bootp割り当てIPアドレスの範囲
default-lease-timeクライアントに指定されなかった場合のリース時間(秒)
max-lease-timeクライアントが指定できるリース時間の上限(秒)
 
$ sudo service dhcp3-server start
でサービス起動。
システムブート時に自動起動する場合は
$ sudo sysv-rc-conf dhcp3-server on
としておけばOK(serviceコマンドとsysv-rc-confコマンドはUbuntu7.10には標準ではインストールされてません)。
 

■DHCPクライアントの設定

クライアント側のマシンでは以下のように設定
Debian系(Ubuntu7.10)の場合
/etc/network/interfaces
 auto eth0
 iface eth0 inet dhcp
RedHat系(Fedora8)の場合
/etc/sysconfig/networking/devices/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
HWADDR=00:90:FE:2F:A6:11
ONBOOT=yes
設定を反映させるためにnetworkサービスを再起動
networkサービスを再起動
$ sudo service network restart
インターフェースが再起動されるとDHCPクライントがIPをもらいにいく。
 

■DHCPクライアント側での割り当てIPアドレスの確認

DHCPによって割り当てられたIPアドレスやその他の情報は以下のファイルに保存されている。
Ubuntu7.10(dhcp3-clientパッケージが標準インストール)
/var/lib/dhcp3/dhclient.eth0.leases
 
Fedora8
/var/lib/dhclient/dhclient-eth0.leases
 
lease {
  interface "eth0";
  fixed-address 192.168.0.48;
  option subnet-mask 255.255.255.0;
  option routers 192.168.0.1;
  option dhcp-lease-time 21600;
  option dhcp-message-type 5;
  option domain-name-servers 192.168.0.1;
  option dhcp-server-identifier 192.168.0.3;
  option domain-name "lan";
  renew 6 2007/12/15 06:46:45;
  rebind 6 2007/12/15 09:21:26;
  expire 6 2007/12/15 10:06:26;
}
192.168.0.48が割り当てられていることが分かる。IPアドレスの確認だけならifconfigコマンドだけでもいい。
 

■DHCPサーバ側での貸出しIPアドレスの確認

DHCPサーバ側ではどのIPアドレスを貸し出しているかは以下のファイルで確認できる。
/var/lib/dhcp3/dhcpd.leases
lease 192.168.0.48 {
  starts 6 2007/12/15 04:06:29;
  ends 6 2007/12/15 10:06:29;
  binding state active;
  next binding state free;
  hardware ethernet 00:90:FE:2F:A6:11;
}
ここで表示される時間はUTC(世界協定時間)なので日本時間にするには+9時間する。
 

■固定でIPを割り当てる方法

/etc/dhcp3/dhcpd.conf
subnet 192.168.0.0 netmask 255.255.255.0{
        option routers                  192.168.0.1;
        option subnet-mask              255.255.255.0;

        option domain-name              lan;
        option domain-name-servers      192.168.0.1;

        range dynamic-bootp 192.168.0.33 192.168.0.48;
        default-lease-time 21600;
        max-lease-time 43200;
        host vt550{
                hardware ethernet 00:90:FE:2F:A6:11;
                fixed-address 192.168.0.40;
        }
}
subnetブロック内にさらにhostブロックを追加し、特定のIPアドレスを割り当てるホスト(インターフェースカード)のMACアドレスを指定する。書式は以下。
host <ホスト名>{
        hardware ethernet <クライアントMACアドレス>;
        fixed-address <割り当てIPアドレス>;
}
 
 

■サブネット内に複数のDHCPサーバが存在しているときの挙動

 この先はLinuxではなくネットワークの分野になるが、ふと疑問に思ったことがある。自宅のLAN環境ではインターネットにつながっているデフォルトゲートウェイであるブロードバンドルータ(192.168.0.1/24)でもDHCPサーバが動いている。今回Ubuntuで新たにDHCPサーバを立ち上げたので同一サブネット内に複数のDHCPサーバが稼働していることになる。ルータのDHCPサーバのリース範囲を192.168.0.17~192.168.0.32にしてあるので重複したIPを割り当ててしまうということは起こりそうにはないが、どちらのDHCPサーバの情報を使うかはどうやって判断されているのかが分からない。
 少し検索するとこの疑問に答えてくれるぴったりの記事が見付かった。
 
2台のDHCPサーバーが同一LAN上にあったらどうなる?:ITpro
 
 まあ簡単に言えば早い者勝ちらしい。DHCPクライアントからブロードキャストされたDHCPDISCOVERパケットに対して、先にDHCPOFFERを返したDHCPサーバの情報を使うとのこと。クライアントがDHCPOFFERを受け取り、DHCPREQUEST-DHCPACKのやりとりが完了するまではその他のDHCPOFFERは無視される。
 
 ところで上記リンクは「オキテ破りにトライ! ネットワーク実験室:ITpro」の第8回の記事のみたいですが、他の記事も興味深いものが多い。やっていいことを書いてある参考書などはいくらでもあるが、やってはいけないことをやったらどうなるかを切り口に解説を進めるというやり方はレアだし、記憶に残りやすい気がする。
 
[参考]
DHCPの設定は正しいか? - @IT
 
スポンサーサイト
2007-12-14 13:29 | Linux | Comment(0) | Trackback(0)
Comment
コメントを書く
#

管理者にだけ表示
Trackback
Trackbak URL:http://itmst.blog71.fc2.com/tb.php/40-4a03b0e6
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。