dhcp、tftp及pxe简介

DHCP:

全称:Dynamic Host Configuration Protocol  动态主机配置协议

DHCP配置内容:

IP/Netmask

Gateway

DNS Server

bootp: boot protocol --> dhcp  动态指派IP,永久有效

租约:即使用期限,DHCP服务器为客户端分配IP后,客户端使用IP地址是有期限的

2hours:假如租约期限为2小时

50%: 1hours --> 2hours        过了一个小时之后就要续租

50%:1hours --> 2hours   续租后又过了一个小时,就再续租,如果不用的时候,地址会自动被释放

75%: 0.5hours --> 2hours

87.5%: 0.25hours --> 2hours

dhcp discover   如果租约快要到期一直无法续租就要提前广播寻找DHCP服务器

RARP:(Reverse Address Resolution Protocol),是一种网络协议互联网工程任务组(IETF)在RFC903中描述了RARP。RARP使用与ARP相同的报头结构,作用与ARP相反。                            RARP用于将MAC地址转换为IP地址。其因为较限于IP地址的运用以及其他的一些缺点,因此渐为更新的BOOTPDHCP所取代。

RARP工作原理

  1. 发送主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址;
  2. 本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址;
  3. 如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用;
  4. 如果不存在,RARP服务器对此不做任何的响应;
  5. 源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败。

DHCP的工作流程:

比如客户端刚开机,那么客户端关机的时候地址是被释放的了。所以客户端开机后要重新做地址获取。地址获取是通过RARP协议获取的,所以客户端广播请求DHCP服务为其分配一个IP地址。分以一下4个步骤,都是以广播的方式进行的

1、Client: dhcp discover:客户端发送广播寻找DHCP服务器

2、Server: dhcp offer:(IP/netmask, gw)  DHCP服务器端收到广播报文后会做出响应,提供与客户端MAC匹配的IP/network,gw

3、Client:dhcp request  客户端选择DHCP服务器提供的IP后,要发出一个广播说采用了哪个IP。假如采用了DHCP服务器1的提供的IP,那么这台服务器就要在地址池中删除这次被采用的地                                                 址。而没有被采用的IP,DHCP服务器会回收过来

(有两种情况:1:多台DHCP服务器同时响应客户端的广播请求为客户端提供IP,2:客户端MAC相匹配的IP已经被占用)

4、Server: dhcp ack DHCP  被选定地址的服务器确认

续租:是以单播的方式

Client: dhcp request   客户端直接给DHCP服务器发送请求采用续租的地址

Server: dhcp ack        服务器端响应,

Server: dhcp nak       DHCP服务器拒绝续租,如果DHCP服务器拒绝续租,有可能DHCP服务器上的地址范围被修改了,客户端请求续租的地址不在此范围内

假如公司的网络做了两个区域,一个区域是财务,另一个区域是技术部门,彼此之间使用路由器链接。在财务部门的网络区域中提供了一台DHCP服务器,所以财务部门获取IP地址是没有问题。但技术部门如何获取IP地址?由于路由器是广播报文的屏障,所以财务部门这边的DHCP服务器是无法收到技术部门的客户端发送的广播。那么如何才能让DHCP服务器为技术部门的客户端分配地址呢?由于DHCP协议是可以被中继的,但是需要路由器开启中继功能,即路由器在右侧网络接口上安装一个提供DHCP服务的程序,这里成为A,监听在某个接口上接收技术部门客户端的请求并分配地址。所以技术部门的客户端广播的时候是路由器的A是可以接收到广播报文的。但路由器是没有DHCP功能的,所以路由器在收到报文后会定向单播给财务部门的DHCP服务器,DHCP服务器收到路由器的报文后,会定向把响应报文定向单播给路由器,路由器接收响应报文后再有A把此报文广播给技术部门的客户端。技术部门的客户端接收到IP地址后会再广播一个request,路由器接会把这个广播报文封装后再次单播给DHCO服务器。DHCP服务器接收到报文后再次单播给路由器,路由器A再次广播给技术部门的客户端。

问题:

1、DHCP服务器本身有地址,同时DHCP服务器自己的地址是不能动态分配的。

