Dynamic Host Configuration Protocol 主機的設定問題
[root@test
root]# ifconfig eth0
ifconfig eth0 Link encap:Ethernet HWaddr 00:50:FC:22:9C:57 inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:333678 errors:0 dropped:0 overruns:0 frame:0 TX packets:377219 errors:0 dropped:0 overruns:0 carrier:0 collisions:195 txqueuelen:100 RX bytes:42243563 (40.2 Mb) TX bytes:278373316 (265.4 Mb) Interrupt:10 Base address:0x6100 [root@test root]#
arp
|
在 Linux 上面 DHCP 套件的安裝也是很簡單的,不需要以 Tarball 來安裝啦!直接拿出您的原版光碟, mount 他,並且找到 dhcp 字樣的套件,使用 RPM 安裝好就好了!以 mandrake 9.0 及 Red Hat 9 為例的話,您需要的 DHCP 套件為:
# 在 Mandrake 9.0 當中:
[root@test root]# rpm -qa | grep dhcp
dhcp-server-3.0-1rc9.2mdk
dhcp-common-3.0-1rc9.2mdk
dhcp-client-3.0-1rc9.2mdk
# 在 Red Hat 9 當中:
[root@test root]# rpm -qa | grep dhcp
dhcp-3.0pl1-23
dhcp-devel-3.0pl1-23
看到了吧!我們需要的套件在不同的 Linux 版本上面會有些許的差異喔!如果是 Mandrake 系列的話,DHCP 套件檔案總數會有三個囉!如果沒有安裝的話,請拿出您的原板光碟(不論是那個 Linux distribution ,應該都是這三個套件名稱啦!只是後面的版本可能不一樣就是了!但是,需要注意的是,在 Red Hat 上面,這三個套件被整合成為一個,亦即是 dhcp-xxxx.rpm 的檔案就是了!),先掛載上去,然後就以 rpm 給他安裝啦!什麼?不知道如何搞定 RPM ?唉啊!又得拿出『鳥哥的 Linux 私房菜 -- 基礎學習篇』好好的 K 一 K 『 RPM 與 Tarball 的使用』。另外,如果在系統當中沒有找到 dhcp 套件的話,還可以使用前面 網路升級套件 章節提到的 apt-get 或者是 urpmi 都是很好的安裝方式吶! ^_^
[root@test
root]# rpm -qc dhcp-server
(在 Red Hat 使用 rpm -qc dhcp )
/etc/dhcpd.conf.sample /etc/rc.d/init.d/dhcpd /etc/sysconfig/dhcpd /var/lib/dhcp/dhcpd.leases |
[root@test
root]# vi /etc/dhcpd.conf
# 這個檔案在各家 Linux 中,可能放置的目錄不同而且不見得會存在,請自行建立! # 再次說明,這個檔案中,行首為
# 的,則為註解,且,
# 1. Global
首先建立整體的設定值,亦即是,當 subnet 或 host
# 1.1 設定租約期限:
# 1.2 設定領域名稱與
DNS IP
# 2. 動態 IP
分配的設定:
# 3. 靜態 IP
的設定:
|
[root@test
root]# touch /etc/dhcpd.leases
# 建立租約檔案同樣的,注意您的版本目錄! |
[root@test
root]# vi /etc/rc.d/init.d/dhcpd
# 這是啟動的 script 檔案 # 先找到底下的設定內容,如果沒有找到也沒有關係,就自行新增吧!
|
[root@test
root]# /etc/rc.d/init.d/dhcpd start 啟動的啦!
Starting dhcpd: [ OK ] |
1. 最重要的就是察看登錄檔!也就是
/var/log/messages 這個檔案了!
[root@test root]# vi /var/log/messages 先看看登錄擋吧! Nov 23 23:35:09 vbird dhcpd: Wrote 0 deleted host decls to leases file. Nov 23 23:35:09 vbird dhcpd: Wrote 0 new dynamic host decls to leases file. Nov 23 23:35:09 vbird dhcpd: Wrote 0 leases to leases file. Nov 23 23:35:09 vbird dhcpd: dhcpd startup succeeded 一定要看到 Wrote xxxx to leases file 以及 succeeded 的字眼, 才能確定啟動成功! 2. 再來,觀察一下
port 有沒有在 listen
|
[root@test
root]# vi /etc/services
找到這兩行: bootps 67/tcp # BOOTP server bootps 67/udp 將他改成
|
[root@test
root]# vi /etc/hosts
127.0.0.1 localhost.localdomain localhost 192.168.1.2 vbird-server 192.168.1.5 static-ip 192.168.1.21 dynamic-021 192.168.1.22 dynamic-022 ..... 192.168.1.100 dynamic-100 |
DHCP 的 Client 端,可以是 Windows 也可以是 Linux 呢!由於我的領域內剛好有兩部 Client 端的電腦,一部為 Linux ( Red Hat 7.3 ) 另一部為 Windows 2000 ,這裡就提一下,分別是怎樣設定的呢?
- Linux 的 DHCP Client 端設定:
設定還真是簡單的不行~直接修改一個檔案即可!由於我的 Linux 電腦有兩塊網路卡,其中, eth0 為使用 DHCP 來啟動的,所以我就可以修改底下的檔案呢:
[root@test root]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp <==只要這一行設定對了,其他的不要管!
BROADCAST=192.168.1.255
IPADDR=192.168.1.235
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
GATEWAY=192.168.1.2
需要特別強調的是,Mandrake 與 Red Hat 都使用『BOOTPROTO=dhcp』來設定的!但是, OpenLinux 卻是使用『DYNAMIC=dhcp』來設定的!所以要注意您的 Linux distribution 喔!改完之後,就將我們的網路卡關掉再開!請注意,如果您是在遠端進行這個動作,您的連線『肯定會掛掉!』,因為網路卡被您關了嘛!呵呵!所以請在本機前面才進行喔!
[root@test root]# ifdown eth0; ifup eth0
Determining IP information for eth0 ..... done
[root@test root]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:54:DG:08:QE:BE
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1
RX packets:590 errors:0 dropped:0 overruns:0 frame:0
TX packets:208 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:55145 (53.8 Kb) TX bytes:29113 (28.4 Kb)
Interrupt:10 Base address:0xd000
棒吧!已經正確的取得 IP 的資料囉!
- Windows 2000 底下的 DHCP Client 設定方式:
在 Windows 底下的設定也真是太簡單了!這樣就 OK 啦!!很簡單吧!
- 直接在『網路上的芳鄰』按右鍵,選內容;
- 然後選擇『區域連線』那一項,之後會出現如下的圖示:
- 在上圖當中,按下『內容』則會出現下面的圖示:
- 然後選擇『Internet Protocol (TCP/IP) 』那一項,之後按下內容,會出現選項:
- 然後自然就是一直按下『確定』!直到回到正常的桌面為止!這樣就已經正確的啟動了!哇!就是這麼簡單!
- 手動修訂一下網路設定的方式:
- 在 Windows 底下,要修訂 IP 的方式依據不同的版本而有不同!如果是 Windows 98 系列的版本,就需要使用『winipcfg』,出現的是視窗畫面,您可以自己調一下;
- 在 Windows 2000 底下,我不知道怎麼叫出視窗畫面,所以直接開啟一個『 C:>提示字元』,在『開始』==>『程式集』==>『附屬應用程式』裡面的『命令提示字元』那個就是啦!
C:\>ipconfig /all <==秀出所有的屬性 Windows 2000 IP Configuration
Ethernet adapter 區域連線:
Connection-specific DNS Suffix . : dhcp.vbird.org
Description . . . . . . . . . . . : Realtek RTL8139(A) PCI Fast Ethernet Adapter
Physical Address. . . . . . . . . : 00-40-95-30-43-B4
DHCP Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
IP Address. . . . . . . . . . . . : 192.168.1.99
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.1.2
DHCP Server . . . . . . . . . . . : 192.168.1.2
DNS Servers . . . . . . . . . . . : 168.95.1.1
139.175.10.20
Lease Obtained. . . . . . . . . . : 2002年11月24日 AM 12:32:54
Lease Expires . . . . . . . . . . : 2002年11月27日 AM 12:32:54C:\> ipconfig /renew <==重新捉 IP 啦!
接著下來,我們就要努力的來除蟲了!除蟲的第一步,就是察看登錄檔啦!最常發生的錯誤其實大概就是:例如底下就是錯誤訊息的一般顯示狀態:
- 寫錯字:不要笑!真的很容易寫錯字的!這很正常!所以大家要多多的去檢查一下:
- 沒有加上『 ;』符號號:是的,這也是最常發生的錯誤啦!
- 新版 DHCP 新增的功能限制:有時後也會有這樣的訊息出現呢!
[root@test root]# vi /var/log/messages
Nov 23 23:32:25 vbird dhcpd: /etc/dhcpd.conf line 6: semicolon expected.
Nov 23 23:32:25 vbird dhcpd: option
Nov 23 23:32:25 vbird dhcpd: ^
Nov 23 23:32:25 vbird dhcpd: Configuration file errors encountered -- exiting
Nov 23 23:32:25 vbird dhcpd:
# 這一個例子告訴您,在第六行有錯誤!什麼錯誤?呵呵!/etc/dhcpd.conf 中仔細檢查囉!Nov 23 23:34:12 vbird dhcpd: ** You must add a ddns-update-style statement to /etc/dhcpd.conf.
Nov 23 23:34:12 vbird dhcpd: To get the same behaviour as in 3.0b2pl11 and previous
Nov 23 23:34:12 vbird dhcpd: versions, add a line that says "ddns-update-style ad-hoc;"
Nov 23 23:34:12 vbird dhcpd: Please read the dhcpd.conf manual page for more information. **
Nov 23 23:34:12 vbird dhcpd:
# 這個例子則在告訴您,您必須要新增一行字喔!不然不給您啟動! ^_^
這樣就能夠檢驗成功了!修改上面是很容易的啦!
再來要討論的則是那個租約檔案的內容問題!去看一下 /var/lib/dhcp/dhcpd.lease 的內容吧!
[root@test root]# vi /var/lib/dhcp/dhcpd.lease
lease 192.168.1.100 {
starts 6 2002/11/23 16:15:22;
ends 5 2002/11/29 16:15:22;
tstp 5 2002/11/29 16:15:22;
binding state active;
next binding state free;
hardware ethernet 00:90:cc:08:49:13;
uid "\001\000\220\314\010I\023";
}
lease 192.168.1.99 {
starts 6 2002/11/23 16:33:16;
ends 2 2002/11/26 16:33:16;
binding state active;
next binding state free;
hardware ethernet 00:40:95:30:43:b4;
uid "\001\000@\2250C\264";
client-hostname "tools";
}
lease 192.168.1.99 {
starts 6 2002/11/23 16:33:21;
ends 2 2002/11/26 16:33:21;
binding state active;
next binding state free;
hardware ethernet 00:40:95:30:43:b4;
uid "\001\000@\2250C\264";
client-hostname "tools";
}
看到了吧!這個就是租約檔案的內容啦!詳細的記載何時申請的租約,以及期限在哪兒!嗯!這樣就完成記錄囉!