配置Linux系統實現dhcp功能
1、背景及原理
DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)通常被應用在大型的局域網絡環境中,主要作用是集中的管理、分配IP地址,使網絡環境中的主機動態的獲得IP地址、Gateway地址、DNS服務器地址等信息,並能夠提升地址的使用率。DHCP協議采用客戶端/服務器模型,主機地址的動態分配任務由網絡主機驅動。當DHCP服務器接收到來自網絡主機申請地址的信息時,才會向網絡主機發送相關的地址配置等信息,以實現網絡主機地址信息的動態配置。
2、環境模擬
克隆兩台或三台Linux機器,第一台命名為dhcpd作為dhcp服務端,第二台和第三台分別命名為dhcp-client1和dhcp-client2作為dhcp客戶端
3、配置dhcpd服務端
3.1 修改dhcpd服務端的網卡配置文件
eth0 ip 192.168.214.210 網關192.168.214.2(同VMware網關地址)
eth1 ip 192.168.1.1
3.2 清空網卡相關信息
克隆的機器除了修改網卡配置文件(去掉網卡UUID和MAC地址)之外還需要執行命令
> /etc/udev/rules.d/70-persistent-net.rules 清空網卡信息文件
3.3 重啟機器查看ip並檢查能否與外網建立通信
3.4 安裝配置dhcp服務
執行命令yum install dhcp –y安裝dhcp服務相關軟件
3.5 修改dhcp的配置文件
cat /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample |grep -Ev '^$|#'
查看示例,過濾掉注釋和空行
截取紅框部分內容,並修改為此處需要的配置,將配置寫入 /etc/dhcp/dhcpd.conf
subnet 192.168.1.0 netmask 255.255.255.0 { #網段和子網掩碼
range 192.168.1.100 192.168.1.254; #可自動獲取的IP地址范圍
option domain-name-servers 223.5.5.5; #dns服務器名稱
option routers 192.168.1.1; #網關地址
option broadcast-address 192.168.1.255; #廣播地址
default-lease-time 600; #默認租約期限,單位秒
max-lease-time 7200; #最長租約期限,單位秒
}
3.6 啟動dhcpd服務
4、獲取dhcp並檢驗
4.1 在dhcp-client1上重啟網絡服務
在dhcpd上進行tcpdump指定網卡eth1,指定默認dhcp服務端端口67進行抓包
包含獲取到ip的機器的mac地址,獲取時間,通信記錄等內容
4.2 服務端cat /var/lib/dhcpd/dhcpd.leases查看dhcp緩存
客戶端也可cat /var/lib/dhclient/dhclient-eth0.leases查看dhcp緩存
4.3 在dhcp-client1上重啟網絡服務
通過Windows平台的wireshark抓取名為bootp的包,可以看到相關dhcp信息
第一個包是客戶端向dhcp服務器請求分配IP、dns、默認網關和子網掩碼
第二個包是服務端回應客戶端請求
第三個包是客戶端詢問服務端是否確認該請求信息
第四個包是服務端回應客戶端的確認信息
4.4 此時dhcp-client並不能連接外網,需要在dhcp服務端(dhcpd)做如下配置
修改配置開啟ip轉發功能
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl –p 加載內核參數
此時可以ping通192.168.214.210
配置iptables轉發規則nat
iptables –F
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
此時可以ping通外網
5、通過dhcp獲取固定分配的ip
若想給某一主機分配固定的IP地址,前提是知道要分配IP地址主機的網卡mac地址(物理地址)和主機名,也能固定為主機分配一個ip地址
5.1 cat /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample |grep -Ev '^$|#'查看示例
修改為此處需要的配置,利用ifconfig查看網卡mac地址
host dhcp-client{
hardware ethernet 00:0C:29:E4:81:9A;
fixed-address 192.168.1.199;
}
5.2 將此內容追加到/etc/dhcp/dhcpd.conf文件中
5.3 /etc/init.d/dhcpd restart 重啟dhcp服務
5.4 在dhcp-client1上重啟網絡服務,查看ip,可以發現已經成功重新獲取到新指定的ip地址
博主原創文章,轉載請務必注明出處