2、DHCP服务器应该跟财务部门一体。首先先满足财务部门客户端的需求,才能提供其他网络提供DHCP服务。

为每一个网络提供地址服务的功能称为作用域。所谓作用域就是能够为哪些网络提供地址池列表,从而能够完成地址分配。首先保证本地作用域,才能为其他网络提供。

Linux DHCP协议的实现程序:dhcp, dnsmasq

dnsmasq既可以配置成DNS转发器又可以作为DHCP server使用

# yum info dnsmasq

Dnsmasq is lightweight, easy to configure DNS forwarder and DHCP server.
: It is designed to provide DNS and, optionally, DHCP, to a small network.
: It can serve the names of local machines which are not in the global
: DNS. The DHCP server integrates with the DNS server and allows machines
: with DHCP-allocated addresses to appear in the DNS with names configured
: either in each host or in a central configuration file. Dnsmasq supports
: static and dynamic DHCP leases and BOOTP for network booting of diskless
: machines.

Linux也可以充当DHCP中继器

# yum install dhcp     //提供了两个守护进程,dhcp服务器和dhcp中继器,且二者取其一

/etc/dhcp/dhcpd.conf      //配置文件
/etc/dhcp/dhcpd6.conf
/etc/dhcp/scripts
/etc/dhcp/scripts/README.scripts
/etc/openldap/schema/dhcp.schema
/etc/sysconfig/dhcpd
/usr/bin/omshell
/usr/lib/systemd/system/dhcpd.service 
/usr/lib/systemd/system/dhcpd6.service
/usr/lib/systemd/system/dhcrelay.service
/usr/sbin/dhcpd      -->   /etc/rc.d/init.d/dhcpd(centos6)   //启动进程
/usr/sbin/dhcrelay  -->   /etc/rc.d/init.d/dhcrelay     //中继器不需要配置文件

如何配置使用DHCP

# cat /etc/dhcp/dhcpd.conf   //是一个空文件

#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example   //这里有一个模板
# see dhcpd.conf(5) man page
#

# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf    //把模板copy过来用

# vim /etc/dhcp/dhcpd.conf

在dhcpd.conf配置文件中:如果定义了多个option,那么范围最小的option优先级最高

subnet {   //每一个subnet用来定义一个子网,在windows中叫作用域,所以地址池就是在子网中定义的,每一个地址再分配是,额外的属性如网关、DNS服务器等都

...    //通过option指定,而option既可以放在subnet之外也可以放在subnet之内,如果option放在subnet之外,则全局有效,对每一个subnet都有效。

}

host {     //固定分配给某一个主机的保留地址,有些主机来请求IP地址,都期望使用固定地址,这个地址不在地址池中,而是额外保留给某个主机使用

...

}

