DHCP服务初探

183 阅读4分钟

DHCP服务

课程目标3

  • 了解DHCP服务的工作原理
  • 能够配置简单的dhcp服务器

一、DHCP服务介绍

  • DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,UDP协议,67号端口
  • 主要用于动态管理分配IP地址

二、DHCP服务的工作原理

dhcp

过程分析:

  • dhcpdiscover(发现):该过程中客户端开始建立请求,
  • dhcpoffer(提供):当网络中的dhcp服务器收到dhcpdiscover信息后,网掩码、租约和提供dhcp服务的服务器的ip。**
  • dhcprequset(请求):当dhcp客户收到服务器的返回信息后,就以**广播的方式发送
  • dhcpack(确认):一旦被选中的dhcp收到客户端的请求信息后

三、DHCP服务器配置

  • 环境准备:
  • 步骤:
  1. 安装dhcp软件包
[root@server ~]# yum -y install dhcp
[root@server ~]# rpm -ql dhcp
/etc/dhcp

​
  1. 修改配置文件
vim /etc/dhcp/dhcpd.conf
option domain-name "itcast.cc";             //域名

  option routers 192.168.1.110;             //网关
  option broadcast-address 192.168.2.255    //广播地址
}
​
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. 日志错误信息
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;
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:                                            [  OK  ]
  1. 测试验证

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp
​
重启网络让client端自动获取IP地址:
[root@client ~]# service network restart
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:  Active connection state: activating
Active connection path: /org/freedesktop/NetworkManager/ActiveConnection/8
state: activated
Connection activated
                                                           [  OK  ]

课后作业:

  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 
#

default-lease-time 3600;
max-lease-time 7200;
log-facility local7;
​
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服务管理
  • 通过明文的帐号与密码传输,不安全,不适用于类unix系统
  • Linux系统默认不使用telnet,使用ssh

二、搭建telnet服务

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

环境:

server:10.1.1.2 搭建telnet服务

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

思路:

  • 安装软件包(telnet-server|xinetd)
  • 根据需求通过修改配置文件来完成服务的搭建
  • 启动服务,开机自启动(启动xinetd服务)
  • 测试验证

步骤:

  1. 关闭防火墙和selinux

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 //关闭 重启机器生效 ​


2.  配置yum源


2.  软件三步曲

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

        ```
                     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        //主配置文件
    

  1. 了解相关的配置文件

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  外部调用的目录 ​ ​ 子配置文件

       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添加到系统登记表 }


5.  根据需求通过修改配置文件来完成服务的搭建

    ```
    service telnet
    {
            flags           = REUSE
            socket_type     = stream
            wait            = no
            user            = root
            server          = /usr/sbin/in.telnetd
            log_on_failure  += USERID
            disable         = no
    }
    ```

5.  启动服务,开机自启动

[root@server ~]# /etc/init.d/xinetd start Starting xinetd:                                           [  OK  ] [root@server ~]# netstat -nltp|grep xinetd tcp        0      0 :::23                       :::*                        LISTEN      7471/xinetd        


7.  测试验证

    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.254192.168.0.2访问;通过user01 密码123登录 要求2:只允许192.168.0.0/24网段,拒绝192.168.0.2访问

只允许10.1.1.0/24网段的所有人来访问,除了10.1.1.3 ​ 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)控制只能9001800才能telnet连接 3)指定日志记录到/var/log/xinetd_telnet.log4)更改更改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


测试验证: