Linux服務筆記之三:DHCP服務

今天,我想在Linux下配置一臺DHCP服務器,感受上比較直觀,難度稍微有點大(相對於在windows及路由器下)。

DHCP(Dynamic Host Configure Protocol,動態主機配置文件),是一個簡化手動分配及管理IP地址的煩惱。DHCP是基於C/S模式的。

默認,在RHEL上沒有安裝服務器組件。查看是否安裝的命令

[root@localhost ~]# rpm -qa | grep dhcp
dhcpv6_client-0.10-8                                        //客戶端組件

若是沒有安裝,拿出RHEL的安裝盤,找到相應的組件包。進行安裝

[root@localhost cdrom]# rpm -ivh RedHat/RPMS/dhcp-3.0.1-12_EL.i386.rpm                                        //服務器組件

查看DHCP服務的端口號

[root@localhost root]# vi  /etc/services
bootps                    67/tcp                              # BOOTP server
bootps                    67/udp
bootpc                    68/tcp                               # BOOTP client
bootpc                    68/udp


DHCP服務(即dhcpd守護進程)是按照/etc目錄下的dhcpd.conf配置文件進行設置。默認狀況下,這個文件是不存在的。在安裝dhcp服務時都會安裝一個幫助文件(配置實例)。經過如下命令查詢

[root@localhost ~]# rpm -ql dhcp
/etc/rc.d/init.d/dhcpd
/etc/rc.d/init.d/dhcrelay
/etc/sysconfig/dhcpd
/etc/sysconfig/dhcrelay
/usr/bin/omshell
/usr/sbin/dhcpd
/usr/sbin/dhcrelay
/usr/share/doc/dhcp-3.0.1
/usr/share/doc/dhcp-3.0.1/README
/usr/share/doc/dhcp-3.0.1/RELNOTES
/usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample           //配置樣本
/usr/share/man/man1/omshell.1.gz
/usr/share/man/man5/dhcp-eval.5.gz
/usr/share/man/man5/dhcpd.conf.5.gz
/usr/share/man/man5/dhcpd.leases.5.gz
/usr/share/man/man8/dhcpd.8.gz
/usr/share/man/man8/dhcrelay.8.gz
/var/lib/dhcp
/var/lib/dhcp/dhcpd.leases

而後,複製到/etc/dhcpd.conf

[root@localhost ~]# cp /usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample /etc/dhcpd.conf                   //複製文件

查看,/etc/dhcpd.conf配置文件(主要配置文擋)

[root@localhost ~]# cat /etc/dhcpd.conf
ddns-update-style interim;           //支持DNS動態更新
ignore client-updates;                //忽略客戶端更新DNS記錄

subnet 192.168.0.0 netmask 255.255.255.0 {
//宣告192.168.0.0/24網段
# --- default gateway
        option routers                 192.168.0.1;         //默認網關
        option subnet-mask          255.255.255.0;    //網絡掩碼
        option nis-domain             "domain.org";      //NIS域名稱
        option domain-name          "domain.org";     //DNS域名
        option domain-name-servers  192.168.0.1;   //DNS服務地址
option time-offset                    -18000; # Eastern Standard Time
#             option ntp-servers                       192.168.0.1;
#             option netbios-name-servers         192.168.0.1;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
#             option netbios-node-type 2;

                range dynamic-bootp 192.168.0.128 192.168.0.254;
                //定義可分配的IP地址池
                default-lease-time 21600;
                //默認租約期限
                max-lease-time 43200;
                //最大租約期限
                # we want the nameserver to appear at a fixed address
                host ns {
                                #next-server marvin.redhat.com;
                                hardware ethernet 12:34:56:78:AB:CD;
                                fixed-address 207.175.42.254;
                }              //默認永久分配IP地址(物理地址匹配)
}

PS:我在VMware上作實驗的時候,可能dhcp客戶端(linux)獲取不到IP地址。
出現如下提示: Determining IP information for eth0... failed; no link present.  Check cable?
因爲虛擬機的緣由,須要在/etc/sysconfig/network-scripts/ifcfg-eth0後面添加下面命令

check_link_down()
{
         return 1;
}

配置完成後,須要從新開啓服務

[root@localhost ~]# service dhcpd restart          //從新開啓DHCP服務
[root@localhost ~]# /etc/init.d/dhcpd stop         //中止DHCP服務
[root@localhost ~]# /etc/init.d/dhcpd  start       //啓動DHCP服務
[root@localhost ~]# chkconfig --level 35 dhcpd on  
//開機自動啓動DHCP服務

在linux客戶端開啓DHCP服務(windows下比較簡單,不在作相關介紹),須要設置如下文擋

[root@localhost root]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp                                         //啓動DHCP服務
check_link_down()
{
        return 1;
}

這樣,就能夠獲取IP地址了。測試一下

[root@localhost root]# ifconfig eth0  
.....
Link encap:Ethernet    HWaddr 00:0C:29:93:19:4B
inet addr: 192.168.0.254  
Bcast:192.168.0.255    Mask:255.255.255.0
......

在現實生活中,有多個網段的IP地址須要分配,是否是每一個網段下分配一臺DHCP服務器呢?答案,是否認的。緣由:這個也不太現實(成本很高)。因此咱們能夠用DHCP中繼代理來完成這項功能。下次,我會經過一個具體的配置實例,來更形象地說明它的功能做用。

最後:DHCP客戶端申請IP地址的工做流程

(1)DHCP客戶端向本網段發送一個 DHCP DISCOVER(DHCP 發現)
(2)本網段的DHCP服務器迴應一個 DHCP OFFER(DHCP 提供)
(3)DHCP客戶端收到迴應後,向DHCP服務器請一個DHCP 所包含的IP地址,並廣播一個 DHCP REQUEST(DHCP 請求)
(4)最後,DHCP服務器發送一個 DHCP REPLY來確認。

其中,四個過程都是廣播進行的。

附上,我之前抓DHCP數據包的效果圖。


相關文章
相關標籤/搜索