DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)是一個局域網的網絡協議,使用UDP協議工作, 主要有兩個用途:給內部網絡或網絡服務供應商自動分配IP地址,給用戶或者內部網絡管理員作爲對所有計算機作中央管理的手段,在RFC 2131中有詳細的描述。DHCP有3個端口,其中UDP67和UDP68爲正常的DHCP服務端口,分別作爲DHCP Server和DHCP Client的服務端口;546號端口用於DHCPv6 Client,而不用於DHCPv4,是爲DHCP failover服務,這是需要特別開啓的服務,DHCP failover是用來做“雙機熱備”的。
功能:
DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)通常被應用在大型的局域網絡環境中,主要作用是集中的管理、分配IP地址,使網絡環境中的主機動態的獲得IP地址、Gateway地址、DNS服務器地址等信息,並能夠提升地址的使用率。
DHCP協議採用客戶端/服務器模型,主機地址的動態分配任務由網絡主機驅動。當DHCP服務器接收到來自網絡主機申請地址的信息時,纔會向網絡主機發送相關的地址配置等信息,以實現網絡主機地址信息的動態配置。DHCP具有以下功能:
1. 保證任何IP地址在同一時刻只能由一臺DHCP客戶機所使用。
2. DHCP應當可以給用戶分配永久固定的IP地址。
3. DHCP應當可以同用其他方法獲得IP地址的主機共存(如手工配置IP地址的主機)。
4. DHCP服務器應當向現有的BOOTP客戶端提供服務。
DHCP有三種機制分配IP地址:
1) 自動分配方式(Automatic Allocation),DHCP服務器爲主機指定一個永久性的IP地址,一旦DHCP客戶端第一次成功從DHCP服務器端租用到IP地址後,就可以永久性的使用該地址。
2) 動態分配方式(Dynamic Allocation),DHCP服務器給主機指定一個具有時間限制的IP地址,時間到期或主機明確表示放棄該地址時,該地址可以被其他主機使用。
3) 手工分配方式(Manual Allocation),客戶端的IP地址是由網絡管理員指定的,DHCP服務器只是將指定的IP地址告訴客戶端主機。
三種地址分配方式中,只有動態分配可以重複使用客戶端不再需要的地址。
DHCP消息的格式是基於BOOTP(Bootstrap Protocol)消息格式的,這就要求設備具有BOOTP中繼代理的功能,並能夠與BOOTP客戶端和DHCP服務器實現交互。BOOTP中繼代理的功能,使得沒有必要在每個物理網絡都部署一個DHCP服務器。RFC 951和RFC 1542對BOOTP協議進行了詳細描述。
DHCP客戶端
在支持DHCP功能的網絡設備上將指定的端口作爲DHCP Client,通過DHCP協議從DHCP Server動態獲取IP地址等信息,來實現設備的集中管理。一般應用於網絡設備的網絡管理接口上。
DHCP客戶端可以帶來如下好處:
降低了配置和部署設備時間。
降低了發生配置錯誤的可能性。
可以集中化管理設備的IP地址分配。
DHCP服務器
DHCP服務器指的是由服務器控制一段IP地址範圍,客戶端登錄服務器時就可以自動獲得服務器分配的IP地址和子網掩碼。
DHCP協議採用UDP作爲傳輸協議,主機發送請求消息到DHCP服務器的67號端口,DHCP服務器迴應應答消息給主機的68號端口。詳細的交互過程如圖。
Linux DHCP配置:
1、設置DHCP固定IP (DHCP服務器必須使用固定IP)
[root@master dhcp]# ifconfig -a #查看當前使用網卡,設置固定IP eth1 Link encap:Ethernet HWaddr 00:0C:29:52:46:0F inet addr:192.168.8.7 Bcast:192.168.8.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe52:460f/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:15330 errors:0 dropped:0 overruns:0 frame:0 TX packets:9236 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:16260358 (15.5 MiB) TX bytes:785794 (767.3 KiB)
2、安裝DHCP
[root@master yum.repos.d]# yum -y install dhcp #以本地光盤爲yum源安裝DHCP Error: Package: 12:dhcp-4.1.1-34.P1.el6.centos.x86_64 (Master) Requires: dhcp-common = 12:4.1.1-34.P1.el6.centos Installed: 12:dhcp-common-4.1.1-43.P1.el6.centos.x86_64 (@Master) dhcp-common = 12:4.1.1-43.P1.el6.centos Available: 12:dhcp-common-4.1.1-34.P1.el6.centos.x86_64 (Master) dhcp-common = 12:4.1.1-34.P1.el6.centos You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest #提示版本不一致,要求安裝dhcp-4.1.1-34版本,卸載dhcp-common-4.1.1-43包,再重新安裝DHCP [root@master yum.repos.d]# rpm -qc dhcp #rpm查詢DHCP配置 /etc/dhcp/dhcpd.conf #IPV4配置文件 /etc/dhcp/dhcpd6.conf #IPV6配置文件 /etc/openldap/schema/dhcp.schema /etc/portreserve/dhcpd #備用端口文件 /etc/sysconfig/dhcpd /etc/sysconfig/dhcpd6 /etc/sysconfig/dhcrelay /etc/sysconfig/dhcrelay6 /var/lib/dhcpd/dhcpd.leases #IPV4租約文件 /var/lib/dhcpd/dhcpd6.leases #IPV6租約文件
3、編輯配置文件
[root@master ~]# cd /etc/dhcp/ #切換至配置目錄 [root@master dhcp]# ll total 12 drwxr-xr-x. 2 root root 4096 Oct 16 2014 dhclient.d #DHCP客戶端腳本文件 -rw-r--r--. 1 root root 193 Oct 16 2014 dhcpd6.conf #IPV6配置文件 -rw-r--r--. 1 root root 112 Oct 16 2014 dhcpd.conf #IPV4配置文件 [root@master dhcp]# cat dhcpd.conf #查看配置文件爲空,提示有模板可用 # # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.sample # see 'man 5 dhcpd.conf' [root@master dhcp]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample dhcpd.conf #Copy模板覆蓋當前配置文件 [root@master dhcp]# vim dhcpd.conf #編輯配置文件 # dhcpd.conf # # Sample configuration file for ISC dhcpd # # option definitions common to all supported networks... option domain-name "example.org"; #全局配置,定義區域名 option domain-name-servers ns1.example.org, ns2.example.org; #全局配置,定義域名服務器 default-lease-time 600; #全局配置,定義默認租約時間,單位爲秒 max-lease-time 7200; #全局配置,定義最大租約時間,單位爲秒 # Use this to enble / disable dynamic dns updates globally. #ddns-update-style none; # If this DHCP server is the official DHCP server for the local # network, the authoritative directive should be uncommented. #authoritative; # Use this to send dhcp log messages to a different log file (you also # have to hack syslog.conf to complete the redirection). log-facility local7; # No service will be given on this subnet, but declaring it helps the # DHCP server to understand the network topology. subnet 10.0.0.0 netmask 255.255.255.0 { #subnet定義網絡段,子網掩碼 range 10.0.0.3 10.0.0.254; #使用range定義IP地址段,必須排除此DHCP服務器IP option domain-name-servers master.dove.com; #使用option定義域名服務器 option domain-name "master.dove.com"; #使用option定義區域名 option routers 10.0.0.1; #使用option定義路由器IP option broadcast-address 10.0.0.255; #使用option定義廣播地址 default-lease-time 3600; #定義此網段IP地址默認租約時間 max-lease-time 7200; #定義此網段IP地址最大租約時間 } ## This is a very basic subnet declaration. #將配置中從此行開始,以下全部註釋
5、測試客戶端
環境:虛擬機CentOS6.4作爲DHCP服務器,網絡爲Vmnet2
虛擬機CentOS6.4作爲DHCP客戶端,網絡爲Vmnet2
查看DHCP客戶端獲取IP
重新獲取IP
dhclient -d 也可重新獲取IP,一般建議重啓網絡服務,因爲網絡服務本身會調用dhclient腳本.
到此DHCP服務器搭建完成.