share-network {  //超级作用域,把多个对应的地址网段在同一个池中进行同一分配

#option指明除了地址和掩码以外分配的其他属性,既可以定义在全局位置,也可以定义在subnet中

option domain-name "example.org";   //搜索域,比如在主机上#ping www,这时候是不通的,如果在此处定义了搜索域,他会在www后面自动补全的
option domain-name-servers ns1.example.org, ns2.example.org;   //域名服务器,如果是域名,则需要先把域名转换成IP地址,再分配给客户端,因为客户端本来就没有域名服务器指向,没办法解析

#全局配置选项

default-lease-time 600; //默认租约期限,单位是秒钟,比如改为1天86400,后面必须是分号结尾

max-lease-time 7200; //最大租约期限

log-facility local7;  //日志

subnet 10.152.187.0 netmask 255.255.255.0 {  //先满足本子网,在服务其他网段。这里是为10.152.187.0分配IP地址,注意:这里的这里定义的网络一定是配置文件的当前主机所在的网络

range  10.152.187.120 10.152.187.130; //指明起始地址和结束地址,叫地址池,这里一共定义了10个地址

}

对本机的dhcpd.conf进行修改

option domain-name "dongshi.com";
option domain-name-servers 8.8.8.8;

default-lease-time 86400;
max-lease-time 86400;

log-facility local7;

subnet 192.168.184.0 netmask 255.255.255.0 {
     range 192.168.184.130 192.168.184.160;
  }

:.,$s/^[^#]/#/g     //然后把后面的不以#开头的内容加上#号

# systemctl start dhcpd   //  启动

监听在udp的67号端口

在另外一个主机上进行测试

# dhclient -d  //用另一个主机以工作于前台的方式动态获取地址,dhclient进程只能启动一次

此时绑定的192.168.184.130是可以登录的,监听在68号端口上

如何知道DHCP服务器把地址分配给哪个主机?

# cat /var/lib/dhcpd/dhcpd.leases   //记录了DHCP的租约位置

# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.2.5

server-duid "\000\001\000\001#\260\371l\000\014)\316\370\004";

lease 192.168.184.130 {             //130地址被分配到MAC地址是最下面一行的主机
  starts 6 2018/12/22 13:41:57;     //租约的起始时间
  ends 0 2018/12/23 13:41:57;       //租约的到期时间
  cltt 6 2018/12/22 13:41:57;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 00:0c:29:67:09:fe;    //被分到IP地址的主机的MAC地址
}
lease 192.168.184.145 {
  starts 6 2018/12/22 13:47:32;
  ends 0 2018/12/23 13:47:32;
  cltt 6 2018/12/22 13:47:32;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 00:0c:29:cf:00:6b;
}

在node2上查看绑定的地址

在node3上查看绑定的地址

如何分配网关呢?

# vim dhcpd.conf   //编辑配置文件指定网关

option domain-name "dongshi.com";
option domain-name-servers 8.8.8.8;
option routers 192.168.184.141;        //添加此行,放在这里是全局使用,如果有subnet的话,也可以把option放在指定的subnet中,一般routers都是定义在subnet中

# systemctl restart dhcpd

再在node2上查看网关,依然没有,因为dhclient功能有限,所以在设置node2网络采用内部网关通道,自定义下的VMnet2

其它配置选项:

filename: 指明引导文件名称;

next-server:提供引导文件的服务器IP地址;

filename "pxelinux.0";

next-server 172.16.100.67;

PXE:preboot execute environment, Intel

dhcp, tftp, file server(yum repository)

CentOS 6 PXE:

yum -y install syslinux tftp-server

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

cp /media/cdrom/images/pxelinux/{vmlinuz,initrd.img} /var/lib/tftp/boot/

cp /media/cdrom/isolinux/{boot.cfg,vesamenu.c32,splash.png} /var/lib/tftp/boot/

mkdir /var/lib/tftpboot/pxelinux.cfg/

cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default/

CentOS 7 PXE:

yum -y install syslinux tftp-server

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

cp /media/cdrom/images/pxelinux/{vmlinuz,initrd.img} /var/lib/tftp/boot/

cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk} /var/lib/tftpboot/

mkdir /var/lib/tftpboot/pxelinux.cfg/

创建/var/lib/tftpboot/pxelinux.cfg/default

内容类似如下:

default menu.c32

prompt 5

timeout 30

MENU TITLE CentOS 7 PXE Menu

LABEL linux

MENU LABEL Install CentOS 7 x86_64

KERNEL vmlinuz

APPEND initrd=initrd.img inst.repo=http://172.16.100.67/centos7 ks=http://172.16.100.67/centos7.cfg

Ansible:

运维工作:系统安装(物理机、虚拟机)--> 程序包安装、配置、服务启动 --> 批量操作 --> 程序发布  --> 监控

OS Provisioning:

物理机:PXE、Cobbler

虚拟机:Image Templates

Configration:

puppet (ruby)

saltstack (python)

chef

cfengine

Command and Control:

fabric

预发布验正:

新版本的代码先发布到服务器(跟线上环境配置完全相同,只是未接入到调度器);

程序发布:

不能影响用户体验;

系统不能停机;

不能导致系统故障或造成系统完全不可用;

灰度发布:

发布路径:

/webapp/tuangou-1.1

/web/app/tuangou

/webapp/tuangou-1.2

在调度器上下线一批主机(maintanance) --> 关闭服务 --> 部署新版本的应用程序 --> 启动服务 --> 在调度器上启用这一批服务器;

自动化灰度发布:脚本、发布平台;

运维工具的分类:

agent: puppet, func

agentless: ansible, fabric

ssh

ansible:

模块化,调用特定的模块,完成特定的任务;

基于Python语言实现,由Paramiko、PyYAML和Jinja2三个关键模块;

部署简单,agentless;

主从模式

支持自定义模块

支持Playbook

幂等性:

配置文件:

/etc/ansible/ansible.cfg

/etc/ansible/hosts

http://172.16.0.1/centos7.cfg

回顾:pxe, ansible

pxe:

网卡支持网络引导;

dhcp, filename, next-server

tftp-server

pxelinux.0

vmlinuz, initrd.img

menu.c32

pxelinux.cfg/default

system-config-kickstart

ksvalidator

ansible:

os provision:

物理机:pxe, cobbler

虚拟机:image file template

configuration:

程序包管理、用户管理、配置文件、服务管理、cron任务等等;

puppet, saltstack, chef, cfengine

task exec

command and control

func, fabric

程序发布:灰度模型

agent

agentless:

ssh服务;

ansible:

ansible <host-pattern> [-f forks] [-m module_name] [-a args]

args:

key=value

注意:command模块要执行命令无须为key=value格式,而是直接给出要执行的命令即可;

常用模块:

command

-a ‘COMMAND‘

user

-a ‘name= state={present|absent} system= uid=‘

group

-a ‘name= gid= state= system=‘

cron

-a ‘name= minute= hour= day= month= weekday= job= user= state=‘

copy

-a ‘dest= src= mode= owner= group=‘

file

-a ‘path= mode= owner= group= state={directory|link|present|absent} src=‘

ping

没有参数

yum

-a ‘name= state={present|latest|absent}‘

service

-a ‘name= state={started|stopped|restarted} enabled=‘

shell

-a ‘COMMAND‘

script

-a ‘/path/to/script‘

setup

playbook的核心元素:

tasks: 任务

variables: 变量

templates: 模板

handlers: 处理器

roles: 角色

变量:

facts

--extra-vars "name=value name=value"

role定义

Inventory中的变量:

主机变量

hostname name=value name=value

组变量

[groupname:vars]

name=value

name=value

Inventory的高级用法:

Playbook:

- host:

vars:

remote_user:

tasks:

-

-

-

variables:

-

-

-

handlers:

-

-

- host:

- host:

"ansible_distribution_major_version": "7",

nginx.conf

worker_processes {{ ansible_processor_cores * ansible_processor_count - 1 }};

实战:用ansible playbook完成配置keepalived的集群;

博客:ansible的用法;

原文地址:https://www.cnblogs.com/hanshanxiaoheshang/p/10162905.html

时间: 2024-08-30 01:02:10

dhcp、tftp及pxe简介的相关文章

Linux之DHCP+tftp+syslinux+PXE+Cobbler

DHCP简介DHCP全称为:Dynamic host configuration protocol协议,其协议前身为Boot protocol, 其工作于67,68/UDP端口,服务端工作于67端口,客户端监听于68端口. 在某此情况下, dhcp server可能会与客户端通信,故需要监听在67端口,接收服务端的通讯请求. 在客户端操作系统开机系统加载时, 有一个特定的服务可以激活client程序,激活后,客户端通过网卡向外发送rarp报文,向局域网的DHCP server请求获取IP地址.D

Linux学习日志day1——无人值守系统安装DHCP+TFTP+PXE+Kickstar

Linux学习日志day1--无人值守批量系统远程网络安装(DHCP+TFTP+PXE+Kickstar)                                         --作者:江信瀚 服务器环境介绍: 主机名:workstation.example.com 关闭SElinux以及防火墙 虚拟机:VMware(关闭了VMware的DHCP服务) 网卡配置: 静态IP获取! IPV6全部都删除,因为根本用不到 子网IP可以在VMware中设置 8.8.8.8是谷歌的DNS服务器

linux网络安装(PXE + DHCP+TFTP+ Kickstart+ FTP)

需要使用到的服务:PXE + DHCP+TFTP+ Kickstart+ FTP 运行原理如下图: 原理和概念:  1.前言        首先,简单谈谈为什么要采用无人值守网络安装linux操作系统.一方面是运维管理的需要,因各种需要,安装操作系统在实验室内时有发生,有时候更出现批量安装某一型号操作系统的情形,这时候如果用光盘挨个安装将变得异常繁琐,并且需要人工值守.此外,因操作系统种类较多(主要是针对linux),内部人员使用频繁,也会带来管理上的问题.另一方面是当前MPX项目开发的需要,为

Linux centos PXE无人值守安装 DHCP+TFTP+FTP+Kickstart

网络模式:NAT模式(共享主机的IP地址) DHCP / TFTP IP:192.168.220.137 HTTP / FTP / NFS IP:192.168.220.137 环境搭建: yum install -y tftp-server dhcp system-config-kickstart vsftp xinetd syslinux 1.挂载ISO文件然后把光盘中的文件拷贝至/var/ftp/pub中 mount /dev/cdrom /media/CentOS/ cp -Rf /me

Linux centos PXE无人值守安装 DHCP+TFTP+HTTPD+Kickstart

网络模式: NAT模式(共享主机的IP地址) DHCP / TFTP IP:192.168.220.137 HTTP / FTP / NFS IP:192.168.220.137 环境搭建: yum install -y tftp-server dhcp system-config-kickstart httpd xinetd syslinux 1.挂载ISO文件,复制光盘全部内容至http 的根目录/var/www/html/ 下 mkdir /mnt/cdrom mount /dev/cdr

DHCP+TFTP+pxe+Kickstart实现无人值守自动装系统

 已经提前配置好YUM 一.需检查iptableis是否关闭 二.安装DHCP服务并修改配置 三.安装tftp并修改其配置 四.配置PXE相关文件 五.使用system-config-kickstart生成自动装机配置文件,我这里是基于http实现的 六.修改/var/lib/tftpboot/pxelinux.cfg/default文件 七.把镜像放到http目录下 八.装机测试 OK DHCP+TFTP+pxe+Kickstart实现无人值守自动装系统

PXE环境下安装系统(DHCP+TFTP+HTTP+kickstart)

简单的说,这就是一个通过PEX网卡自动安装系统的过程.整个启动的过程大概可以理解为这样:计算机从PEX网卡设备启动,通过网卡与DHCP服务之间的4次互相广播后获得DHCP服务器提供的IP地址,并且DHCP服务器会告诉该网卡TFTP服务的位置,从而使PXE网卡可以获得"pxelinux.0"的启动文件,然后通过该文件可以读取TFTP服务器中的一些相应的配置文件,从而使该计算机可以进入系统安装界面,而这里我们想通过自动化的方法安装,所以我们就需要kickstart文件,而为了能够获得源,在

DHCP+TFTP+HTTP+kickstart实现PXE自动化部署系统Centos

前提:对DHCP,tftp-server,httpd有一定了结,本文将略过对服务的讲解和安装过程,主要讲通过这三个服务来实现PXE服务器的搭建过程. 准备工作: 安装软件包: 安装制作ks.cfg文件工具(图形界面下):yum-y system-config-kickstart 安装服务:yum -y installdchp tftp-server httpd 安装syslinux:yum -yinstall syslinux 或者使用下面的安装方法一次性全部安装: yum -y install

Linux上基于网络自动化安装系统(CentOS6.5+DHCP+TFTP+PXE)

一.前言 安装系统常用的方式就是,光驱安装,U盘安装,但是这种手动安装方法效率都很低,而且出错概率大.现在网卡速率也都基本1000M,所以网络安装就显得更简单,把管理员从重复.繁琐的安装操作中解放出来.当然,这只是一个局域网内的实验配置,生产环境会有更专业的解决方案,但是这个原理都是一样的. 二.原理 本次实验用到的协议和技术有:    DHCP: Dynamic Host Configuration Protocol 动态主机配置协议    TFTP: Trivial File Transfe