Linux自学笔记——dhcp,tftp,pxe

简介:

DHCP:Dynamic Host Configuration Protocol

       IP/Nermask

       Gateway

       DNS Server

bootp:boot protocol --> dhcp

1.      Client:dhcp discover:发现

2.      Server:dhcp offer:(IP/netmask,gw)

3.      Client:dhcp request

4.      Server:dhcp ack

续租:

  Client:dhcp request

  Server:dhcp ack

 

  Server:dhcp nak

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

dhcp

  /usr/sbin/dhcpd

         /etc/dhcp/dhcpd.conf --> /etc/rc.d/init.d/dhcpd

         /etc/dhcp/dhcpd6.conf --> /etc/tc.d/init.d/dhcpd6

  /usr/sbin/dhcrelay

         /etc/rc.d/init.d/dhcrelay

  67/udp

  dhclient:68/udp

dhcpd.conf:

  subnet NETWORK netmask MASK{   :定义子网,用于指明地址池;

         range START_IP END_IP     :指明起始地址

  }

  host  passacaglia{

         hardware ethernet 0:0:c0:5d:bd:95;

         filename “ ”:指明引导文件名称;

         next-server:提供引导文件的服务器ip地址;(为tftpserver,一般使用pxe时会用到此指令)

         fixed-address IP:获得主机的固定ip地址

  }

查看地址分配记录:

  ~]# cat /var/lib/dhcpd/dhcpd.leases

配置选项:

    image.png                                 

  option domain-name “example.org”:定义搜索域;

  option domain-name-servers  ns1.example.org, ns2.example.org;:指明配置给客户端的0dns地址;

  default-lease-time  600:默认租期;

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

  option routers GW1,GW2,…:配置给客户端的默认网关。

  option  broadcast-address BROADCAST_ADDRESS;:配置给客户端的广播地址;

 

演示:dhcp服务器的配置

1.      实验环境准备;

两台虚拟机,都是centos6系统,一台作为dhcp服务器,一台作为客户端;

为了防止dhcp服务器对局域网的干扰。我们这里网络连接模式选择vmnet2通信;

2.      配置dhcp服务器;

    image.png

Note:dhcp服务器的ip配置的静态ip地址,为192.168.19.134

3.      客户端设置为dhcp,用dhclient –d命令让其工作在前台;

    image.png

测试:客户端获取到了ip地址,并在分配的地址范围之内;

    image.png

 

tftp server

       tftp也是文件服务器的一种,不过一般在使用pxe装机环境下,使用的较多。

演示:

1.      安装tftp,编辑配置文件,将disable的值改为no;

  image.png  

其中/var/lib/tftpboot为tftp的工作目录

2.      启动超级守护进程;

3.      测试;

    image.png

 

PXE

       PXE:preboot execute environment,我们在大批量的安装linux系统时,通过光驱一个一个安装不仅麻烦,而且效率低下。此时我们便可以通过PXE安装。

1.      Pxe安装流程;

1)      客户机启动选择pxe网卡启动,从本网络中的dhcp服务器获取ip

2)      DHCP服务器发送ip给客户机;

3)      客户机向本机的tftp服务器索取文件

4)      客户机去的bootstrap文件后执行引导文件完成引导,读取配置文件,加载内核和文件系统

5)      进入安装画面,此时通过选择http、ftp、nfs方式进行安装;

2.      实现pxe网络安装必需的四个要素;

1)      客户机的网卡必需为pxe网卡

2)      网络中必需要有dhcp和tftp服务器,这两个服务器可以是同一台主机;

3)      所安装的操作系统必需支持网络安装。

4)      必须要有ftp,http,nfs,至少一个服务器,当然也可以和dhcp和tftp服务器同为一台物理主机。

 

示例1:centos6上pxe的实现

1.      安装dhcp,并复制/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example到/etc/dhcp/dhcpd.conf,编辑配置文件;

    image.png

2.      安装tftp-server,syslinux,tftp,xinetd,并编辑/etc/xinetd.d/tftp文件,将disable的值改为no,开启tftp;

    image.png

3.      确保httpd已安装,并将光盘镜像文件,挂载至网页文件目录下,这里在/var/www/html/目录下创建了centos6目录

    image.png

4.      准备/var/lib/tftpboot/目录下文件(tftp默认目录)

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

cp /var/www/html/centos6/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/

cp /var/www/html/centos6/isolinux/ {boot.cfg,vesamenu.c32,splash.png} /var/lib/tftpboot/

