随着现在电脑办工的情况越来越多,每个职员的电脑上网都得使用一个唯一的IP地址,人为的管理、分配和设置IP显得很繁琐,于是就有了DHCP这样的服务器。DHCP是Dynamic Host Configuration Protocol,也就是动态主机分配协议,用它就能自动的给接入公司网络的主机分配恰当的IP了。好了,那我们就在Linux上试验一下这个服务器的安装和配置吧。


一、准备和安装dhcp服务器

    先查看系统是否有安装DHCP服务端,一般是没有安装服务端的,只会默认安装客户端。

[root@localhost ~]# rpm -qa |grep dhcp
dhcp-common-4.1.1-43.P1.el6.centos.x86_64

执行命令发现果然如此,那我们就通过yum install -y dhcp这个命令安装好服务端吧。

安装完显示的信息如下:

已安装:
  dhcp.x86_64 12:4.1.1-43.P1.el6.centos.1                                             

作为依赖被升级:
  dhclient.x86_64 12:4.1.1-43.P1.el6.centos.1                                         
  dhcp-common.x86_64 12:4.1.1-43.P1.el6.centos.1                                      

完毕!
[root@localhost ~]# rpm -qa | grep dhc
dhcp-4.1.1-43.P1.el6.centos.1.x86_64
dhcp-common-4.1.1-43.P1.el6.centos.1.x86_64
dhclient-4.1.1-43.P1.el6.centos.1.x86_64

从以上信息知道安装成功了,是4.1.1的版本。



二、配置DHCP服务器

    配置DHCP服务器了一般来说就是配置其主配置文件/etc/dhcp/dhcpd.conf.好了,我们先看看这个文件。

[root@localhost dhcp]# cat dhcpd.conf 
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample
#   see 'man 5 dhcpd.conf'
#
[root@localhost dhcp]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample dhcpd.conf
cp:是否覆盖"dhcpd.conf"? y
[root@localhost dhcp]# cat dhcpd.conf 
# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
#

    从上图中我们可以发现,刚安装完的配置文件里面是叫我们去考/usr/share/doc/dhcp*/dhcpd.conf

.sample的,*是你安装的版本,这里是4.1.1;我就直接拷贝过来修改了哈。这个参照文件内容不少,但我们用到的不多,我就说一下我们主要要配置的吧。

  1. #A slightly different configuration for an internal subnet.

  2. subnet 192.168.2.0 netmask 255.255.255.0 {

  3.   range 192.168.2.5 192.168.2.16;

  4.   option domain-name-servers 192.168.2.2;

  5.   option domain-name "internal.example.org";

  6.   option routers 192.168.2.2;

  7.   option broadcast-address 192.168.2.254;

  8.   default-lease-time 3600;

  9.   max-lease-time 72000;

  10. }

  11. #fixed hosts

  12. host clonemachine2 {

  13.   hardware ethernet 00:50:56:36:20:7D;

  14.   fixed-address 192.168.2.17;

  15. }

我故意加了行号哈,好讲一下每行配置的内容。

第2行,是dhcp服务器作用的子网。后面接着一对花括号。

第3行,是dhcp服务器分配给请求主机的地址池一般来说,是把此子网内需要使用的固定IP排除在外的,如dhcp本身的IP。这个池可以有多个,中间用,逗号隔开就行。以;分号结束哦。

第4行,分配DNS地址给请求主机。

第5行,分配域的名字给请求主机。

第6行,分配给请求主机网关的地址。

第7行,分配给请求主机广播地址。

第8行,主机请求的租约的最短时间(单位为秒)。

第9行,主机请求的租约的最长时间。

第12行到第14行是给某些主机分配固定IP的,如我给clonemachin2的主机分配一个固定IP 192.168.2.17

那么我就把它的MAC地址和要分的IP写在host的段里面。


好了,简单的配置就是这样,然后我们使用service dhcpd configtest命令检查语法。

[root@localhost ~]# service dhcpd dhcpd.conftest
Usage: /etc/init.d/dhcpd {start|stop|restart|force-reload|condrestart|try-restart|configtest|status}
[root@localhost ~]# service dhcpd configtest
Syntax: OK

看来语法正确,我们赶紧启动dhcp服务测试一下吧,同时查看是否工作正常。

[root@localhost ~]# service dhcpd start
正在启动 dhcpd:                                           [确定]
[root@localhost ~]# ss -tunl
Netid  State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port 
udp    UNCONN     0      0                         *:67                       *:*     
udp    UNCONN     0      0                         *:111                      *:*     
udp    UNCONN     0      0                         *:880                      *:*     
udp    UNCONN     0      0                         *:631                      *:*     
udp    UNCONN     0      0                         *:57606                    *:*

好的,服务正常启动完成,相应的67号端口也开始在监听了,那我们就开始在客户机上dhcp获取地址吧

先看一下我想获取固定IP的主机是否如愿以偿吧。

马哥Linux学习之DHCP架设篇_DHCP

嗯,通过第6-11行的信息可以看出,是拿到了分给他的固定IP的。

好,我们继续使用另外一台主机,试试普通的获取IP吧。

马哥Linux学习之DHCP架设篇_Linux_02

同样拿到了192.168.2.5的地址哈,看到配置成功。

再看一下是不是客户机可以正常访问网络。

[root@localhost ~]# ping 192.168.2.2
PING 192.168.2.2 (192.168.2.2) 56(84) bytes of data.
64 bytes from 192.168.2.2: icmp_seq=1 ttl=128 time=0.806 ms
64 bytes from 192.168.2.2: icmp_seq=2 ttl=128 time=0.171 ms
^C
--- 192.168.2.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1926ms
rtt min/avg/max/mdev = 0.171/0.488/0.806/0.318 ms
[root@localhost ~]# ping www.baidu.com
PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.
64 bytes from 61.135.169.121: icmp_seq=1 ttl=128 time=3.62 ms
64 bytes from 61.135.169.121: icmp_seq=2 ttl=128 time=5.68 ms
64 bytes from 61.135.169.121: icmp_seq=3 ttl=128 time=5.74 ms
^C
--- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2363ms
rtt min/avg/max/mdev = 3.623/5.017/5.740/0.985 ms

使用192.168.2.5的主机CMachine1看来是可以正常访问的,再看看另外一台。

[root@localhost ~]# ping 192.168.2.2
PING 192.168.2.2 (192.168.2.2) 56(84) bytes of data.
64 bytes from 192.168.2.2: icmp_seq=1 ttl=128 time=1.10 ms
64 bytes from 192.168.2.2: icmp_seq=2 ttl=128 time=0.214 ms
64 bytes from 192.168.2.2: icmp_seq=3 ttl=128 time=0.127 ms
^C
--- 192.168.2.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2328ms
rtt min/avg/max/mdev = 0.127/0.481/1.104/0.442 ms
[root@localhost ~]# ping www.baidu.com
PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.
64 bytes from 61.135.169.121: icmp_seq=1 ttl=128 time=5.78 ms
64 bytes from 61.135.169.121: icmp_seq=2 ttl=128 time=6.02 ms
64 bytes from 61.135.169.121: icmp_seq=3 ttl=128 time=5.61 ms
^C
--- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2489ms
rtt min/avg/max/mdev = 5.619/5.808/6.024/0.188 ms

同样可以哦,那今天就算是成功了。以后有机会再深入研究。拜拜。\\*^o^*//