DHCP概念提出
為了實現網絡可以動態合理地分配IP地址給主機使用,提出了DHCP協議。
DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)是一個局域網的網絡協議,使用UDP協議工作。
DHCP相對于靜態手工配置的優點:
(1)效率高
(2)靈活性強
(3)易于管理
把一個主機接入到tcp/ip網絡,要為其配置網絡參數:
- IP/mask:僅有此項時,只能進行本地通信,不能跨網段通信
- Gateway:非本地通信時配置
- DNS Server:可實現基于主機名通信
參數配置方式:
- 靜態指定
- 動態分配
(1)BOOTP:BOOTP用于無盤工作站的局域網中,可以讓無盤工作站從一個中心服務器上獲得IP地址。通過BOOTP協議可以為局域網中的無盤工作站分配動態IP地址,這樣就不需要管理員去為每個用戶去設置靜態IP地址。
(2)DHCP:引入了“租約”的BOOTP;也可實現為特定主機保留某固定地址;
DHCP:動態主機配置協議
- DHCP服務器能夠為大量主機分配IP地址,并能夠集中管理
- DHCP采用C/S模式
監聽的端口:
服務端:udp/67 (源端口:接收客戶端請求的)
客戶端:udp/68(目的端口:向客戶端發送請求成功或失敗的回應)
DHCP基礎工作過程
免費ARP用于檢測沖突的IP地址,如果發現沖突IP地址,客戶端會回Decline報文,重新發Discover報文,請求新的IP地址服務器端收到Decline報文后,會把剛才的IP地址列為沖突地址,當服務器沒有空閑地址可用的時候,才會從沖突地址中選擇進行分配。
DHCP租期更新
一般租約到達一半時50%,就開始續租;如果找不到dhcp,就續租到75%,再找不到就續租87.5%,再找不到dhcp就重新發起dchp請求;
IP地址釋放
若IP租約到期前沒有收到DHCP服務器響應,客戶端會停止使用此IP地址。
若DHCP客戶端不再使用分配的IP地址,也可以主動向DHCP服務器發送DHCP Release報文,釋放該地址。
注意:dhcp服務器必須先提供本地dhcp服務,才能可以給另一網絡提供服務,否則不允許直接向另一網絡提供dhcp服務;每一個地址分配的范圍叫一個作用域;
dhcp服務器可提供的服務不止是分配網絡地址,還可提供文件路徑;
DHCP服務
Linux DHCP協議的實現程序:
- dhcp:(ISC,named):只提供能提供dhcp服務;
- dnsmasq:dhcp & dns :輕量化,沒有配置文件,通過命令行+選項參數進行指定;
dhcp程序包:提供兩個程序,二者不同同時啟用;
dhcpd:提供dhcp服務;
dhcrelay:提供中繼服務;
部署dhcp服務
[root@promote ~]# yum info dhcp
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.cn99.com
* epel: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.cn99.com
* updates: mirrors.cn99.com
Installed Packages
Name : dhcp
Arch : x86_64
Epoch : 12
Version : 4.2.5
Release : 77.el7.centos
Size : 1.4 M
Repo : installed
From repo : base
Summary : Dynamic host configuration protocol software
URL : http://isc.org/products/DHCP/
License : ISC
Description : DHCP (Dynamic Host Configuration Protocol) is a protocol which allows
: individual devices on an IP network to get their own network
: configuration information (IP address, subnetmask, broadcast address,
: etc.) from a DHCP server. The overall purpose of DHCP is to make it
: easier to administer a large network.
:
: To use DHCP on your network, install a DHCP service (or relay agent),
: and on clients run a DHCP client daemon. The dhcp package provides
: the ISC DHCP service and relay agent.
[root@promote ~]# yum -y install dhcp 安裝dhcp
...
[root@promote ~]# rpm -ql dhcp 查看安裝dhcp生成的文件
其中:
/etc/dhcp/dhcpd.conf 提供dhcp服務的配置文件
/etc/dhcp/dhcpd.conf 為ipv4的配置文件
/etc/dhcp/dhcpd6.conf 為ipv6的配置文件
/usr/lib/systemd/system/dhcpd.service 啟動dhcp服務(ipv4)
/usr/lib/systemd/system/dhcpd6.service
/usr/lib/systemd/system/dhcrelay.service 啟動中繼服務器
/usr/sbin/dhcpd 主程序(啟動包括了ipv4和ipv6)
/usr/sbin/dhcrelay 中繼程序
/var/lib/dhcpd/dhcpd.leases DHCP的租約記錄
編輯配置文件:
[root@promote ~]# vim /etc/dhcp/dhcpd.conf 顯示復制文件即可;
[root@promote ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
[root@promote ~]# cat /etc/dhcp/dhcpd.conf
顯示部分內容:
default-lease-time 600; 默認租約期限,單位是秒鐘
subnet 10.5.5.0 netmask 255.255.255.224 {
range 10.5.5.26 10.5.5.30; 指明地址池
option domain-name-servers ns1.internal.example.org; 可有3個dhcp服務器
option domain-name "internal.example.org"; 搜索后綴
option routers 10.5.5.1; 指明默認網關
option broadcast-address 10.5.5.31; 指明廣播地址
default-lease-time 600;
max-lease-time 7200;
}
host passacaglia {
hardware ethernet 0:0:c0:5d:bd:95;
filename "vmunix.passacaglia"; 加載文件的文件名
server-name "toccata.fugue.com";
}
host fantasia {
hardware ethernet 08:00:07:26:c0:a5;
fixed-address fantasia.fugue.com; 固定的分配一個地址,可直接指明IP地址;
}
其中:
option
定義選項,可定義在全局中也可定義在subnet中;
subnet
定義子網
host
表示在dhcp中主機名,并不代表真正的主機名,只是個標識;
[root@promote ~]# vim /etc/dhcp/dhcpd.conf
把沒用的行注釋:輸入:.,$s/^[^#]/#/g
option domain-name "magedu.com";
option routers 172.18.100.1;
option domain-name-servers 172.18.0.1, 192.168.255.1; 設定DNS服務器
default-lease-time 43200;
max-lease-time 86400;
log-facility local7;
subnet 172.18.0.0 netmask 255.255.0.0 {
range 172.18.11.100 172.18.11.120;
option routers 172.18.0.1;
option domain-name-servers 1.1.1.1;
}
host passacaglia { 這種某主機使用固定ip地址
hardware ethernet 0:0:c0:5d:bd:95; 為要設定ip地址主機的mac地址
option routers 172.18.11.254; 指定網關
fixed-address 172.18.11.1; 注意不能使用地址池中的地址
}
[root@promote ~]# systemctl start dhcp.service
[root@promote ~]# ss -tnl
服務端監聽在udp/67
dhcp已經分配的結果記錄存放在:/var/lib/dhcpd/dhcpd.leases
[root@promote ~]# less /var/lib/dhcpd/dhcpd.leases
dhcp客戶端
前提要網卡地址設為動態分配;
但不用把網卡改為dhcp,使用dhclient命令測試;
[root@promote ~]# dhclient -h 查看使用幫助
[root@promote ~]# dhclient -d 運行dhcp在前端,可觀察工作過程
[root@promote ~]# ss -tunl 可查看客戶端udp的68端口監聽
[root@promote ~]# route -n 查看客戶端的網關
[root@promote ~]# cat /etc/resolv.conf 查看客戶端DNS服務器
如果不期望使用dhcp分配的DNS服務器地址,就想用自己指定的,可修改過客戶端網卡配置文件:
[root@promote ~]# vim /etc/resolv.conf
nameserver 2.1.1.1 用自己指定的DNS服務器
[root@promote ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
PEERDNS=no
此時dhcp服務器搭建完畢
dhcpd程序
配置文件:/etc/dhcp/dhcpd.conf
主要配置ipv4的網絡服務
注:啟動對于Centos 6和7是不同的
option routers GW;
option domain-name-servers IP,IP,IP;
default-lease-time ...;
max-lease-time ...;
subnet NET netmask MASK {
range ;
...
}
host HOST_ID {
hardware ethernet MAC;
fixed-address IP; 不能是在地址池中的地址
}
分配信息庫:/var/lib/dhcp/dhcpd.leases~
[root@promote ~ ]# man dhcpd.conf
其它配置選項:
filename:指明引導文件名稱;可認為是基于網絡引導的Bootloader文件;
next-server:指明引導文件所在的服務器主機的ip地址;
例如:
filename "pxelinux.0";
next-server 172.18.0.1;
通常next-server所指向的服務器為tftp服務器;
tftp:trivial ftp 簡單文件傳輸協議,通過udp/69