DHCP服务
课程目标3
了解DHCP服务的工作原理
能够配置简单的dhcp服务器
一、DHCP服务介绍
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,UDP协议,67号端口
主要用于动态管理分配IP地址
二、DHCP服务的工作原理
过程分析:
dhcpdiscover(发现):该过程中客户端开始建立请求,以0.0.0.0作为自己的ip地址而以255.255.255.255(广播地址)作为服务器的地址,等待DHCP服务器响应。
dhcpoffer(提供):当网络中的dhcp服务器收到dhcpdiscover信息后,对自身进行检查,并发送相应的地址。
dhcprequset(请求):当dhcp客户收到服务器的返回信息后,就以广播的方式发送址。
dhcpack(确认):一旦被选中的dhcp收到客户端的请求信息后,就将以保留的这个ip标识为以租用,然后广播的方式发送一个dhcpack信息给dhcp客户端,当客户端收到了确认信息后就完成了整个的获取ip的过程。
三、DHCP服务器配置
环境准备:
步骤:
安装dhcp软件包
[root@server ~]# yum -y install dhcp
[root@server ~]# rpm -ql dhcp
/etc/dhcp
修改配置文件
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; //客户端最大租约
log-facility local7; //定义日志设备载体 (/var/log/boot.log输出)
subnet 192.168.2.0 netmask 255.255.255.0 { //子网<网段>
}
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]
//启动失败
原因分析:
当我们排除了所有可能的情况下还找不出原因的话,就需要通过日志去分析
日志错误信息
[root@server ~]# tail -f /var/log/messages
A
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 ]
测试验证
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
Active connection path: /org/freedesktop/NetworkManager/ActiveConnection/8
state: activated
Connection activated
[ 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
RX packets:17493870 errors:0 dropped:0 overruns:0 frame:0
TX packets:2271 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1319498963 (1.2 GiB) TX bytes:221741 (216.5 KiB)
课后作业:
完成课堂练习
搭建一个简单的DHCP服务器
需求:
需求:server:eth0 10.1.1.2
eth0:1 192.168.1.2
client:eth0 dhcp 192.168.1.0
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
# see 'man 5 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 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服务器
环境:这里我用的是3A网络云服务器,可以随时更换IP地址,适合小白。
server:10.1.1.2 搭建telnet服务
client:10.1.1.3 测试telnet服务 使用telnet工具远程登录server
思路:
安装软件包(telnet-server|xinetd)
根据需求通过修改配置文件来完成服务的搭建
启动服务,开机自启动(启动xinetd服务)
测试验证
步骤:
关闭防火墙和selinux
[root@server ~]# service iptables stop
[root@server ~]# chkconfig iptables off
[root@server ~]# chkconfig --list|grep iptables
iptables 0:off1:off2:off3:off4:off5:off6:off
[root@server ~]# getenforce
Enforcing
[root@server ~]# setenforce
usage: setenforce [ Enforcing | Permissive | 1 | 0 ]
[root@server ~]# setenforce 0
[root@server ~]# getenforce
Permissive
配置yum源
略
软件三步曲
查看和安装相对应的软件包
[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
确认软件成功安装
[r[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 外部调用的目录
子配置文件
c
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添加到系统登记表
}
根据需求通过修改配置文件来完成服务的搭建
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = no
}
启动服务,开机自启动
[root@server ~]# /etc/init.d/xinetd start
Starting xinetd: [ OK ]
[root@server ~]# netstat -nltp|grep xinetd
tcp 0 0 :::23 :::* LISTEN 7471/xinetd
[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.conf1)控制这个服务最多只能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: