Linux网络服务dhcp服务和dhcp中继服务
一、Linux的dhcp服务。
二、Linux的dhcp中继服务。
三、扩展。
1,查看dhcp租约信息。
2,dhcp服务器无法启动的排错方式。
一:Linux的dhcp服务
实验环境:
vmware虚拟机、Redhat Enterprise 5.9版本Linux服务器、Linux客户机、windows客户机。
具体步骤:
第一步:安装dhcp服务的软件包
- [root@localhost ~]# rpm -q dhcp //首先确定一下dhcp的软件包是否安装,这里为没有安装
- package dhcp is not installed
- [root@localhost ~]# cd /misc/cd/Server/ //挂载光盘,进入/misc/cd/Server/目录下安装
- [root@localhost Server]# rpm -ivh dhcp //双tab查看有哪些以dhcp开头的数据包
- dhcp-3.0.5-31.el5_8.1.x86_64.rpm dhcpv6-1.0.10-20.el5.x86_64.rpm
- dhcp-devel-3.0.5-31.el5_8.1.i386.rpm dhcpv6-client-1.0.10-20.el5.x86_64.rpm
- dhcp-devel-3.0.5-31.el5_8.1.x86_64.rpm
- [root@localhost Server]# rpm -ivh dhcp-3.0.5-31.el5_8.1.x86_64.rpm //安装dhcp包
- warning: dhcp-3.0.5-31.el5_8.1.x86_64.rpm: Header V3 DSAsignature: NOKEY, key ID 37017186
- Preparing... ########################################### [100%]
- 1:dhcp ########################################### [100%]
- [root@localhost Server]#
第二步:为主机设置固定ip地址
- [root@localhost Server]# cd
- [root@localhost ~]# vim/etc/sysconfig/network-scripts/ifcfg-eth0
- [root@localhost ~]# cat/etc/sysconfig/network-scripts/ifcfg-eth0
- # Intel Corporation 82545EM GigabitEthernet Controller (Copper)
- DEVICE=eth0
- BOOTPROTO=none
- HWADDR=00:0C:29:82:09:E9
- ONBOOT=yes
- IPADDR=192.168.1.1
- NETMASK=255.255.255.0
- [root@localhost ~]# service network restart
正在关闭接口 eth0: [确定]
关闭环回接口: [确定]
弹出环回接口: [确定]
弹出界面 eth0: [确定]
- [root@localhost ~]# ifconfig eth0
- eth0 Link encap:Ethernet HWaddr00:0C:29:82:09:E9
- inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
- inet6 addr: fe80::20c:29ff:fe82:9e9/64 Scope:Link
- UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
- RX packets:34 errors:0 dropped:0 overruns:0 frame:0
- TX packets:59 errors:0 dropped:0 overruns:0 carrier:0
- collisions:0 txqueuelen:1000
- RX bytes:4023 (3.9 KiB) TXbytes:11211 (10.9 KiB)
- [root@localhost ~]#
注:主机没有固定ip地址,是无法启动dhcp服务器的。
第三步:修改dhcp服务的配置文件:/etc/dhcpd.conf
注:默认dhcp的配置文件里面是没有内容的,只有四行注释:
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
#
意思为,模板文件为/usr/share/doc/dhcp*/dhcpd.conf.sample,那么,可以将这个文件的内容写到/etc/dhcpd.conf文件里面,方式为:shift+分号进入末行模式:
r /usr/share/doc/dhcp*/dhcpd.conf.sample即可。
- wKioL1MR_GvRh2cHAADcRg9ptso323.jpg
- [root@localhost ~]# vim /etc/dhcpd.conf
- [root@localhost ~]# cat /etc/dhcpd.conf //修改之后的配置文件
- ddns-update-style interim;
- subnet 192.168.1.0 netmask 255.255.255.0 {
- option routers 192.168.1.254;
- option subnet-mask 255.255.255.0;
- option domain-name "zhangsp.com";
- option domain-name-servers 202.106.0.20,8.8.8.8;
- option time-offset -18000; # Eastern Standard Time
- range dynamic-bootp 192.168.1.60 192.168.1.70;
- default-lease-time 21600;
- max-lease-time 43200;
- host server08 {
- hardware ethernet00:0C:29:1C:DA:DC;
- fixed-address 192.168.1.88;
- }
- }
- [root@localhost ~]# service dhcpd configtest
- Syntax: OK
- [root@localhost ~]# service dhcpd start
启动 dhcpd: [确定]
[root@localhost ~]# service dhcpd restart
关闭 dhcpd: [确定]
启动 dhcpd: [确定]
[root@localhost ~]#
第四步:在windows客户机和Linux客户机上测试是否能成功获取ip地址
linux客户机上使用:dhclient ifconfig 等查询。
dhclient //临时配置/测试网络
dhclient -d eth0 -d指定网络接口
dhclient -r eth0 -r选项为释放地址
注:
1,在指定服务器和客户机网卡的时候需要注意,vm1和vm8这两个虚拟网卡在安装vmware虚拟机的时候是默认安装在物理机上的,所以在选择网卡的时候,需要将虚拟机上的dhcp服务器给关闭。
关闭方法:虚拟机的“编辑”→“虚拟网络编辑器(N)”,不要勾选“使用本地DHCP...”
2,默认客户机在接收ip地址的时候,那个dhcp服务器先为它分配ip地址,它就会默认一直使用那个dhcp服务器。
二:Linux的dhcp中继服务
实验环境:
linux服务器server1、linux中继服务器server2,linux客户机、windows客户机
server1连接的网卡为vm1,eth0的ip地址为192.168.1.1;
server2的网卡有vm1(eth0的ip地址为192.168.1.254),vm2(eth1的ip地址为192.168.2.254),vm3(eth2的ip地址为192.168.3.254)
具体步骤:分两部分
第一部分:dhcp服务器server1上的配置:
第一步:在server1上安装dhcp服务器的软件包
rpm -ivh dhcp-3.0.5-31.el5_8.1.x86_64.rpm
第二步:规划ip地址:server1上只有一个网卡vm1,所以eth0的ip地址为192.168.1.1
第三步:指定其网关ip地址为server2上vm1网卡的地址192.168.1.254
- [root@server1 ~]# vim /etc/sysconfig/network
- [root@server1 ~]# cat /etc/sysconfig/network
- NETWORKING=yes
- NETWORKING_IPV6=yes
- HOSTNAME=server1.tarena.com
- GATEWAY=192.168.1.254 //添加网关,也能和ip地址写在一起
- [root@server1 ~]# service network restart
正在关闭接口 eth0: [确定]
关闭环回接口: [确定]
弹出环回接口: [确定]
弹出界面 eth0: [确定]
- [root@server1 ~]# route -n
- Kernel IP routing table
- Destination Gateway Genmask Flags Metric Ref Use Iface
- 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
- 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
- 0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 eth0
- [root@server1 ~]#
第四步:配置dhcp服务器并启动,/etc/dhcpd.conf配置文件内容如下:
- [root@server1 ~]# cat /etc/dhcpd.conf
- ddns-update-style interim;
- option domain-name "zhangsp.com";
- option domain-name-servers 202.106.0.20,8.8.8.8;
- option time-offset -18000; # Eastern Standard Time
- default-lease-time 21600;
- max-lease-time 43200;
- subnet 192.168.1.0 netmask 255.255.255.0 {
- option routers 192.168.1.254;
- range dynamic-bootp 192.168.1.60 192.168.1.70;
- host server08 {
- hardware ethernet00:0C:29:1C:DA:DC;
- fixed-address 192.168.1.88;
- }
- }
- subnet 192.168.2.0 netmask 255.255.255.0 {
- option routers 192.168.2.254;
- range dynamic-bootp 192.168.2.20 192.168.2.30;
- }
- subnet 192.168.3.0 netmask 255.255.255.0 {
- option routers 192.168.3.254;
- range dynamic-bootp 192.168.3.80 192.168.3.90;
- }
解析:
1,每个subnet定义一个网段,如果每个网段都有特殊主机需要定义指定的ip地址的话,需要添加host段,注意,不同subnet段中的host指定的主机名不能一样,否则,dhcpd服务无法启动。
2,配置dhcp中继服务的时候,服务器的dhcp配置文件里面的内容,有相同的,可以定义为全局,也就是在subnet外部的那部分,如果需要定义局部的参数,比如说分配的地址池,特殊主机的ip地址指定,不同网段之间的网关,则需要局部定义。
第二部分:dhcp中继上的配置及客户端的测试:
注:dhcp中继上需要开启dhcrelay这个服务,而这个服务是由dhcp服务器的那个软件包所产生的一个服务,所以,还需要安装dhcp服务器的那个软件包;
第一步:安装dhcp服务的软件包
rpm -ivh dhcp-3.0.5-31.el5_8.1.x86_64.rpm
第二步:分别为eth0,eth1,eth2设置静态ip地址
- [root@server2 ~]# cd/etc/sysconfig/network-scripts/
- [root@server2 network-scripts]# catifcfg-eth0 ifcfg-eth1 ifcfg-eth2
- # Intel Corporation 82545EM GigabitEthernet Controller (Copper)
- DEVICE=eth0
- BOOTPROTO=static
- HWADDR=00:0C:29:CD:14:F3
- ONBOOT=yes
- IPADDR=192.168.1.254 //eth0的ip地址
- NETMASK=255.255.255.0
- # Intel Corporation 82545EM GigabitEthernet Controller (Copper)
- DEVICE=eth1
- BOOTPROTO=static
- ONBOOT=yes
- HWADDR=00:0c:29:cd:14:fd
- IPADDR=192.168.2.254 //eth1的ip地址
- NETMASK=255.255.255.0
- # Intel Corporation 82545EM GigabitEthernet Controller (Copper)
- DEVICE=eth2
- BOOTPROTO=static
- ONBOOT=yes
- HWADDR=00:0c:29:cd:14:07
- IPADDR=192.168.3.254 //eth2的ip地址
- NETMASK=255.255.255.0
- [root@server2 network-scripts]#
注:由于server1需要指定网关为server2上vm1网卡也就是server2上的eth0的ip地址,所以,最好为eth0的ip地址最好设置成静态的,如果不设置静态的,那么则需要在server1上用hosts字段为server2的eth0指定ip地址。
第三步:开启server2主机的路由转发功能:
修改/etc/sysctl.conf的net.ipv4.ip_forward的值为1
并执行sysctl -p使配置文件生效。
第四步:修改/etc/sysconfig/dhcrelay配置文件,并启动dhcrelay服务
- [root@server2 ~]# vim/etc/sysconfig/dhcrelay
- [root@server2 ~]# cat/etc/sysconfig/dhcrelay
- INTERFACES="eth0 eth1 eth2" //这里三个网卡都需要写出来
- DHCPSERVERS="192.168.1.1" //指定dhcp服务器的的ip地址,也就是server1的ip地址
- [root@server2 ~]# servicedhcrelay start
启动 dhcrelay: [确定]
[root@server2 ~]# servicedhcrelay restart
关闭 dhcrelay: [确定]
启动 dhcrelay: [确定]
[root@server2 ~]#
第五步:在客户机上测试
分别让客户机连接虚拟机的vm2和vm3测试,将客户机上的ip地址获取方式设置为dhcp(Linux客户机上)或自动获取ip地址(windows主机上)。
如果不出意外情况,能够获取到指定dhcp服务器指定地址池的ip地址。
三:扩展
1,查看dhcp的一些信息
在服务器端查看地址分配情况:查看/var/lib/dhcpd/dhcpd.leases文件
- [root@server1 ~]# tail/var/lib/dhcpd/dhcpd.leases
- }
- lease 192.168.3.90 {
- starts 6 2014/03/01 12:40:15;
- ends 6 2014/03/01 18:40:15;
- binding state active;
- next binding state free;
- hardware ethernet 00:0c:29:1c:da:dc;
- uid "\001\000\014)\034\332\334";
- client-hostname "server2";
- }
- [root@server1 ~]#
在客户端查看以获取的IP租约
- [root@client1 ~]# tail -n 15/var/lib/dhclient/dhclient.leases
- lease {
- interface "eth0";
- fixed-address 192.168.2.29;
- option subnet-mask 255.255.255.0;
- option time-offset -18000;
- option routers 192.168.2.254;
- option dhcp-lease-time 21600;
- option dhcp-message-type 5;
- option domain-name-servers 202.106.0.20,8.8.8.8;
- option dhcp-server-identifier 192.168.1.1;
- option domain-name "zhangsp.com";
- renew 6 2014/3/1 16:06:58;
- rebind 6 2014/3/1 18:57:46;
- expire 6 2014/3/1 19:42:46;
- }
- [root@client1 ~]#
2,dhcp服务器无法启动的排错方式
配置dhcp服务器常见的错误大致分为两种:
第一种:配置文件错误
这一种:排错方式最好的是使用service dhcpd configtest命令,如果有哪一行错误,将会有提示。
如果使用service dhcpd configtest命令检测不出来错误,那配置文件错误的可能性很小,我只发现了一个,就是subnet字段里面的网络地址跟dhcp服务器的主机不再一个网段,那么使用service dhcpd configtest是检测不出来错误的,就是无法启动dhcpd。
第二种:网络地址错误
dhcpd无法启动的另外一个原因是,Linux服务器没有设置固定的ip地址。
必须设置了固定的ip地址才能够成功启动dhcpd服务!
总结:配了好几次,终于成功了,最致命的两个错误:
1,没有将server1的网关指定为server2的ip地址。
2,没有将dhcp中继的/etc/sysconfig/dhcrelay配置文件里面的网卡指定网段指定全,需要指定所有的网卡,即eth0,eth1,eth2...(有几个网卡,写几个!)