DHCP服务初探

DHCP服务

课程目标3

  • 了解DHCP服务的工作原理

  • 能够配置简单的dhcp服务器

一、DHCP服务介绍

  • DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,UDP协议,67号端口

  • 主要用于动态管理分配IP地址

二、DHCP服务的工作原理

过程分析:

  • dhcpdiscover(发现):该过程中客户端开始建立请求

  • dhcpoffer(提供):当网络中的dhcp服务器收到dhcpdiscover信息后,对自身进行检查,并发送相应的地址。

  • dhcprequset(请求):当dhcp客户收到服务器的返回信息后,就以广播的方式发送一个dhcp

  • dhcpack(确认):一旦被选中的dhcp收到客户端的请求信息后,就将以保留的这个ip标识为以租用

三、DHCP服务器配置

  • 环境准备:你需要云服务器的部署环境,这里我用的是3A网络的,可以随时更换ip地址,特别适合小白,
     

  • 步骤:

  1. 安装dhcp软件包

[root@server ~]# yum -y install dhcp
[root@server ~]# rpm -ql dhcp
/etc/dhcp
/etc/dhcp/dhcpd.conf    //主配置文件

​
  1. 修改配置文件

vim /etc/dhcp/dhcpd.conf
option domain-name "itcast.cc";             //域名
option domain-name-servers 192.168.1.110, 8.8.8.8;  //DNS(可以写多个)
default-lease-time 3600;        //缺省租约
max-lease-time 7200;            //客户端最大租约
lo
​
vim /etc/dhcp/dhcpd.conf
option domain-name "itcast.cc"; 
option domain-name-servers 8.8.8.8;
default-lease-time 3600;
max-lease-time 7200;
log-facility local7;
​
subnet 10.1.1.0 netmask 255.255.255.0 { 
  range 10.1.1.100 10.1.1.150; 
  option routers 10.1.1.1;
  option broadcast-address 10.1.1.255
}
​
​
[root@MissHou ~]# service dhcpd start
Starting dhcpd:                                            [FAILED]
//启动失败
​
原因分析:
当我们排除了所有可能的情况下还找不出原因的话,就需要通过日志去分析

  1. 日志错误信息

[root@server ~]# tail -f /var/log/messages
Apr 16 17:54:22 MissHou dhcpd: /etc/dhcp/dhcpd.conf line 16: semicolon expected.
Apr 16 17:54:22 MissHou dhcpd: }
Apr 16 17:54:22 MissHou dhcpd:  ^
Apr 16 17:54:22 MissHou dhcpd: /etc/dhcp/dhcpd.conf line 16: unexpected end of file
Apr 16 17:54:22 MissHou dhcpd: }
Apr 16 17:54:22 MissHou dhcpd:  ^
Apr 16 17:54:22 MissHou dhcpd: Configuration file errors encountered -- exiting
Apr 16 17:54:22 MissHou dhcpd: 
​
通过查看日志发现,在}附近有报错,再次查看配置文件,发现少了一个分号;
​
更改如下:
option domain-name "itcast.cc"; 
option domain-name-servers 8.8.8.8;
default-lease-time 3600;

​
再次启动成功:
[root@MissHou ~]# service dhcpd start
Starting dhcpd:                                            [  OK  ]
  1. 测试验证

