DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)是一個局域網的網絡協議,使用UDP協議工作, 主要有兩個用途:給內部網絡或網絡服務供應商自動分配IP地址,給用戶或者內部網絡管理員作爲對所有計算機作中央管理的手段,在RFC 2131中有詳細的描述。DHCP有3個端口,其中UDP67和UDP68爲正常的DHCP服務端口,分別作爲DHCP Server和DHCP Client的服務端口。
工作模式:
1.manual
Mac 與ip地址捆綁,需要手工一個一個輸入,但是地址利用率低。
Automatic
在dhcp server做地址池,只需要寫出起始地址和結束地址,不需要一個一個輸入。Dhcp client 連接後會被永久記錄,造成地址利用率低。
Dynamic
相比與第二種多了地址租期,地址利用率提高了。
拓撲圖
原理:
1 dhcpdiscover: 此爲client開始DHCP過程中的第一個請求報文
2 dhcpoffer : 此爲server 對dhcpdiscover 報文的響應
3 dhcprequst : 此爲client 對dhcpoffer 報文的響應
4 dhcpdeclient: 當client發現server 分配給它的IP地址無法使用,如 IP地址發生衝突時,將發出此報文讓server禁止使用這次分配的IP地址。
5 dhcpack : server對 dhcprequst 報文的響應,client收到此報文後才真正獲得了IP地址和相關配置信息。
6 dhcpnack : 此報文是server對client的dhcprequst報文的拒絕響應,client 收到此報文後,一般會重新開始DHCP過程。
7 dhcprelease :此報文是 client主動釋放IP地址,當server 收到此報文後就可以收回地址分配給其他的client.
Centos dhcp配置方法
IP[root@wang ~]# mkdir /media/cdrom
[root@wang ~]# mount /dev/cdrom /media/cdrom 掛載光盤
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@wang ~]# ll |grep dhcp 查找dhcp相關的包
[root@wang ~]# cd /media/cdrom/Packages/
[root@wang Packages]# ll |grep dhcp
-r--r--r--. 2 root root 838344 Nov 25 2013 dhcp-4.1.1-38.P1.el6.centos.i686.rpm
-r--r--r--. 3 root root 145240 Nov 25 2013 dhcp-common-4.1.1-38.P1.el6.centos.i686.rpm
-r--r--r--. 2 root root 154624 Jul 3 2011 sblim-cmpi-dhcp-1.0-1.el6.i686.rpm
[root@wang Packages]# rpm -qlp dhcp-4.1.1-38.P1.el6.centos.i686.rpm 查找猜想的安裝包內容進一步確認安裝包是不是所需要的額
/usr/sbin/dhcpd
/usr/sbin/dhcrelay
/usr/share/doc/dhcp-4.1.1
/usr/share/doc/dhcp-4.1.1/3.0b1-lease-convert
/usr/share/doc/dhcp-4.1.1/IANA-arp-parameters
可以看出是所需要的
[root@wang Packages]# yum --disablerepo=\* --enablerepo=c6-media install dhcp-4.1.1-38.P1.el6.centos.i686.rpm -y 安裝軟件包
[root@wang Packages]# vim /etc/dhcp/dhcpd.conf
:r /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample 在vim地行模式模式下讀取例子文件
然後根據例子說明配置dhcp參數
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.100 192.168.2.199; //dhcp域範圍
option routers 192.168.2.1; //dhcp 網關
option domain-name-servers 1.1.1.1, 2.2.2.2; //dhcp dns
option domain-name "wang.com"; //dhcp 域名
}
[root@wang Packages]# service dhcpd configtest 測試配置文件是否正確,如果不正確將會提示錯誤地方,進行修改即可
也可以在 /var/log/messages 文件中查詢錯誤內容即
[root@wang Packages]# tail -f -n 20 /var/log/messages
[root@wang Packages]# iptables -L 查看防火牆規則,如果有的話需要將防火牆關閉
[root@wang Packages]# service iptables stop
[root@wang Packages]# setenforce 0 將控制規則設置爲警告級別
然後打開客戶機測試是否能夠動態獲取ip地址
將客戶機設置爲自動獲取ip地址
自動獲取成功
在日誌文件中可以看到相關的信息
Aug 9 17:09:08 wang dhcpd: DHCPOFFER on 192.168.2.100 to 00:0c:29:12:c1:b8 (he-e7e9531dbfcd) via eth0:0
Aug 9 17:09:08 wang dhcpd: DHCPREQUEST for 192.168.2.100 (192.168.2.51) from 00:0c:29:12:c1:b8 (he-e7e9531dbfcd) via eth0:0
Aug 9 17:09:08 wang dhcpd: DHCPACK on 192.168.2.100 to 00:0c:29:12:c1:b8 (he-e7e9531dbfcd) via eth0:0
Aug 9 17:09:08 wang dhcpd: DHCPREQUEST for 192.168.2.100 (192.168.2.51) from 00:0c:29:12:c1:b8 (he-e7e9531dbfcd) via eth0
Aug 9 17:09:08 wang dhcpd: DHCPACK on 192.168.2.100 to 00:0c:29:12:c1:b8 (he-e7e9531dbfcd) via eth0
在客戶端的命令行模式下查看域名
域名正確
如果需要排除地址,就需要分段進行設置作用域以達到排除的目的。
[root@wang ~]# vim /var/lib/dhcpd/dhcpd.leases 可以查看dhcp服務器分配的地址記錄
如果需要綁定一個ip地址,需要修改
vim /etc/dhcp/dhcpd.conf
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.100 192.168.2.149; 作用域設置
range 192.168.2.151 192.168.2.199;
option routers 192.168.2.1;
option domain-name-servers 1.1.1.1, 2.2.2.2;
option domain-name "wang.com";
host fantasia {
hardware ethernet 00:0c:29:12:c1:b8; 綁定的mac地址
fixed-address 192.168.2.150; 對應mac地址的ip
}
}
然後dhcp客戶端重新獲取ip地址
獲取192.168.2.50成功
Dhcp超級作用域配置方法
需求:將多個小的作用域綁定爲一個大的作用域
比如講192.168.1.0/24和192.168.2.0/24的作用域綁定到一起
其他的都一樣,就需要就配置文件修改
[root@wang Packages]# vim /etc/dhcp/dhcpd.conf
shared-network chaoji{ 超級作用域包括2個一般作用域
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.100 192.168.2.100;
option routers 192.168.2.254;
option domain-name-servers 1.1.1.1, 2.2.2.2;
option domain-name "wang.com";
}
subnet 192.168.3.0 netmask 255.255.255.0 {
range 192.168.3.100 192.168.3.100;
option routers 192.168.3.254;
option domain-name-servers 1.1.1.1, 2.2.2.2;
option domain-name "wang2.com";
}
}
因爲我們需要試驗,所以將作用域的ip地址設置爲只有1個
[root@wang Packages]# service dhcpd restart
然後進行測試
第一臺客戶端設置爲自動獲取ip:
第2臺客戶端也設置爲自動獲取ip
分別獲取了地址池的2個ip地址,試驗成功!
DHCP 中繼
如果有多個不同的vlan獲取dhcp,則需要dhcp中繼技術。
實現此技術既可以用虛擬機模擬實驗,也可以用路由器,交換機實驗。
用虛擬機模擬實驗:
先配置dhcp服務器:
[root@wang ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 先編輯網卡,將網關設置爲192.168.2.1
添加一個網關即可
[root@wang ~]# service network restart 重啓網絡
[root@wang ~]# service iptables stop 關閉防火牆
[root@wang ~]setenforce 0 將控制規則設置爲警告級別
[root@wang ~]# vim /etc/dhcp/dhcpd.conf 編輯dhcp配置文件
subnet 192.168.3.0 netmask 255.255.255.0 {
range 192.168.3.2 192.168.3.254;
option routers 192.168.3.1;
option domain-name-servers 1.1.1.1, 2.2.2.2;
option domain-name "vmnet2.com";
}
subnet 192.168.4.0 netmask 255.255.255.0 {
range 192.168.4.2 192.168.4.254;
option routers 192.168.4.1;
option domain-name-servers 1.1.1.1, 2.2.2.2;
option domain-name "vmnet3.com";
}
subnet 192.168.2.0 netmask 255.255.255.0 {
} 編輯2個作用域 網段分別是192.168.3.0/24 192.168.4.0/24 網關是dhcp中繼服務器各個網卡的ip,然後必須有自己網段的空作用域才能開啓dhcp
[root@wang ~]# service dhcpd restart
Starting dhcpd: [ OK ]
重啓dhcp即可
再配置dhcp中繼服務器:
用windows server2003 實現:
現在網絡適配器裏面添加2塊網卡,一共3塊網卡。
在3塊網卡上配置3個對應的ip地址:
進入路由和遠程訪問
配置並啓用路由和遠程訪問
下一步
自定義配置
完成
右鍵常規→新增路由協議
選擇DHCP中繼代理程序
右鍵dhcp中繼代理→新增接口
然後添加vmnet2和vmnet3
右鍵dhcp中繼服務器→屬性
添加dhcp server的ip地址
進行測試
再打開一臺虛擬機,將網卡設置爲vmnet2,然後自動獲取ip地址
成功
然後將網卡設置爲vmnet3,自動獲取
成功
如果dhcp中繼服務器設置爲linux,而不用windows server 2003需要:
同樣的將linux添加2個網卡,成爲3個網卡,將ip地址分別設置爲:
eth0 Link encap:Ethernet HWaddr 00:0C:29:C9:67:5B
inet addr:192.168.2.1 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fec9:675b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:137 errors:0 dropped:0 overruns:0 frame:0
TX packets:112 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:14169 (13.8 KiB) TX bytes:17121 (16.7 KiB)
Interrupt:19 Base address:0x2000
eth1 Link encap:Ethernet HWaddr 00:0C:29:C9:67:65
inet addr:192.168.3.1 Bcast:192.168.3.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fec9:6765/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:253 (253.0 b) TX bytes:468 (468.0 b)
Interrupt:19 Base address:0x2080
eth2 Link encap:Ethernet HWaddr 00:0C:29:C9:67:6F
inet addr:192.168.4.1 Bcast:192.168.4.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fec9:676f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:253 (253.0 b) TX bytes:468 (468.0 b)
Interrupt:16 Base address:0x2400
[root@station21 ~]# vim /etc/sysctl.conf 開啓路由功能
將net.ipv4.ip_forward = 0設置爲1
需要安裝相關的軟件包
[root@station21 ~]# mkdir /media/cdrom
[root@station21 ~]# mount /dev/cdrom /media/cdrom
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@station21 ~]# cd /media/cdrom/Packages/ 掛載光盤
[root@station21 Packages]# yum --disablerepo=\* --enablerepo=c6-media install dhcp -y 安裝軟件包
[root@station21 Packages]# vim /etc/sysconfig/dhcrelay 進入dhcrelay配置dhcp中繼
# DHCPv4 only
INTERFACES="eth2 eth1" 需要中繼的網卡接口
# DHCPv4 only
DHCPSERVERS="192.168.2.50" dhcp服務器的ip地址
[root@wang ~]# service iptables stop 關閉防火牆
[root@wang ~]setenforce 0 將控制規則設置爲警告級別
[root@station21 Packages]# service dhcrelay start
Starting dhcrelay: [ OK ]開啓dhcp中繼
[root@station21 Packages]# netstat -tupln |grep dhc 查看端口,判斷是否啓動dhcp中繼
測試:
開啓一臺虛擬機,網卡設置爲vmnet2,設置爲自動獲取ip
獲取成功
再開啓一臺虛擬機,網卡設置爲vmnet3,設置爲自動獲取ip:
獲取成功
如果用交換機路由器實驗,則步驟爲:
實驗拓撲:
路由器:
[Quidway]Int eth0/0/0.1
[r1-Ethernet0/0.1]ip add 192.168.2.1 24
[r1-Ethernet0/0.1]dhcp select relay
[r1-Ethernet0/0.1]ip relay address 192.168.2.50
[r1-Ethernet0/0.1]Vlan-type dot1q vid 10
[r1-Ethernet0/0.1]int eth0/0.2
[r1-Ethernet0/0.2]ip address 192.168.3.1 24
[r1-Ethernet0/0.2]dhcp select relay
[r1-Ethernet0/0.2]ip relay address 192.168.2.50
[r1-Ethernet0/0.2]vlan-type dot1q vid 20
[r1-Ethernet0/0.2]int eth0/0.3
[r1-Ethernet0/0.3]ip address 192.168.4.1 24
[r1-Ethernet0/0.3]dhcp select relay
[r1-Ethernet0/0.3]ip relay address 192.168.2.50
[r1-Ethernet0/0.3][r1-Ethernet0/0.2]vlan-type dot1q vid 30
交換機
interface Ethernet1/0/1
port access vlan 10
#
interface Ethernet1/0/2
port access vlan 20
#
interface Ethernet1/0/3
port access vlan 30
interface Ethernet1/0/24
port link-type trunk
port trunk permit vlan all
測試
Linux Dhcp服務器插入交換機eth1/0/1
客戶機插入eth1/0/2或者1/0/3測試
Dhcp服務器打開tail -f /var/log/message 查看過程
獲取成功