创建/var/lib/tftpboot/pxelinux.cfg目录,并在此目录下编辑default文件;

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

    cp /var/www/html/centos6/isolinux/isolinux.cfg  /var/lib/tftpboot/pxelinux.cfg/default

    image.png

5.      准备kickstart文件,并将其放置在网页文件目录中(这里放在/var/www/html目录下,在上面default文件中指明的ks目录必须跟kickstart真实放置的目录对应),kickstart文件可用system-config-kickstart生成;

   image.png 

6.      启动服务,查看各服务端口是否开启;

   image.png 

7.      测试;

        1)      将虚拟机网络连接设置问vmnet2通信,并且ip地址配置成静态ip;

           image.png 


        2)      新建一台虚拟机,网络为vmnet2通信,开机测试;

            image.png

        Note:要保证dhcp服务器上的selinux和iptables关闭;

        3)      进入菜单选项;

        image.png

        4)      自动化部署安装;

          image.png  

示例2:pxe的实现(centos7)

1.      安装dhcp,并复制/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example到/etc/dhcp/dhcpd.conf,编辑配置文件;

    image.png


2.      启动服务并验证udp的67端口是否开启

    image.png


3.      安装tftp-server,xinetd,启动并测试udp的69号端口;

修改xinetd目录下的tftp配置文件,将disable的值改为no;

    image.png

随后开启超级守护进程xinetd服务;

4.      安装httpd,并将镜像文件挂载至 网页目录;

    image.png

5.      准备/var/lib/tftpboot目录下文件;

        1)      安装syslinux程序包,它会提供pxelinux.0文件,将其复制到目录下;

        image.png

        2)      复制/usr/share/syslinux目录下的chain.c32,mboot.c32,menu.c32,memdisk四个文件,分别为基于链式方式引导文件,内存磁盘引导项,菜单项,内存当磁盘的模拟文件;

          image.png

        3)      复制光盘中images/pxeboot下的文件;

        image.png

        4)      准备kickstart文件;制作kickstart文件可用systemctl-config-kickstart文件,并将此文件复制到/var/www/html目录下;

        image.png

        Note:如果复制的本机中的anaconda-ks.cfg,注意修改权限。否则最后安装时可能会报错;

        5)      在/var/lib/tftpboot目录下创建pxelinux.cfg目录,并创建为menu.c32提供菜单的配置文件(即菜单加载时用到的配置文件信息)

        image.png 

6.      测试;

        1)      虚拟机中将服务器的网络连接自定义为vmnet2。防止dhcp服务器对局域网的干扰。并且更改服务器ip地址为静态ip;

        image.png

        2)      开启dhcp,vsftpd,等服务;

        3)      新建一台虚拟机,网络连接也是vmnet2,测试开机,成功获取到ip地址并开始安装,等待安装完成即可;

        image.png



本文转自 claude_liu 51CTO博客,原文链接:http://blog.51cto.com/claude666/2070080,如需转载请自行联系原作者

相关文章
|
2月前
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
169 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
|
2月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
116 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
4月前
|
Unix Linux 开发工具
linux笔记 diff及patch的制作与使用
这篇文章是关于Linux系统中使用`diff`命令生成补丁文件以及使用`patch`命令应用这些补丁的详细教程和实战案例。
120 2
linux笔记 diff及patch的制作与使用
|
4月前
|
安全 Ubuntu 网络协议
在Linux中,如何配置DHCP服务器?
在Linux中,如何配置DHCP服务器?
|
4月前
|
域名解析 缓存 负载均衡
在Linux中,DNS和DHCP的作用是什么?
在Linux中,DNS和DHCP的作用是什么?
|
4月前
|
Linux
Linux源码阅读笔记13-进程通信组件中
Linux源码阅读笔记13-进程通信组件中
|
4月前
|
Linux 开发者
Linux源码阅读笔记18-插入模型及删除模块操作
Linux源码阅读笔记18-插入模型及删除模块操作
|
4月前
|
数据采集 Linux
Linux源码阅读笔记20-PCI设备驱动详解
Linux源码阅读笔记20-PCI设备驱动详解
|
4月前
|
Linux
Linux源码阅读笔记19-插入删除模块实战
Linux源码阅读笔记19-插入删除模块实战
|
4月前
|
Ubuntu Linux Shell
【linux】PetaLinux 2024.1安装笔记
【linux】PetaLinux 2024.1安装笔记
312 0