client端修改IP地址为动态获取:
[root@client ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
[root@client ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp
​
重启网络让client端自动获取IP地址:
[root@client ~]# service network restart
Shutting down loopback interface:                          [  OK  ]
B
                                                           [  OK  ]
查看IP地址是否是指定的IP范围:
[root@client ~]# ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 00:0C:29:41:A2:FC  
          inet addr:10.1.1.100  Bcast:10.1.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe41:a2fc/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          R

课后作业:

  1. 完成课堂练习

  2. 搭建一个简单的DHCP服务器

需求:

需求: server:eth0 10.1.1.2

eth0:1 192.168.1.2

client:eth0 dhcp 192.168.1.0

环境准备: dhcp server端:增加一个子接口,并且配置192.168.1.0/24网段的IP

[root@server ~]# cat /etc/dhcp/dhcpd.conf 
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample

subnet 192.168.1.0 netmask 255.255.255.0 { 
  range 192.168.1.100 192.168.1.150; 
  option routers 192.168.1.1;
  option broadcast-address 192.168.1.255;
}
​

扩展

telnet服务

一、telnet服务介绍

  • telnet远程管理服务,TCP协议 23号端口

  • telnet服务是依赖服务,由xinetd服务管理

二、搭建telnet服务

需求1:搭建一个telnet服务,客户端使用专门的工具telnet可以访问或者管理telnet服务器

环境:

server:10.1.1.2 搭建telnet服务

client:10.1.1.3 测试telnet服务 使用telnet工具远程登录server

思路:

步骤:

  1. 关闭防火墙和selinux

[root@server ~]# service iptables stop
[root@server ~]# chkconfig iptables off
[root@server ~]# chkconfig --list|grep iptables
iptables        0:off   1:off   2:off   3:off   4:off   5:off   6:off
​
[root@server ~]# getenforce 
Enforcing
[root@server ~]# setenforce
usage:  setenforce [ Enforcing | Permissive | 1 | 0 ]
[root@server ~]# setenforce 0
[root@server ~]# getenforce 
Permissive
​
永久关闭:
[root@server ~]# vim /etc/sysconfig/selinux
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled    //关闭    重启机器生效
​
  1. 配置yum源

  2. 软件三步曲

    • 查看和安装相对应的软件包

      [root@server ~]# yum list|grep telnet
      telnet.x86_64                           1:0.17-47.el6_3.1                 server
      telnet-server.x86_64                    1:0.17-47.el6_3.1                 server
      [root@server ~]# yum list|grep xinetd
      xinetd.x86_64                           2:2.3.14-39.el6_4                 server
      ​
      [root@server ~]# yum -y install telnet-server xinetd
      ​

    • 确认软件成功安装

    [root@server ~]# rpm -q xinetd telnet-server
    xinetd-2.3.14-39.el6_4.x86_64
    telnet-server-0.17-47.el6_3.1.x86_64
    ​

    • 查看软件带来的文件列表

    [root@server ~]# rpm -ql xinetd
    /etc/rc.d/init.d/xinetd
    /etc/xinetd.conf        //主配置文件
    /usr/sbin/xinetd        //二进制命令
    /etc/xinetd.d/          //子配置文件的主目录
    ​
    [root@server ~]# rpm -ql telnet-server
    /etc/xinetd.d/telnet    //telnet服务的子配置文件
    /usr/sbin/in.telnetd    //二进制命令(程序)

  4. 了解相关的配置文件
RHEL6/CentOS6:
主配置文件
cat /etc/xinetd.conf  |grep -v ^# |grep -v ^$
defaults
{
    log_type    = SYSLOG daemon info   --日志类型,表示使用syslog进行服务登记。
    log_on_failure  = HOST                 --失败日志,失败后记录客户机的IP地址。
    log_on_success  = PID HOST DURATION EXIT  --成功日志,记录客户机的IP地址和进程ID
    cps     = 50 10  表示每秒50个连接,如果超过限制,则等待10秒。主要用于对付拒绝服务攻击。
    instances   = 50  最大连接数
    per_source  = 10  每个IP地址最大连接数
    v6only      = no  不使用ipv6
    groups      = yes  确定该服务的进程组ID,/etc/group
    umask       = 002  文件生成码反掩码   666(664) 777(775)
}
includedir /etc/xinetd.d  外部调用的目录
​
​
子配置文件
cat /etc/xinetd.d/telnet 
# default: on
# description: The telnet server serves telnet sessions; it uses \
#       unencrypted username/password pairs for authentication.
service telnet
{
        disable = no                    默认开启服务,=yes表示关闭
        flags           = REUSE       标记
        socket_type     = stream     tcp协议
        wait            = no        表示不需等待,即服务将以多线程的方式运行,并发连接;yes表示单线程
        user            = root      以root身份启动该进程
        server          = /usr/sbin/in.telnetd   二进制命令
        log_on_failure  += USERID       表示设置失败时,UID添加到系统登记表
}
  1. 根据需求通过修改配置文件来完成服务的搭建

    service telnet
    {
            flags           = REUSE
            socket_type     = stream
            wait            = no
            user            = root
            server          = /usr/sbin/in.telnetd
            log_on_failure  += USERID
            disable         = no
    }
  2. 启动服务,开机自启动

[root@server ~]# /etc/init.d/xinetd start
Starting xinetd:                                           [  OK  ]
[root@server ~]# netstat -nltp|grep xinetd
tcp        0      0 :::23                       :::*                        LISTEN      7471/xinetd         
[root@server ~]# chkconfig xinetd on
[root@server ~]# chkconfig --list|grep xinetd 
xinetd          0:off   1:off   2:on    3:on    4:on    5:on    6:off
xinetd based services:
​
  1. 测试验证

    client端:

    [root@client ~]# telnet 10.1.1.2
    Trying 10.1.1.2...
    Connected to 10.1.1.2.
    Escape character is '^]'.
    CentOS release 6.5 (Final)
    Kernel 2.6.32-431.el6.x86_64 on an x86_64
    login: root
    Password: 
    Login incorrect
    ​
    说明:默认情况下不允许root用户登录,可以通过以下方式让root用户登录:
    [root@server ~]# mv /etc/securetty /etc/securetty.bak
    注意:不建议root直接登录
    ​
    再次测试登录成功:
    [root@client ~]# telnet 10.1.1.2
    Trying 10.1.1.2...
    Connected to 10.1.1.2.
    Escape character is '^]'.
    CentOS release 6.5 (Final)
    Kernel 2.6.32-431.el6.x86_64 on an x86_64
    login: root
    Password: 
    Last login: Tue Apr 17 10:31:49 from 10.1.1.1
    [root@server ~]#
    ​
    [root@client ~]# telnet 10.1.1.2
    Trying 10.1.1.2...
    Connected to 10.1.1.2.
    Escape character is '^]'.
    CentOS release 6.5 (Final)
    Kernel 2.6.32-431.el6.x86_64 on an x86_64
    login: stu1
    Password: 
    Last login: Mon Apr 16 17:02:29 from 10.1.1.3
    [stu1@server ~]$ ls
    ​

三、综合案例

根据需求来配置telnet服务

要求1:只允许192.168.0.254和192.168.0.2访问;通过user01 密码123登录 要求2:只允许192.168.0.0/24网段,拒绝192.168.0.2访问

只允许10.1.1.0/24网段的所有人来访问,除了10.1.1.3
​
[root@server ~]# cat /etc/xinetd.d/telnet 
# default: on
# description: The telnet server serves telnet sessions; it uses \
#   unencrypted username/password pairs for authentication.
service telnet
{
    flags       = REUSE
    socket_type = stream        
    wait        = no
    user        = root
    server      = /usr/sbin/in.telnetd
    log_on_failure  += USERID
    disable     = no
    no_access   = 10.1.1.3
    only_from   = 10.1.1.0/24
}
​

要求3:以上基础上增加一些功能 man xinetd.conf 1)控制这个服务最多只能3个连接,每个源IP只能1个连接 2)控制只能9:00到18:00才能telnet连接 3)指定日志记录到/var/log/xinetd_telnet.log里 4)更改更改telnet服务的默认端口号10023

service telnet
{
    flags       = REUSE
    socket_type = stream        
    wait        = no
    user        = root
    server      = /usr/sbin/in.telnetd
    log_on_failure  += USERID
    disable     = no
    instances   = 3
    per_source  = 1
    access_times    = 9:00-12:00 14:30-17:30
    log_type    = FILE /var/log/xinetd_telnet.log
    port        = 10023
}
​
注意:端口号改变后需要修改/etc/services文件,端口号必须保持一致
[root@server ~]# grep telnet /etc/services 
telnet          10023/tcp
telnet          10023/udp
​
root@server ~]# netstat -nltp|grep 10023
tcp        0      0 :::10023                    :::*                        LISTEN      8036/xinetd 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值