DHCP

 

DHCP

ネットワーク上のコンピュータに動的にIPを割り振るプログラム

Port 67/UDP
   
Daemon Program /usr/sbin/dhcpd

ダウンロード先 (RPM版)

http://www.redhat.com/swr/i386/dhcp-2.0pl5-4.i386.html
         (tar.gz版) http://www.isc.org/products/DHCP/dhcp-prerelease.html
   
Install

(RPMの場合)
rpm --install dhcp-2.0pl5-8.i386.rpm
(tar.gzの場合)
# tar zxvf ~/dhcp-2.0b1pl1.tar.gz
# cd ~/dhcp-2.0b1pl1
# ./configure
# make

# make install

   
実行方法 /etc/init.d/dhcpd start
   
備考 環境 eth0(グローバルIP) eth1(ローカルIP)
今回、ローカル内のみでIP発行をする。
名前解決を行わなければいけないので、DNSは、動いてる事を前提とする。
 

 

苦情・訂正・校正など・・ tomoyo@kmr.homeip.net
なんでもくれ・・

 


設定前の確認
 
eth1 Link encap:Ethernet HWaddr 00:90:CC:0D:6D:10
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3067259 errors:0 dropped:0 overruns:0 frame:0
TX packets:7484576 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:2123913013 (2025.5 Mb) TX bytes:4242219301 (4045.6 Mb)
Interrupt:5 Base address:0x3000
 

上記のように、MULTICASTとなっていれば、大丈夫だがなってない場合には、カーネルの再構築を行って、MULTICASTが使えるように構築しなおさなければならない。

 
routeの設定
 
route add -host 255.255.255.255 dev eth1
 
上記のコマンドを打って、
 
route
all-ones * 255.255.255.255 UH 0 0 0 eth1
192.168.1.0 * 255.255.255.0 U 0 0 0 eth1
 
このように表示されていれば成功。クライアントからの要求でDHCPからIPアドレスをもらうには、255.255.255.255の IP パケットを送ることができるようになっている必要がある。
 
しかし毎回、起動するたびに同じ事打ちこむのも面倒なんで、/etc/init.d/dhcpd に書きこむと楽なので以下にその書きこむ部分を書く
 
start() {
# Start daemons.
echo -n $"Starting $prog: "
route add -host 255.255.255.255 dev eth1
daemon /usr/sbin/dhcpd ${DHCPDARGS}
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/dhcpd
return $RETVAL
}

stop() {
# Stop daemons.
echo -n $"Shutting down $prog: "
route del -host 255.255.255.255 dev eth1
killproc dhcpd
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/dhcpd
return $RETVAL
}

 

/etc/dhcpd.conf を編集する


設定
 


説明
server-identifier dns1.kanae.moe; ・・#1 DHCP サーバー自身のホスト名または IP アドレス.
shared-network DHCP-NET { ・・#2 任意の名前を設定しログ参照時に確認しやすくする.
subnet 192.168.1.0 netmask 255.255.255.0 { ・・#3 サブネットブロックの開始く
option domain-name-servers dns1.kanae.moe; ・・#4 DNSサーバアドレスを指定する。','で分けて複数指定する事も出来る。またIPアドレスでの指定も可能。
option domain-name "kanae.moe" ・・#5 ドメインを指定する
option netbios-name-servers 192.168.1.1; ・・#6 NetBIOSネームサーバのアドレスを指定
option netbios-dd-server 192.168.1.1; ・・#7 Samba関連
option netbios-scope ""; ・・#8 WindowsからLinuxマシンのHDDをネットワークコンピュータとして見るための設定らしい・・;;
option netbios-node-type 8; ・・#9 NetBIOSノードタイプ指定
option subnet-mask 255.255.255.0; ・・#10 サブネットマスクを指定する
option broadcast-address 192.168.1.255; ・・#11 ブロードキャストアドレス指定 この場合255.255.255.255でも可だと思う
option routers 192.168.1.1; ・・#12 デフォルトルートのアドレス
option ip-forwarding on; ・・#13  
option ntp-servers 192.168.1.1; ・・#14 NTP serverのアドレスを指定する。
range 192.168.1.2 192.168.1.250; ・・#15 リースするIPアドレスの範囲を指定する

   
     
クライアントのリースデータベースを作成
 
touch /var/lib/dhcpd.leases
 
上記のコマンドを打ちこめば作成される。またサーバを起動した後は、新しいデータべすを作成しない方が良いらしい
 
 
 
 
 

起動・・運用

ローカル側内のみだけで、運用するので、/etc/sysconfig/dhcpdの中身をかえてやる必要がある。

# Command line options here
DHCPDARGS=eth1

上記のように明示的にeth1を設定してやれば、/etc/init.d/dhcpd を起動するとき、eth1(ローカル)側内で起動する事が出来るようになる。

#起動方法#
/etc/init.d/dhcpd start

 
 

注意点

 

ファイヤフォールの内側で、IPアドレスを発行してもらうには、67/UDPのデータを通してやる必要がある。
これは、DHCPが、67/UDPポートを使用してIPを発行しているので為だ。
IPTABLESやipchainsでファイヤーウオォールを立ててない場合は関係ないので、特に気にする必要はない。

具体的な設定方法は、Netfilterを参照




Enter