Linux下dhcp的配置
一.dhcp的介紹
1.做用
爲電腦自動分配ip地址
2. dhcp做用:
1>減小管理員的工做量
2>減少輸入錯誤的可能
3>避免IP的衝突
4>當網絡更改IP地址段時,不須要從新配置每臺計算機的IP
5>提升了IP地址的利用率
3.DHCP動做原理
1>DHCP的幾個名詞
DHCP客戶:DHCP客戶是經過DHCP來得到網絡配置參數的Internet主機,一般就是所說的普通用戶的工做站
DHCP服務器:DHCP服務器是提供網絡設置參數給DHCP客戶的Internet主機
2>租約的產生
客戶端在啓動時會發生租約的產生過程,它的工做原理可使用下圖來歸納:
![](http://static.javashuo.com/static/loading.gif)
(1)客戶端請求IP租約.
在客戶端鏈接上網絡時會在網絡中廣播一個DHCP Discover包,該數據包使用的是UDP的67端口,由於自己尚未IP地址,因此廣播時它的IP地址是:0.0.0.0,目的IP地址是255.255.255.255,該包還包含客戶端的MAC地址和計算機主機名
(2)服務器響應
當服務器收到客戶端發送的請求IP地址的數據包以後,就會在本身的IP數據庫中查找是否有可用的IP地址,若是有的話,DHCP服務器就廣播一個DHCP Offer包,該數據包使用的是UDP的68端口,源IP地址爲DHCP服務器的IP地址,目的IP地址爲255.255.255.255,發送出去的Offer包內包含的內容有:DHCP客戶端的MAC地址;DHCP服務器提供的合法的IP地址;子網掩碼;租約期限;服務器IP地址
(3)客戶端選擇ip地址
有時一個網段內會有多個DHCP服務器,也就是說,在客戶端發送Discover時會有多個DHCP服務器響應,這就須要DHCP客戶端選擇一個IP地址來使用,系統規定DHCP客戶端會從接收到的第一個DHCP Offer包中選擇IP地址,而且發送DHCP Request包進行廣播,代表它使用ip地址的服務器,該數據包使用UDP的67端口,源IP地址0.0.0.0,目的IP地址:255.255.255.255
(4)服務器確認
DHCP服務器在收到DHCP Request包後,會以ACK包向客戶端廣播確認成功,該數據包使用UDP的68端口,源IP爲DHCP服務器IP地址,目的IP爲255.255.255.255,當客戶端收到DHCP ACK後,就使用獲得的IP地址,這時整個租約產生過程就成功結束.
3>關於租約的更新
當客戶端從新啓動時客戶端會從新提出租約的租用
當租約到達50%時,也須要從新更新租約,這裏客戶端直接向服務器端發送DHCP Request包,要求更新租約,若是更新不成功的話,則客戶端會再次等到租約的87.5%時,會再次進行租約的更新,但此次DHCP客戶端是向網絡上全部的DHCP服務器進行廣播來更新現有的租約.
二. DHCP的配置
[root@localhost ~]# yum install -y dhcp
Loaded plugins: katello, product-id, security, subscription-manager
Updating certificate-based repositories.
[root@localhost ~]# rpm -ql dhcp
/etc/dhcpd.conf //dhcp的配置文件
/etc/rc.d/init.d/dhcpd //dhcp 的啓動腳本
/etc/rc.d/init.d/dhcrelay
/usr/share/doc/dhcp-3.0.5 //幫助文檔/var/lib/dhcpd/dhcpd.leases //dhcp租約
[root@localhost ~]# vim /etc/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
#
[root@localhost ~]# cp /usr/share/doc/dhcp*/dhcpd.conf.sample /etc/dhcpd.conf
cp: overwrite `/etc/dhcpd.conf'? y
[root@localhost ~]# vim /etc/dhcpd.conf
ddns-update-style interim; //定義所支持的DNS動態更新的型{none|adhoc|interim
ignore client-updates; //allow/ignore容許/忽略客戶機更新DNS記錄
subnet 172.16.0.0 netmask 255.255.0.0 { //定義dhcp服務的子網
# --- default gateway
option routers 172.16.1.1; / /定義默認路由
option subnet-mask 255.255.0.0; //定義分配的子網掩碼
option nis-domain "domain.org";
option domain-name "domain.org";
option domain-name-servers 192.168.1.1; #定義dns地址
option time-offset -18000; # Eastern Standard Time
# option ntp-servers 192.168.1.1;
# option netbios-name-servers 192.168.1.1;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
# option netbios-node-type 2;
range dynamic-bootp 172.16.1.20 172.16.1.200; //ip地址池,從大向小分配ip
default-lease-time 21600; //默認租約時間,單位:秒
max-lease-time 43200; //最大租約時間
# we want the nameserver to appear at a fixed address
host ns { //靜態分配ip
next-server marvin.redhat.com;
hardware ethernet 12:34:56:78:AB:CD; // 寫一臺固定機器的mac地址
fixed-address 207.175.42.254; //寫這臺機器的ip地址,分配固定ip
}
}
[root@localhost ~]# /etc/init.d/dhcpd start
Starting dhcpd: [ OK ]
獲取ip在另一個redhat linux上,把ip設置成dhcp主機的ip地址。[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-eth0 ifdown-isdn ifup-aliases ifup-plip ifup-wireless
[root@localhost network-scripts]# vim ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp //這裏改成dhcp方式
HWADDR=00:0c:29:9f:44:0a
ONBOOT=yes
NETMASK=255.255.0.0
IPADDR=172.16.63.3
TYPE=Ethernet
[root@localhost network-scripts]# /etc/init.d/network restart
Shutting down interface eth0: [ OK ]
[root@localhost ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:E6:BA:E8
inet addr:172.16.1.200 Bcast:172.16.255.255 Mask:255.255.0.0
inet6 addr: fe80::20c:29ff:fee6:bae8/64 Scope:Link
//Ip地址變成了172.16.1.200