DHCP服务
课程目标3
- 了解DHCP服务的工作原理
- 能够配置简单的dhcp服务器
一、DHCP服务介绍
- DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,UDP协议,67号端口
- 主要用于动态管理分配IP地址
二、DHCP服务的工作原理
过程分析:
- dhcpdiscover(发现):该过程中客户端开始建立请求,
- dhcpoffer(提供):当网络中的dhcp服务器收到dhcpdiscover信息后,网掩码、租约和提供dhcp服务的服务器的ip。**
- dhcprequset(请求):当dhcp客户收到服务器的返回信息后,就以**广播的方式发送
- dhcpack(确认):一旦被选中的dhcp收到客户端的请求信息后
三、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 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]
//启动失败
原因分析:
当我们排除了所有可能的情况下还找不出原因的话,就需要通过日志去分析
- 日志错误信息
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 ]
- 测试验证
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 ]
课后作业:
- 完成课堂练习
- 搭建一个简单的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服务)
- 测试验证
步骤:
- 关闭防火墙和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 //主配置文件
- 了解相关的配置文件
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.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 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
测试验证: